From 3342da0c94c9b5cbdcc605ff89b84d62d75b1d76 Mon Sep 17 00:00:00 2001 From: lanxu Date: Wed, 3 Jun 2020 16:51:40 +0300 Subject: [PATCH] Added backup scripts --- backup/Dockerfile | 18 ++++++++++++++++++ backup/backup.env | 9 +++++++++ backup/restic_backup.sh | 5 +++++ backup/run_backup.sh | 11 +++++++++++ 4 files changed, 43 insertions(+) create mode 100644 backup/Dockerfile create mode 100644 backup/backup.env create mode 100644 backup/restic_backup.sh create mode 100755 backup/run_backup.sh diff --git a/backup/Dockerfile b/backup/Dockerfile new file mode 100644 index 0000000..8e0427e --- /dev/null +++ b/backup/Dockerfile @@ -0,0 +1,18 @@ +FROM alpine:3.10 + +# install dependencies +RUN apk add restic +RUN apk add curl + +# install rclone +RUN curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip &&\ + unzip rclone-current-linux-amd64.zip &&\ + cd rclone-*-linux-amd64 &&\ + cp rclone /usr/bin/ &&\ + chown root:root /usr/bin/rclone &&\ + chmod 755 /usr/bin/rclone + +COPY restic_backup.sh /usr/bin/ +RUN chmod +x /usr/bin/restic_backup.sh + +ENTRYPOINT ["restic_backup.sh"] diff --git a/backup/backup.env b/backup/backup.env new file mode 100644 index 0000000..9c5a89d --- /dev/null +++ b/backup/backup.env @@ -0,0 +1,9 @@ +RETENTION_DAYS=7 +RETENTION_WEEKS=4 +RETENTION_MONTHS=6 +RETENTION_YEARS=3 +BACKUP_PATHS=/mnt/backup/ +RESTIC_REPOSITORY=rclone:hubic:TestBackup +RESTIC_PASSWORD=testbackup +RESTIC_PARAMS=--exclude-file /mnt/restic-exclude +RCLONE_CONFIG=/mnt/rclone.conf diff --git a/backup/restic_backup.sh b/backup/restic_backup.sh new file mode 100644 index 0000000..1d73a0b --- /dev/null +++ b/backup/restic_backup.sh @@ -0,0 +1,5 @@ +#!/bin/sh +restic snapshots > /dev/null || restic init || exit 0 +restic backup $RESTIC_PARAMS $BACKUP_PATHS || exit 0 +restic forget --verbose --group-by "paths,tags" --keep-daily $RETENTION_DAYS --keep-weekly $RETENTION_WEEKS --keep-monthly $RETENTION_MONTHS --keep-yearly $RETENTION_YEARS + diff --git a/backup/run_backup.sh b/backup/run_backup.sh new file mode 100755 index 0000000..6123723 --- /dev/null +++ b/backup/run_backup.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +docker build -t backup . --network=host +docker run \ + --env-file=./backup.env \ + -v /tmp/test/:/mnt/backup/ \ + -v /tmp/test/restic-exclude.txt:/mnt/restic-exclude \ + -v /tmp/test/rclone.conf:/mnt/rclone.conf \ + -v /tmp/logs/:/mnt/logs/ \ + --network=host \ + backup