ok... ok... I'll add it to git...
This commit is contained in:
Executable
+74
@@ -0,0 +1,74 @@
|
||||
#!/bin/bash
|
||||
# Backup Docker Configurations Script
|
||||
# Creates timestamped backup of all Docker configs
|
||||
|
||||
set -e
|
||||
|
||||
BACKUP_DIR="/mnt/media/backups/tower-of-joy-configs"
|
||||
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
||||
BACKUP_PATH="${BACKUP_DIR}/backup_${TIMESTAMP}"
|
||||
SOURCE_DIR="/home/jpmschweitzer/docker-data"
|
||||
|
||||
echo "=== Docker Configs Backup ==="
|
||||
echo "Timestamp: $(date)"
|
||||
echo ""
|
||||
|
||||
# Check if source exists
|
||||
if [ ! -d "$SOURCE_DIR" ]; then
|
||||
echo "❌ Source directory not found: $SOURCE_DIR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Create backup directory
|
||||
echo "[1/4] Creating backup directory..."
|
||||
mkdir -p "$BACKUP_PATH"
|
||||
echo "✅ Created: $BACKUP_PATH"
|
||||
echo ""
|
||||
|
||||
# Backup Docker configs
|
||||
echo "[2/4] Backing up Docker configs..."
|
||||
rsync -av --progress "$SOURCE_DIR/" "$BACKUP_PATH/" --exclude='cache' --exclude='*.log'
|
||||
echo "✅ Configs backed up"
|
||||
echo ""
|
||||
|
||||
# Backup stack files
|
||||
echo "[3/4] Backing up stack definitions..."
|
||||
mkdir -p "$BACKUP_PATH/stacks"
|
||||
cp -r /home/jpmschweitzer/Projects/tower-of-joy/stacks/*.yml "$BACKUP_PATH/stacks/" 2>/dev/null || true
|
||||
echo "✅ Stack files backed up"
|
||||
echo ""
|
||||
|
||||
# Create backup manifest
|
||||
echo "[4/4] Creating backup manifest..."
|
||||
cat > "$BACKUP_PATH/MANIFEST.txt" << EOF
|
||||
Backup created: $(date)
|
||||
Hostname: $(hostname)
|
||||
Docker version: $(docker --version)
|
||||
Containers backed up:
|
||||
$(docker ps --format ' - {{.Names}} ({{.Image}})')
|
||||
|
||||
Backup size: $(du -sh "$BACKUP_PATH" | cut -f1)
|
||||
EOF
|
||||
echo "✅ Manifest created"
|
||||
echo ""
|
||||
|
||||
# Cleanup old backups (keep last 30 days)
|
||||
echo "[Cleanup] Removing backups older than 30 days..."
|
||||
find "$BACKUP_DIR" -maxdepth 1 -type d -name "backup_*" -mtime +30 -exec rm -rf {} \; 2>/dev/null || true
|
||||
remaining=$(find "$BACKUP_DIR" -maxdepth 1 -type d -name "backup_*" | wc -l)
|
||||
echo "✅ Kept $remaining recent backups"
|
||||
echo ""
|
||||
|
||||
echo "=== Backup Complete ==="
|
||||
echo "Location: $BACKUP_PATH"
|
||||
echo "Size: $(du -sh "$BACKUP_PATH" | cut -f1)"
|
||||
echo ""
|
||||
|
||||
# Verify backup
|
||||
if [ -d "$BACKUP_PATH" ] && [ -f "$BACKUP_PATH/MANIFEST.txt" ]; then
|
||||
echo "✅ Backup verification passed"
|
||||
exit 0
|
||||
else
|
||||
echo "❌ Backup verification failed"
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user