37 lines
987 B
Bash
37 lines
987 B
Bash
#!/bin/bash
|
|
# Backup script for Synology DS218+
|
|
# Run via Task Scheduler every 6 hours
|
|
|
|
BACKUP_DIR="/volume1/btc_bot/backups"
|
|
DB_NAME="btc_data"
|
|
DB_USER="btc_bot"
|
|
RETENTION_DAYS=30
|
|
DATE=$(date +%Y%m%d_%H%M)
|
|
|
|
echo "Starting backup at $(date)"
|
|
|
|
# Create backup directory if not exists
|
|
mkdir -p $BACKUP_DIR
|
|
|
|
# Create backup
|
|
docker exec btc_timescale pg_dump -U $DB_USER -Fc $DB_NAME > $BACKUP_DIR/btc_data_$DATE.dump
|
|
|
|
# Compress
|
|
if [ -f "$BACKUP_DIR/btc_data_$DATE.dump" ]; then
|
|
gzip $BACKUP_DIR/btc_data_$DATE.dump
|
|
echo "Backup created: btc_data_$DATE.dump.gz"
|
|
|
|
# Calculate size
|
|
SIZE=$(du -h $BACKUP_DIR/btc_data_$DATE.dump.gz | cut -f1)
|
|
echo "Backup size: $SIZE"
|
|
else
|
|
echo "Error: Backup file not created"
|
|
exit 1
|
|
fi
|
|
|
|
# Delete old backups
|
|
DELETED=$(find $BACKUP_DIR -name "*.dump.gz" -mtime +$RETENTION_DAYS | wc -l)
|
|
find $BACKUP_DIR -name "*.dump.gz" -mtime +$RETENTION_DAYS -delete
|
|
|
|
echo "Deleted $DELETED old backup(s)"
|
|
echo "Backup completed at $(date)" |