mirror of
https://github.com/ViViDboarder/docker-restic-cron.git
synced 2024-11-21 12:46:36 +00:00
Merge remote-tracking branch 'duplicity/pre-post-scripts' into pre-post-migration
This commit is contained in:
commit
0e94d30c3e
2
Makefile
2
Makefile
@ -20,10 +20,12 @@ build-all: build-x86 build-arm
|
||||
.PHONY: test-x86
|
||||
test-x86: build-x86
|
||||
cd tests && ./test.sh $(DOCKER_TAG)
|
||||
cd tests && ./test-pre-scripts.sh $(DOCKER_TAG)
|
||||
|
||||
.PHONY: test-arm
|
||||
test-arm: build-arm
|
||||
cd tests && .test.sh $(DOCKER_TAG):raspbian
|
||||
cd tests && ./test-pre-scripts.sh $(DOCKER_TAG):raspbian
|
||||
|
||||
.PHONY: test-all
|
||||
test-all: test-x86 test-arm
|
||||
|
14
backup.sh
14
backup.sh
@ -1,6 +1,13 @@
|
||||
#! /bin/bash
|
||||
set -e
|
||||
|
||||
# Run pre-backup scripts
|
||||
for f in /scripts/backup/before/*; do
|
||||
if [ -f $f -a -x $f ]; then
|
||||
bash $f
|
||||
fi
|
||||
done
|
||||
|
||||
restic \
|
||||
-r $BACKUP_DEST \
|
||||
$OPT_ARGUMENTS \
|
||||
@ -13,3 +20,10 @@ if [ -n "$CLEANUP_COMMAND" ]; then
|
||||
forget \
|
||||
$CLEANUP_COMMAND
|
||||
fi
|
||||
|
||||
# Run post-backup scripts
|
||||
for f in /scripts/backup/after/*; do
|
||||
if [ -f $f -a -x $f ]; then
|
||||
bash $f
|
||||
fi
|
||||
done
|
||||
|
14
restore.sh
14
restore.sh
@ -3,9 +3,23 @@ set -e
|
||||
|
||||
restore_snapshot=$1
|
||||
|
||||
# Run pre-restore scripts
|
||||
for f in /scripts/restore/before/*; do
|
||||
if [ -f $f -a -x $f ]; then
|
||||
bash $f
|
||||
fi
|
||||
done
|
||||
|
||||
restic \
|
||||
-r $BACKUP_DEST \
|
||||
$OPT_ARGUMENTS \
|
||||
restore \
|
||||
$restore_snapshot \
|
||||
-t /
|
||||
|
||||
# Run post-restore scripts
|
||||
for f in /scripts/restore/after/*; do
|
||||
if [ -f $f -a -x $f ]; then
|
||||
bash $f
|
||||
fi
|
||||
done
|
||||
|
71
tests/test-pre-scripts.sh
Executable file
71
tests/test-pre-scripts.sh
Executable file
@ -0,0 +1,71 @@
|
||||
#! /bin/bash
|
||||
set -e
|
||||
|
||||
image=$1
|
||||
|
||||
if [ "$IN_CONTAINER" != "true" ] ; then
|
||||
# Run the test script within the container
|
||||
docker run --rm \
|
||||
-e IN_CONTAINER=true \
|
||||
-e SKIP_ON_START=true \
|
||||
-v "$(pwd)/test-pre-scripts.sh:/test.sh" \
|
||||
-v "$(pwd)/test-pre-scripts:/scripts" \
|
||||
$image \
|
||||
bash -c "/test.sh"
|
||||
else
|
||||
echo "Performing backup tests"
|
||||
|
||||
echo "Verify cron and crontab exist"
|
||||
type cron
|
||||
type crontab
|
||||
|
||||
echo "Install sqlite3"
|
||||
apt-get update
|
||||
apt-get install -y --no-install-recommends sqlite3
|
||||
|
||||
echo "Create test data..."
|
||||
mkdir -p /data
|
||||
touch /data/test_database.db
|
||||
sqlite3 /data/test_database.db < /scripts/create-test-data.sql
|
||||
|
||||
echo "Making backup..."
|
||||
/backup.sh
|
||||
|
||||
echo "Verify intermediary file is gone"
|
||||
test -f /data/test_database.db.bak && exit 1 || echo "Gone"
|
||||
|
||||
echo "Delete test data..."
|
||||
rm -fr /data/*
|
||||
|
||||
echo "Verify deleted..."
|
||||
test -f /data/test_database.db && exit 1 || echo "Gone"
|
||||
|
||||
echo "Restore backup..."
|
||||
/restore.sh
|
||||
|
||||
echo "Verify restored files exist..."
|
||||
test -f /data/test_database.db
|
||||
test -f /data/test_database.db.bak && exit 1 || echo "Gone"
|
||||
sqlite3 /data/test_database.db "select data from test_table where id = 1"
|
||||
|
||||
echo "Delete test data again..."
|
||||
rm -fr /data/*
|
||||
|
||||
echo "Verify deleted..."
|
||||
test -f /data/test_database.db && exit 1 || echo "Gone"
|
||||
|
||||
echo "Simulate a restart with RESTORE_ON_EMPTY_START..."
|
||||
RESTORE_ON_EMPTY_START=true /start.sh
|
||||
|
||||
echo "Verify restore happened..."
|
||||
test -f /data/test_database.db
|
||||
test -f /data/test_database.db.bak && exit 1 || echo "Gone"
|
||||
sqlite3 /data/test_database.db "select data from test_table where id = 1"
|
||||
|
||||
echo "Delete test data..."
|
||||
rm -fr /data/*
|
||||
|
||||
echo "Verify restore with incorrect passphrase fails..."
|
||||
echo "Fail to restore backup..."
|
||||
PASSPHRASE=Incorrect.Mule.Solar.Paperclip /restore.sh && exit 1 || echo "OK"
|
||||
fi
|
6
tests/test-pre-scripts/backup/after/post-backup.sh
Executable file
6
tests/test-pre-scripts/backup/after/post-backup.sh
Executable file
@ -0,0 +1,6 @@
|
||||
set -e
|
||||
|
||||
cd /data
|
||||
|
||||
# Remove backed up copy
|
||||
rm test_database.db.bak
|
6
tests/test-pre-scripts/backup/before/pre-backup.sh
Executable file
6
tests/test-pre-scripts/backup/before/pre-backup.sh
Executable file
@ -0,0 +1,6 @@
|
||||
set -e
|
||||
|
||||
cd /data
|
||||
|
||||
# Dump the SQLite database
|
||||
sqlite3 test_database.db ".backup test_database.db.bak"
|
7
tests/test-pre-scripts/create-test-data.sql
Normal file
7
tests/test-pre-scripts/create-test-data.sql
Normal file
@ -0,0 +1,7 @@
|
||||
CREATE TABLE test_table (
|
||||
id integer PRIMARY KEY,
|
||||
data text NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO test_table (data)
|
||||
VALUES ("Test row");
|
6
tests/test-pre-scripts/restore/after/post-restore.sh
Executable file
6
tests/test-pre-scripts/restore/after/post-restore.sh
Executable file
@ -0,0 +1,6 @@
|
||||
set -e
|
||||
|
||||
cd /data
|
||||
|
||||
# Restore the backedup database
|
||||
mv test_database.db.bak test_database.db
|
3
tests/test-pre-scripts/restore/before/pre-restore.sh
Executable file
3
tests/test-pre-scripts/restore/before/pre-restore.sh
Executable file
@ -0,0 +1,3 @@
|
||||
set -e
|
||||
|
||||
# Don't really need to do anything here
|
@ -43,6 +43,10 @@ else
|
||||
echo "Verify restore..."
|
||||
cat /data/test.txt
|
||||
|
||||
echo "Verify restore..."
|
||||
test -f /data/test.txt
|
||||
cat /data/test.txt
|
||||
|
||||
echo "Verify backup..."
|
||||
/verify.sh
|
||||
|
||||
@ -56,6 +60,7 @@ else
|
||||
RESTORE_ON_EMPTY_START=true /start.sh
|
||||
|
||||
echo "Verify restore happened..."
|
||||
test -f /data/test.txt
|
||||
cat /data/test.txt
|
||||
|
||||
echo "Verify restore with incorrect passphrase fails..."
|
||||
|
Loading…
Reference in New Issue
Block a user