#!/bin/sh BACKUP_DATE=$(date +"%Y-%m-%d") BACKUP_BASENAME=$S3_BUCKET_NAME$BACKUP_DATE.tar SKIP_XZ=${ONLY_TAR:-0} month_day=`date +"%d"` if [ $SKIP_XZ -ne 0 ]; then TAR_PARAM= BACKUP_FILENAME=daily_$BACKUP_BASENAME BACKUP_FILENAME_MONTHLY=monthly_$BACKUP_BASENAME else TAR_PARAM=-J BACKUP_FILENAME=daily_$BACKUP_BASENAME.xz BACKUP_FILENAME_MONTHLY=monthly_$BACKUP_BASENAME.xz fi rm -f ~/$BACKUP_FILENAME.gpg ~/$BACKUP_FILENAME healthchck_fail(){ if [ -n $HEALTHCHECK_URL ]; then curl -X POST --data $1 --retry 3 $HEALTHCHECK_URL/fail --silent --output /dev/null exit 1 fi } healthchck_start(){ if [ -n $HEALTHCHECK_URL ]; then curl -X POST --data $1 --retry 3 $HEALTHCHECK_URL/start --silent --output /dev/null fi } healthchck_ok(){ if [ -n $HEALTHCHECK_URL ]; then curl -X POST --data $1 --retry 3 $HEALTHCHECK_URL --silent --output /dev/null fi } healthchck_start "Starting Backup" cd /backup echo "make archive" tar -c ${TAR_PARAM} ${TAR_EXTRA_PARAM} -f ~/$BACKUP_FILENAME ./* || healthchck_fail "TAR Failed" cd / echo " done" 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 || healthchck_fail "Encryption Failed" rm ~/$BACKUP_FILENAME echo "uploading" AWS_ENDPOINT_OPTION= AWS_STORAGECLASS_OPTION="--storage-class DEEP_ARCHIVE" if [ "$AWS_USE_MINIO" -eq 1 ] ; then aws configure set default.s3.signature_version s3v4 AWS_ENDPOINT_OPTION="--endpoint-url https://${MINIO_ENDPOINT}" AWS_STORAGECLASS_OPTION= fi echo aws ${AWS_ENDPOINT_OPTION} s3 cp ~/$BACKUP_FILENAME.gpg s3://$S3_BUCKET_NAME/$BACKUP_FILENAME.gpg ${AWS_STORAGECLASS_OPTION} || healthchck_fail "Upload Failed" aws ${AWS_ENDPOINT_OPTION} s3 cp --no-progress ~/$BACKUP_FILENAME.gpg s3://$S3_BUCKET_NAME/$BACKUP_FILENAME.gpg ${AWS_STORAGECLASS_OPTION} || healthchck_fail "Upload Failed" rm ~/$BACKUP_FILENAME.gpg echo "done" # On first month day do if [ "$AWS_USE_MINIO" -eq 1 ]; then echo "no monthly" else if [ "$month_day" -eq 1 ] ; then echo "make monthly backup" aws ${AWS_ENDPOINT_OPTIOM} s3 cp s3://$S3_BUCKET_NAME/$BACKUP_FILENAME.gpg s3://$S3_BUCKET_NAME/$BACKUP_FILENAME_MONTHLY.gpg --storage-class DEEP_ARCHIVE || healthchck_fail "failed to create monthly backup" fi fi healthchck_ok "Success"