diff --git a/Dockerfile b/Dockerfile index 5f33729..285d2d6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,6 +4,7 @@ MAINTAINER matthias@bilger.info RUN apk add --update \ py-pip \ gpgme \ + curl \ tar \ sed \ xz \ diff --git a/backup.sh b/backup.sh index d4c1f57..6b67c40 100644 --- a/backup.sh +++ b/backup.sh @@ -16,24 +16,39 @@ else BACKUP_FILENAME_MONTHLY=monthly_$BACKUP_BASENAME.xz fi +healthchck_fail(){ + if [ -n $HEALTHCHECK_URL ]; then + curl --retry 3 $HEALTHCHECK_URL/fail + exit 1 + fi +} + +healthchck_ok(){ + if [ -n $HEALTHCHECK_URL ]; then + curl --retry 3 $HEALTHCHECK_URL + exit 1 + fi +} + cd /backup echo "make archive" -tar -c --checkpoint=.1000 ${TAR_PARAM} -f ~/$BACKUP_FILENAME ./* +tar -c --checkpoint=.1000 ${TAR_PARAM} -f ~/$BACKUP_FILENAME ./* || healthchck_fail cd / RECIPIENT=$(echo "$GPG_RECIPIENT" | sed "s/,/ --recipient /") echo "encrypting" -gpg --trust-model always --enable-progress-filter --output ~/$BACKUP_FILENAME.gpg --encrypt --recipient $RECIPIENT ~/$BACKUP_FILENAME +gpg --trust-model always --enable-progress-filter --output ~/$BACKUP_FILENAME.gpg --encrypt --recipient $RECIPIENT ~/$BACKUP_FILENAME || healthchck_fail rm ~/$BACKUP_FILENAME echo "uploading" -aws s3 cp ~/$BACKUP_FILENAME.gpg s3://$S3_BUCKET_NAME/$BACKUP_FILENAME.gpg --storage-class STANDARD_IA +aws s3 cp ~/$BACKUP_FILENAME.gpg s3://$S3_BUCKET_NAME/$BACKUP_FILENAME.gpg --storage-class STANDARD_IA || healthchck_fail rm ~/$BACKUP_FILENAME.gpg echo "done" # On first month day do if [ "$month_day" -eq 1 ] ; then echo "make monthly backup" - aws s3 s3://$S3_BUCKET_NAME/$BACKUP_FILENAME.gpg s3://$S3_BUCKET_NAME/$BACKUP_FILENAME_MONTHLY.gpg --storage-class DEEP_ARCHIVE + aws s3 cp s3://$S3_BUCKET_NAME/$BACKUP_FILENAME.gpg s3://$S3_BUCKET_NAME/$BACKUP_FILENAME_MONTHLY.gpg --storage-class DEEP_ARCHIVE || (curl --retry 3 https://health.d1v3.de/ping/8183024f-0aa5-4e19-90a2-c1325a5408ae/fail && exit 1) fi +healthchck_ok