feat(fleet): add nbd-swap remote RAM swap and backup-kof17 tool for bazina
This commit is contained in:
Executable
+32
@@ -0,0 +1,32 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# backup-kof17: Incremental rsync backup of boxC:/mnt/kof17 to bazina SSD
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
SRC="/mnt/data/"
|
||||||
|
DEST="/mnt/ssd/kof17_backup/"
|
||||||
|
LOG_FILE="/mnt/ssd/kof17_backup/backup.log"
|
||||||
|
|
||||||
|
if [ ! -d "$SRC" ]; then
|
||||||
|
echo "Error: Source $SRC is not mounted!" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "/mnt/ssd" ]; then
|
||||||
|
echo "Error: /mnt/ssd is not mounted on this host!" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "$DEST"
|
||||||
|
echo "=== Starting kof17 backup: $(date -Iseconds) ===" | tee -a "$LOG_FILE"
|
||||||
|
echo "Source: $SRC"
|
||||||
|
echo "Destination: $DEST"
|
||||||
|
|
||||||
|
rsync -aHAXx \
|
||||||
|
--numeric-ids \
|
||||||
|
--info=progress2 \
|
||||||
|
--delete \
|
||||||
|
--exclude='.Trash*' \
|
||||||
|
--exclude='lost+found' \
|
||||||
|
"$SRC" "$DEST" 2>&1 | tee -a "$LOG_FILE"
|
||||||
|
|
||||||
|
echo "=== Backup completed: $(date -Iseconds) ===" | tee -a "$LOG_FILE"
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# nbd-swap: High-speed RAM swap over network (10.0.0.15 bazina -> 10.0.0.18 t520)
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
SERVER="10.0.0.15"
|
||||||
|
PORT="10809"
|
||||||
|
EXPORT="t520_swap"
|
||||||
|
DEV="/dev/nbd0"
|
||||||
|
|
||||||
|
status() {
|
||||||
|
echo "=== NBD Network Swap Status ==="
|
||||||
|
if swapon --show | grep -q "$DEV"; then
|
||||||
|
echo "Swap active on $DEV:"
|
||||||
|
swapon --show | grep "$DEV"
|
||||||
|
else
|
||||||
|
echo "Swap is NOT active on $DEV."
|
||||||
|
fi
|
||||||
|
if [ -b "$DEV" ] && lsblk "$DEV" | grep -q "$DEV"; then
|
||||||
|
lsblk "$DEV"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
start() {
|
||||||
|
sudo modprobe nbd
|
||||||
|
if swapon --show | grep -q "$DEV"; then
|
||||||
|
echo "Swap already active on $DEV."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
# If device is connected, disconnect first
|
||||||
|
if lsblk "$DEV" 2>/dev/null | grep -q "nbd0"; then
|
||||||
|
sudo nbd-client -d "$DEV" 2>/dev/null || true
|
||||||
|
sleep 1
|
||||||
|
fi
|
||||||
|
echo "Connecting $DEV to $SERVER:$PORT ($EXPORT)..."
|
||||||
|
sudo nbd-client "$SERVER" "$PORT" -N "$EXPORT" "$DEV"
|
||||||
|
echo "Initializing and activating swap on $DEV (priority 100)..."
|
||||||
|
sudo mkswap "$DEV" >/dev/null
|
||||||
|
sudo swapon -p 100 "$DEV"
|
||||||
|
status
|
||||||
|
}
|
||||||
|
|
||||||
|
stop() {
|
||||||
|
echo "Deactivating swap on $DEV..."
|
||||||
|
if swapon --show | grep -q "$DEV"; then
|
||||||
|
sudo swapoff "$DEV"
|
||||||
|
fi
|
||||||
|
if lsblk "$DEV" 2>/dev/null | grep -q "nbd0"; then
|
||||||
|
echo "Disconnecting NBD client..."
|
||||||
|
sudo nbd-client -d "$DEV"
|
||||||
|
fi
|
||||||
|
echo "NBD swap stopped."
|
||||||
|
}
|
||||||
|
|
||||||
|
case "${1:-status}" in
|
||||||
|
start) start ;;
|
||||||
|
stop) stop ;;
|
||||||
|
status) status ;;
|
||||||
|
restart) stop; sleep 1; start ;;
|
||||||
|
*) echo "Usage: $0 {start|stop|restart|status}" ; exit 1 ;;
|
||||||
|
esac
|
||||||
Reference in New Issue
Block a user