diff --git a/backup-manager.sh b/backup-manager.sh index 449868b..bb208bb 100755 --- a/backup-manager.sh +++ b/backup-manager.sh @@ -21,24 +21,30 @@ DATE=$(date +%Y-%m-%d_%H-%M) S_MOUNT="/tmp/share" C_LIST=" -/etc/config/ -/etc/xray/ -/etc/unbound/ -/root/.ssh/ -/opt/xray-config/ -/opt/backup-manager/ +/etc/config +/etc/xray +/etc/unbound +/root/.ssh +/opt/.xray-config +/opt/.backup-manager /etc/nftables.d/10-netmap.nft +/etc/hotplug.d/iface/99-xray-restart +/etc/zabbix_agentd.conf +/etc/dropbear +/etc/banner +/etc/init.d/xray " C_EXCLUDE=" -/opt/backup-manager/local_backups +/opt/.backup-manager/local_backups /etc/xray/ipset /etc/xray/ipnet " H_REPLACE="wpad dnsmasq" -DIR="/opt/backup-manager" +DIR=$(cd "$(dirname "$0")" && pwd) +#DIR="/opt/.backup-manager" L_BACKUP_DIR="$DIR/local_backups" SCR_BACKUP="$DIR/backup-configs.sh" SCR_OPKG="$DIR/backup-opkg.sh" @@ -55,8 +61,7 @@ check_network() { printf "Checking network %s... " "$S_HOST" if ! ping -c 2 "$S_HOST" >/dev/null 2>&1; then echo "FAILED" - echo "[!] Error: Remote host $S_HOST is unreachable." - echo " Check if the NAS is powered on and the IP/Hostname is correct." + echo " [!] Error: Remote host $S_HOST is unreachable." return 1 fi echo "OK" @@ -97,8 +102,8 @@ mount_share() { return 0 else echo "FAILED" - echo "[!] Error: Failed to mount $STORAGE_TYPE ($FULL_ADDR)" - [ -n "$mount_err" ] && echo " System message: $mount_err" + echo " [!] Error: Failed to mount $STORAGE_TYPE ($FULL_ADDR)" + [ -n "$mount_err" ] && echo " System message: $mount_err" return 1 fi } @@ -153,50 +158,33 @@ case "$1" in sync umount "$S_MOUNT" else - echo " Backup remains only in $L_BACKUP_DIR" + echo " Backup remains only in $L_BACKUP_DIR" fi echo "Summary:" - echo " [+] Local: $LOCAL_FILE" + echo " [+] Local backup: $LOCAL_FILE" + echo " [+] Local packages: $LOCAL_LST" if [ "$REMOTE_STATUS" = "OK" ]; then - echo " [+] Remote: ${S_HOST}:${S_PATH}/$(basename "$LOCAL_FILE")" + echo " [+] Remote backup: ${S_HOST}:${S_PATH}/$(basename "$LOCAL_FILE")" + echo " [+] Remote packages: ${S_HOST}:${S_PATH}/$(basename "$LOCAL_LST")" else echo " [!] Remote: Not saved" fi ;; - restore-pkgs) - check_network && mount_share || { echo "Remote unavailable"; exit 1; } - select_file "$S_MOUNT" ".lst" - [ -n "$SELECTED_PATH" ] && $SCR_OPKG restore "$SELECTED_PATH" "$H_REPLACE" - umount "$S_MOUNT" - ;; - - restore-sys-net) - check_network && mount_share || { echo "Remote unavailable"; exit 1; } - select_file "$S_MOUNT" ".tar.gz" - [ -n "$SELECTED_PATH" ] && sysupgrade -r "$SELECTED_PATH" - umount "$S_MOUNT" - ;; - - restore-sys-local) - select_file "$L_BACKUP_DIR" ".tar.gz" - [ -n "$SELECTED_PATH" ] && sysupgrade -r "$SELECTED_PATH" - ;; - restore) - echo "1. Local storage ($L_BACKUP_DIR)" - echo "2. Remote storage ($STORAGE_TYPE)" + echo " [1] Local storage ($L_BACKUP_DIR)" + echo " [2] Remote storage ($STORAGE_TYPE)" printf "Select source: " read s_choice R_DIR="" [ "$s_choice" -eq 1 ] && R_DIR="$L_BACKUP_DIR" [ "$s_choice" -eq 2 ] && { check_network && mount_share && R_DIR="$S_MOUNT"; } if [ -z "$R_DIR" ]; then - echo " [!] Source unavailable or cancelled." + echo " Source unavailable or cancelled." exit 1 fi - echo "1. System configs (.tar.gz)" - echo "2. Package list (.lst)" + echo " [1] System configs (.tar.gz)" + echo " [2] Package list (.lst)" printf "Select type: " read t_choice case "$t_choice" in