[bin] Add utm backup script

This commit is contained in:
2025-12-23 18:30:38 -05:00
parent a092dd07d5
commit 82be9acf91
2 changed files with 50 additions and 0 deletions

BIN
bin/.bin/ec Executable file

Binary file not shown.

50
bin/.bin/utm-backup.sh Executable file
View File

@ -0,0 +1,50 @@
#!/usr/bin/env bash
set -euo pipefail
# ---- CONFIG ----
UTM_DIR="$HOME/Library/Containers/com.utmapp.UTM/Data/Documents"
VM_NAME="Personal Fedora.utm"
REMOTE_HOST="rhea.local"
REMOTE_DIR="/tank/backups/utm"
KEEP=5
DATE="$(date +%Y-%m-%d_%H-%M-%S)"
BASENAME="${VM_NAME%.utm}_$DATE"
ARCHIVE="/tmp/$BASENAME.tar.gz"
# ---- SANITY CHECKS ----
if [[ ! -d "$UTM_DIR/$VM_NAME" ]]; then
echo "ERROR: VM not found: $UTM_DIR/$VM_NAME"
exit 1
fi
# Optional: refuse if VM might be running
if pgrep -f "$VM_NAME" >/dev/null; then
echo "ERROR: VM appears to be running. Shut it down first."
exit 1
fi
# ---- CREATE ARCHIVE ----
echo "Creating compressed archive..."
tar -C "$UTM_DIR" -czf "$ARCHIVE" "$VM_NAME"
# ---- COPY ----
echo "Uploading $ARCHIVE$REMOTE_HOST:$REMOTE_DIR/"
scp "$ARCHIVE" "$REMOTE_HOST:$REMOTE_DIR/"
# ---- REMOTE ROTATION ----
echo "Pruning old backups on remote (keeping last $KEEP)..."
ssh "$REMOTE_HOST" "
ls -dt $REMOTE_DIR/${VM_NAME%.utm}_*.tar.gz 2>/dev/null \
| tail -n +$((KEEP + 1)) \
| xargs -r rm -f
"
# ---- CLEANUP ----
rm -f "$ARCHIVE"
echo "Backup complete."