Something went wrong. Try again.
This string has no description
Something went wrong. Try again.
2.1 kB · 74 lines · Created 10mo ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374#!/bin/bashset -e
# ConfigurationBACKUP_TIMESTAMP=$(date +%Y%m%d-%H%M%S)BACKUP_DIR="/tmp/pds-backup-$BACKUP_TIMESTAMP"BACKUP_TARBALL="/tmp/pds-backup-$BACKUP_TIMESTAMP.tar.gz"R2_BUCKET="mbdpds-backup"R2_ENDPOINT="https://fe6870e7e305737ba53a51bed8a8e775.r2.cloudflarestorage.com"PDS_DIR="/pds"
echo "🔄 Starting PDS backup..."
# Create backup directorymkdir -p "$BACKUP_DIR"
# Backup SQLite databasesecho "📦 Backing up databases..."cp "$PDS_DIR/account.sqlite" "$BACKUP_DIR/"cp -r "$PDS_DIR/actors" "$BACKUP_DIR/"
# Backup blocks (blob storage)echo "📦 Backing up blocks..."tar -czf "$BACKUP_DIR/blocks.tar.gz" -C "$PDS_DIR" blocks
# Backup configurationecho "📦 Backing up config..."cp "$PDS_DIR/pds.env" "$BACKUP_DIR/"cp "$PDS_DIR/compose.yaml" "$BACKUP_DIR/"
# Backup Caddy configecho "📦 Backing up Caddy..."cp -r "$PDS_DIR/caddy/etc" "$BACKUP_DIR/caddy-config"
# Create tarballecho "📦 Creating archive..."cd /tmptar -czf "$BACKUP_TARBALL" "$(basename $BACKUP_DIR)"
# Upload to R2echo "☁️ Uploading to R2..."if /snap/bin/aws s3 cp "$BACKUP_TARBALL" "s3://$R2_BUCKET/" \ --endpoint-url="$R2_ENDPOINT" 2>&1; then echo "✅ Upload successful" # Delete immediately after successful upload rm -f "$BACKUP_TARBALL"else echo "❌ Upload failed" # Still clean up on failure rm -f "$BACKUP_TARBALL" exit 1fi
# Cleanup backup directoryecho "🧹 Cleaning up..."rm -rf "$BACKUP_DIR"
# Delete backups older than 7 days from R2echo "🧹 Removing old backups (>7 days)..."/snap/bin/aws s3 ls "s3://$R2_BUCKET/" --endpoint-url="$R2_ENDPOINT" | \ while read -r line; do createDate=$(echo $line | awk '{print $1" "$2}') createDate=$(date -d "$createDate" +%s) olderThan=$(date -d "7 days ago" +%s) if [[ $createDate -lt $olderThan ]]; then fileName=$(echo $line | awk '{print $4}') if [[ $fileName != "" ]]; then /snap/bin/aws s3 rm "s3://$R2_BUCKET/$fileName" --endpoint-url="$R2_ENDPOINT" echo "Deleted: $fileName" fi fi done
echo "✅ Backup complete!"