thing
74 lines 2.1 kB view raw
1#!/bin/bash 2set -e 3 4# Configuration 5BACKUP_TIMESTAMP=$(date +%Y%m%d-%H%M%S) 6BACKUP_DIR="/tmp/pds-backup-$BACKUP_TIMESTAMP" 7BACKUP_TARBALL="/tmp/pds-backup-$BACKUP_TIMESTAMP.tar.gz" 8R2_BUCKET="mbdpds-backup" 9R2_ENDPOINT="https://fe6870e7e305737ba53a51bed8a8e775.r2.cloudflarestorage.com" 10PDS_DIR="/pds" 11 12echo "🔄 Starting PDS backup..." 13 14# Create backup directory 15mkdir -p "$BACKUP_DIR" 16 17# Backup SQLite databases 18echo "📦 Backing up databases..." 19cp "$PDS_DIR/account.sqlite" "$BACKUP_DIR/" 20cp -r "$PDS_DIR/actors" "$BACKUP_DIR/" 21 22# Backup blocks (blob storage) 23echo "📦 Backing up blocks..." 24tar -czf "$BACKUP_DIR/blocks.tar.gz" -C "$PDS_DIR" blocks 25 26# Backup configuration 27echo "📦 Backing up config..." 28cp "$PDS_DIR/pds.env" "$BACKUP_DIR/" 29cp "$PDS_DIR/compose.yaml" "$BACKUP_DIR/" 30 31# Backup Caddy config 32echo "📦 Backing up Caddy..." 33cp -r "$PDS_DIR/caddy/etc" "$BACKUP_DIR/caddy-config" 34 35# Create tarball 36echo "📦 Creating archive..." 37cd /tmp 38tar -czf "$BACKUP_TARBALL" "$(basename $BACKUP_DIR)" 39 40# Upload to R2 41echo "☁️ Uploading to R2..." 42if /snap/bin/aws s3 cp "$BACKUP_TARBALL" "s3://$R2_BUCKET/" \ 43 --endpoint-url="$R2_ENDPOINT" 2>&1; then 44 echo "✅ Upload successful" 45 # Delete immediately after successful upload 46 rm -f "$BACKUP_TARBALL" 47else 48 echo "❌ Upload failed" 49 # Still clean up on failure 50 rm -f "$BACKUP_TARBALL" 51 exit 1 52fi 53 54# Cleanup backup directory 55echo "🧹 Cleaning up..." 56rm -rf "$BACKUP_DIR" 57 58# Delete backups older than 7 days from R2 59echo "🧹 Removing old backups (>7 days)..." 60/snap/bin/aws s3 ls "s3://$R2_BUCKET/" --endpoint-url="$R2_ENDPOINT" | \ 61 while read -r line; do 62 createDate=$(echo $line | awk '{print $1" "$2}') 63 createDate=$(date -d "$createDate" +%s) 64 olderThan=$(date -d "7 days ago" +%s) 65 if [[ $createDate -lt $olderThan ]]; then 66 fileName=$(echo $line | awk '{print $4}') 67 if [[ $fileName != "" ]]; then 68 /snap/bin/aws s3 rm "s3://$R2_BUCKET/$fileName" --endpoint-url="$R2_ENDPOINT" 69 echo "Deleted: $fileName" 70 fi 71 fi 72 done 73 74echo "✅ Backup complete!"