Files
proxmox/scripts/maintenance/migrate-vmid-5000-to-thin2.sh
defiQUG b3a8fe4496
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
chore: sync all changes to Gitea
- Config, docs, scripts, and backup manifests
- Submodule refs unchanged (m = modified content in submodules)

Made-with: Cursor
2026-03-02 11:37:34 -08:00

53 lines
1.6 KiB
Bash

#!/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'"