summaryrefslogtreecommitdiff
path: root/kodakmomentproxmox.sh
blob: 4acbbb232b55898bc8c9bbe4503e3ca2f1dab284 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/env bash
set -euo pipefail

### CONFIG ###
PROXMOX_HOST="root@38.102.127.162"
VMIDS=(101 103 104 105 106 108)
DEST_HOST="root@thevault.bounceme.net"
DEST_PATH="/mnt/backup3/vzdump"
TIMESTAMP=$(date +%F_%H-%M)
RETENTION_DAYS=7

echo "๐Ÿ“ฆ Starting selective VM backup via KodakMoment..."

# Ensure base destination directory exists
echo "๐Ÿ“ Ensuring remote backup directory exists..."
ssh "$DEST_HOST" "mkdir -p '$DEST_PATH'"

for VMID in "${VMIDS[@]}"; do
  if [[ "$VMID" == "101" ]]; then
    echo "๐ŸŽถ VM 101 is a music VM โ€” using rsync instead of vzdump..."
    ssh doc@portal.genesishostingtechnologies.com \
      "rsync -avh /var/lib/docker/volumes/azuracast_station_data/_data/ $DEST_HOST:/mnt/backup3/azuracast/"
    echo "โœ… Music files from VM 101 synced to thevault."
  else
    REMOTE_FILE="$DEST_PATH/vzdump-qemu-${VMID}-$TIMESTAMP.vma.zst"
    echo "๐Ÿง  Streaming snapshot backup of VM $VMID to $REMOTE_FILE..."

    ssh "$PROXMOX_HOST" \
      "vzdump $VMID --mode snapshot --compress zstd --stdout --storage local-lvm" | \
      ssh "$DEST_HOST" \
      "cat > '$REMOTE_FILE'"

    echo "โœ… VM $VMID streamed and saved to thevault."
  fi
done

echo "๐Ÿงน Pruning old vzdump backups on thevault..."
ssh "$DEST_HOST" "find '$DEST_PATH' -type f -mtime +$RETENTION_DAYS -name 'vzdump-qemu-*.zst' -delete"

echo "โœ… KodakMoment complete โ€” selective backups successful."