From 56a40e91fd330383e552a955346ea11e0dcd5a3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kry=C5=A1tof=20Pe=C5=A1ek=20=28Kof=29?= Date: Tue, 3 Nov 2026 20:06:10 +0100 Subject: [PATCH] feat(fleet): add nbd-swap remote RAM swap and backup-kof17 tool for bazina --- backup-kof17 | 32 ++++++++++++++++++++++++++++ nbd-swap | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100755 backup-kof17 create mode 100755 nbd-swap diff --git a/backup-kof17 b/backup-kof17 new file mode 100755 index 0000000..575d9da --- /dev/null +++ b/backup-kof17 @@ -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" diff --git a/nbd-swap b/nbd-swap new file mode 100755 index 0000000..0ea143f --- /dev/null +++ b/nbd-swap @@ -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