Files
proxmox/scripts/backup-container-configs.sh
defiQUG cb47cce074 Complete markdown files cleanup and organization
- Organized 252 files across project
- Root directory: 187 → 2 files (98.9% reduction)
- Moved configuration guides to docs/04-configuration/
- Moved troubleshooting guides to docs/09-troubleshooting/
- Moved quick start guides to docs/01-getting-started/
- Moved reports to reports/ directory
- Archived temporary files
- Generated comprehensive reports and documentation
- Created maintenance scripts and guides

All files organized according to established standards.
2026-01-06 01:46:25 -08:00

92 lines
2.9 KiB
Bash
Executable File

#!/bin/bash
# Backup current container configurations before IP changes
# Creates rollback script
set -euo pipefail
BACKUP_DIR="/home/intlc/projects/proxmox/backups/ip_conversion_$(date +%Y%m%d_%H%M%S)"
ROLLBACK_SCRIPT="$BACKUP_DIR/rollback-ip-changes.sh"
mkdir -p "$BACKUP_DIR"
echo "=== Backing Up Container Configurations ==="
echo "Backup directory: $BACKUP_DIR"
echo ""
# Define conversions directly (from IP_ASSIGNMENT_PLAN.md)
declare -a CONVERSIONS=(
"192.168.11.10:3501:192.168.11.14:192.168.11.28:ccip-monitor-1:ml110"
"192.168.11.10:3500:192.168.11.15:192.168.11.29:oracle-publisher-1:ml110"
"192.168.11.12:103:192.168.11.20:192.168.11.30:omada:r630-02"
"192.168.11.12:104:192.168.11.18:192.168.11.31:gitea:r630-02"
"192.168.11.12:100:192.168.11.4:192.168.11.32:proxmox-mail-gateway:r630-02"
"192.168.11.12:101:192.168.11.6:192.168.11.33:proxmox-datacenter-manager:r630-02"
"192.168.11.12:102:192.168.11.9:192.168.11.34:cloudflared:r630-02"
"192.168.11.12:6200:192.168.11.7:192.168.11.35:firefly-1:r630-02"
"192.168.11.12:7811:N/A:192.168.11.36:mim-api-1:r630-02"
)
# Create rollback script header
cat > "$ROLLBACK_SCRIPT" << 'EOF'
#!/bin/bash
# Rollback script for IP changes
# Generated automatically - DO NOT EDIT MANUALLY
set -euo pipefail
echo "=== Rolling Back IP Changes ==="
echo ""
EOF
chmod +x "$ROLLBACK_SCRIPT"
# Backup each container
for conversion in "${CONVERSIONS[@]}"; do
IFS=':' read -r host_ip vmid old_ip new_ip name hostname <<< "$conversion"
echo "Backing up VMID $vmid ($name) on $hostname..."
# Backup container config
backup_file="$BACKUP_DIR/${hostname}_${vmid}_config.txt"
ssh -o ConnectTimeout=10 root@"$host_ip" "pct config $vmid" > "$backup_file" 2>/dev/null || echo "Warning: Could not backup $vmid"
# Add to rollback script (only if old_ip is not N/A)
if [ "$old_ip" != "N/A" ] && [ -n "$old_ip" ]; then
cat >> "$ROLLBACK_SCRIPT" << EOF
# Rollback VMID $vmid ($name) on $hostname
echo "Rolling back VMID $vmid to $old_ip..."
ssh -o ConnectTimeout=10 root@$host_ip "pct stop $vmid" 2>/dev/null || true
sleep 2
ssh -o ConnectTimeout=10 root@$host_ip "pct set $vmid --net0 bridge=vmbr0,name=eth0,ip=$old_ip/24,gw=192.168.11.1,type=veth" || echo "Warning: Failed to rollback $vmid"
ssh -o ConnectTimeout=10 root@$host_ip "pct start $vmid" 2>/dev/null || true
echo ""
EOF
fi
done
# Create summary
cat > "$BACKUP_DIR/backup_summary.txt" << EOF
Backup Summary
Generated: $(date)
Total containers to convert: ${#CONVERSIONS[@]}
Conversions:
$(printf '%s\n' "${CONVERSIONS[@]}")
Backup files:
$(ls -1 "$BACKUP_DIR"/*_config.txt 2>/dev/null | wc -l) config files backed up
Rollback script: $ROLLBACK_SCRIPT
EOF
echo ""
echo "=== Backup Complete ==="
echo "Backed up ${#CONVERSIONS[@]} container configurations"
echo "Backup directory: $BACKUP_DIR"
echo "Rollback script: $ROLLBACK_SCRIPT"
echo ""
echo "To rollback changes, run: $ROLLBACK_SCRIPT"