Files
selfhost-cloud-compose-stack/config/postgres/rotate-backups.sh
2025-11-25 12:27:53 +03:30

32 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
set -e
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
# Backup Gitea
pg_dump -h db -U "$POSTGRES_ADMIN_USER" "$GITEA_DB" | gzip > /backups/backup_${TIMESTAMP}_gitea.dump.gz
# Backup Odoo
pg_dump -h db -U "$POSTGRES_ADMIN_USER" "$ODOO_DB" | gzip > /backups/backup_${TIMESTAMP}_odoo.dump.gz
# Send backups to nextcloud. Also could use rclone.
# Upload Gitea backup
curl -T /backups/backup_${TIMESTAMP}_gitea.dump.gz -u "$NEXTCLOUD_USER:$NEXTCLOUD_PASS" "$NEXTCLOUD_URL/remote.php/dav/files/$NEXTCLOUD_USER/gitea/backup_${TIMESTAMP}_gitea.dump.gz"
# Upload Odoo backup
curl -T /backups/backup_${TIMESTAMP}_odoo.dump.gz -u "$NEXTCLOUD_USER:$NEXTCLOUD_PASS" "$NEXTCLOUD_URL/remote.php/dav/files/$NEXTCLOUD_USER/odoo/backup_${TIMESTAMP}_odoo.dump.gz"
# Cleanup Gitea backups
ls -tp /backups/*_gitea.dump.gz | grep -v '/$' | tail -n +${BACKUP_RETAIN_COUNT:-10} | while read file; do
echo "$(date) Deleted Gitea backup: $file" >> /backups/cleanup.log
rm "$file"
done
# Cleanup Odoo backups
ls -tp /backups/*_odoo.dump.gz | grep -v '/$' | tail -n +${BACKUP_RETAIN_COUNT:-10} | while read file; do
echo "$(date) Deleted Odoo backup: $file" >> /backups/cleanup.log
rm "$file"
done
sleep 86400