Files

35 lines
960 B
Django/Jinja

#!/bin/bash
set -euo pipefail
DATE=$(date +%Y-%m-%d)
MONTH=$(date +%Y-%m)
DAY_OF_MONTH=$(date +%d)
echo "[$(date)] Starting backup"
{% for item in backup_dirs %}
echo "[$(date)] Backing up {{ item.src }}"
# Daily backup — kept for 30 days
rclone sync {{ item.src }} spaces://{{ backup_bucket }}/{{ item.dest }}/daily/${DATE} \
--s3-acl private
# Monthly backup on the 1st — kept for 12 months
if [ "${DAY_OF_MONTH}" = "01" ]; then
rclone sync {{ item.src }} spaces://{{ backup_bucket }}/{{ item.dest }}/monthly/${MONTH} \
--s3-acl private
echo "[$(date)] Monthly backup complete for {{ item.src }}"
fi
# Prune daily backups older than 30 days
rclone delete spaces://{{ backup_bucket }}/{{ item.dest }}/daily \
--min-age 30d --s3-acl private
# Prune monthly backups older than 12 months
rclone delete spaces://{{ backup_bucket }}/{{ item.dest }}/monthly \
--min-age 365d --s3-acl private
{% endfor %}
echo "[$(date)] Backup complete"