#!/usr/bin/env bash # Migrate VMID 5000 (Blockscout) from thin5 to thin2 on r630-02. No prune steps. # Usage: bash scripts/maintenance/migrate-vmid-5000-to-thin2.sh # Requires: SSH to r630-02. Run from project root (LAN). set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" [[ -f "${PROJECT_ROOT}/config/ip-addresses.conf" ]] && source "${PROJECT_ROOT}/config/ip-addresses.conf" 2>/dev/null || true R630_02="${PROXMOX_HOST_R630_02:-192.168.11.12}" TARGET="thin2" VMID=5000 SSH_OPTS="-o ConnectTimeout=10 -o StrictHostKeyChecking=no" run() { ssh $SSH_OPTS "root@$R630_02" "$@"; } echo "=== Migrate VMID $VMID from thin5 to $TARGET on r630-02 ===" echo "" echo "1. Stopping CT $VMID..." run "pct stop $VMID" 2>/dev/null || true sleep 5 echo "2. Backup (vzdump)..." run "vzdump $VMID --storage local --compress gzip --mode stop --remove 0 2>&1" || true BACKUP_FILE=$(run "ls -t /var/lib/vz/dump/vzdump-lxc-$VMID-*.tar.gz 2>/dev/null | head -1" || true) if [[ -z "$BACKUP_FILE" ]]; then echo "ERROR: Backup file not found. Starting CT back." run "pct start $VMID" 2>/dev/null || true exit 1 fi echo " Backup: $BACKUP_FILE" echo "3. Destroy CT..." run "pct destroy $VMID --force 2>/dev/null" || true sleep 3 echo "4. Restore to $TARGET..." run "pct restore $VMID $BACKUP_FILE --storage $TARGET 2>&1" || { echo "ERROR: Restore failed." exit 1 } echo "5. Remove backup..." run "rm -f $BACKUP_FILE" 2>/dev/null || true echo "6. Start CT..." run "pct start $VMID" echo "" echo "Done. VMID $VMID is now on $TARGET. Verify: ssh root@$R630_02 'pct config 5000 | grep rootfs'"