From 2cc31cc86c89c5c496180ed616e7862c8f8b357a Mon Sep 17 00:00:00 2001 From: pyrschtjag Date: Sun, 25 Jan 2026 12:46:20 +0000 Subject: [PATCH] update_0.2 --- backup-manager.sh | 68 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/backup-manager.sh b/backup-manager.sh index 934aca0..cf953ae 100755 --- a/backup-manager.sh +++ b/backup-manager.sh @@ -21,6 +21,43 @@ DIR="/opt/backup-manager" SCR_BACKUP="$DIR/backup-configs.sh" SCR_OPKG="$DIR/backup-opkg.sh" +check_dependencies() { + echo "--- Checking NFS dependencies ---" + local missing="" + local pkgs="kmod-fs-nfs kmod-fs-nfs-v3 kmod-fs-nfs-v4 nfs-utils" + + for pkg in $pkgs; do + if ! opkg list-installed | grep -q "^$pkg "; then + missing="$missing $pkg" + fi + done + + if [ -n "$missing" ]; then + echo " [!] Missing packages:$missing" + printf "Would you like to install them now? (y/n): " + read ans + if [ "$ans" = "y" ] || [ "$ans" = "Y" ]; then + echo "Updating package lists..." + opkg update >/dev/null 2>&1 + for m in $missing; do + printf " [+] Installing $m... " + if opkg install "$m" >/dev/null 2>&1; then + echo "OK" + else + echo "FAILED" + return 1 + fi + done + /sbin/depmod >/dev/null 2>&1 + else + echo "Error: Cannot proceed without NFS dependencies." + return 1 + fi + fi + echo " [+] All dependencies are satisfied." + return 0 +} + mount_share() { mkdir -p "$S_MOUNT" mount -t nfs "$S_ADDR" "$S_MOUNT" -o nolock,tcp >/dev/null 2>&1 @@ -31,6 +68,31 @@ mount_share() { return 0 } +check_nfs_write() { + echo "--- Testing NFS Write/Read access ---" + mount_share || return 1 + + local test_file="$S_MOUNT/.nfs_test_$(date +%s)" + + if ! touch "$test_file" >/dev/null 2>&1; then + echo " Error: Cannot write to NFS share (Read-only?)" + umount "$S_MOUNT" + return 1 + fi + + if ! cat "$test_file" >/dev/null 2>&1; then + echo " Error: Cannot read from NFS share" + rm -f "$test_file" + umount "$S_MOUNT" + return 1 + fi + + rm -f "$test_file" + echo " [+] NFS Write/Read test passed." + umount "$S_MOUNT" + return 0 +} + clean_old_backups() { mount_share || return 1 echo "--- Cleaning up backups older than 30 days ---" @@ -43,6 +105,9 @@ clean_old_backups() { select_remote_file() { local ext="$1" + + check_dependencies || exit 1 + check_nfs_write || exit 1 mount_share || return 1 echo "--- Select $ext file from NFS ---" >&2 @@ -82,6 +147,9 @@ select_remote_file() { case "$1" in backup) echo "--- Remote Backup Starting ---" + + check_dependencies || exit 1 + check_nfs_write || exit 1 mount_share || exit 1 REMOTE_BACKUP="$S_MOUNT/backup_${HNAME}_${DATE}.tar.gz" -- 2.47.3