Merge pull request 'update_0.2' (#2) from update_0.2 into main
Reviewed-on: https://gitea.oyacoi.ru/pyrschtjag/backup-manager/pulls/2
This commit was merged in pull request #2.
This commit is contained in:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user