Several restore checks added

This commit is contained in:
Fr4nz D13trich 2026-01-18 00:15:42 +01:00
parent 6c601ad66b
commit 4932d84c67

View file

@ -5,6 +5,7 @@ set -e
## SOME COLOR
CYN="\e[0;36m"
MGT="\e[0;35m"
YEL="\e[0;33m"
RED="\e[0;31m"
GRN="\e[0;32m"
@ -74,13 +75,12 @@ shell_query() {
if [ "$(echo $SHELL | grep "$SHELL_OPTION")" ] ; then
ACTIVE_SHELL=$SHELL_OPTION
fi
}
shell_check() {
SHELLS=("bash" "fish" "zsh")
for SHELL_OPTION in "${SHELLS[@]}" ; do
for SHELL_OPTION in ${SHELLS[@]} ; do
shell_query "$SHELL_OPTION"
done
}
@ -354,7 +354,7 @@ call_backup() {
if [[ "$OVERWRITE_BACKUP" == "" || "$OVERWRITE_BACKUP" == "n" || "$OVERWRITE_BACKUP" == "N" ]] ; then
echo -e "\n ${YEL}Skipping backup process...${CRS}\n"
break
exit_clean
elif [[ "$OVERWRITE_BACKUP" == "y" || "$OVERWRITE_BACKUP" == "Y" ]] ; then
echo -e "\n ${YEL}Overwriting backup...${CRS}"
@ -380,18 +380,30 @@ backup_logger() {
if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then
echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log
echo " # Alias : TRUE" >> $TMP/backup/conf_log
elif ! [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then
echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log
echo " # Alias : FALSE" >> $TMP/backup/conf_log
fi
elif [ "$ACTIVE_SHELL" == "bash" ] ; then
if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then
echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log
echo " # Alias : TRUE" >> $TMP/backup/conf_log
elif ! [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then
echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log
echo " # Alias : FALSE" >> $TMP/backup/conf_log
fi
elif [ "$ACTIVE_SHELL" == "fish" ] ; then
if [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then
echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log
echo " # Alias : TRUE" >> $TMP/backup/conf_log
elif ! [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then
echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log
echo " # Alias : FALSE" >> $TMP/backup/conf_log
fi
else
@ -417,10 +429,10 @@ backup_logger() {
echo >> $TMP/backup/conf_log
echo "### $SCRIPT_FILE_NAME VARIABLES ###" >> $TMP/backup/conf_log
echo >> $TMP/backup/conf_log
echo "INSTALL_PATH=$INSTALL_PATH" >> $TMP/backup/conf_log
echo "SCRIPT_PATH=$SCRIPT_PATH" >> $TMP/backup/conf_log
echo "LAUNCHER_PATH=$LAUNCHER_PATH" >> $TMP/backup/conf_log
echo "APP_CONFIG_PATH=$APP_CONFIG_PATH" >> $TMP/backup/conf_log
echo "INSTALL_PATH = $INSTALL_PATH" >> $TMP/backup/conf_log
echo "SCRIPT_PATH = $SCRIPT_PATH" >> $TMP/backup/conf_log
echo "LAUNCHER_PATH = $LAUNCHER_PATH" >> $TMP/backup/conf_log
echo "APP_CONFIG_PATH = $APP_CONFIG_PATH" >> $TMP/backup/conf_log
echo >> $TMP/backup/conf_log
}
@ -448,7 +460,7 @@ script_backup() {
pack_backup
else
echo -e " ${YEL}Nothing to back up...${CRS}"
echo -e "\n ${YEL}Nothing to back up...${CRS}\n"
fi
}
@ -460,7 +472,7 @@ app_backup() {
pack_backup
else
echo -e " ${YEL}Nothing to back up...${CRS}"
echo -e "\n ${YEL}Nothing to back up...${CRS}\n"
fi
}
@ -472,7 +484,7 @@ config_backup() {
pack_backup
else
echo -e " ${YEL}Nothing to back up...${CRS}"
echo -e "\n ${YEL}Nothing to back up...${CRS}\n"
fi
}
@ -484,7 +496,7 @@ full_backup() {
pack_backup
else
echo -e " ${YEL}Nothing to back up...${CRS}"
echo -e "\n ${YEL}Nothing to back up...${CRS}\n"
fi
}
@ -611,8 +623,6 @@ select_backup() {
BACKUP_COMPRESSION=$(file $RESTORE_SOURCE | awk '{print $2}')
decompress_backup
configure_restore
restore_backup
}
decompress_backup() {
@ -630,64 +640,149 @@ decompress_backup() {
tar -xzf $APP_NAME.*.backup_*.tar.gz
rm $APP_NAME.*.backup_*.tar.gz
elif [ "$BACKUP_COMPRESSION" == "zip" ] ; then
unzip $APP_NAME.*.backup_*.tar.zip
elif [ "$BACKUP_COMPRESSION" == "Zip" ] ; then
unzip $APP_NAME.*.backup_*.tar.zip > /dev/null 2>&1
tar -xf $APP_NAME.*.backup_*.tar
rm $APP_NAME.*.backup_*.tar.zip $APP_NAME.*.backup_*.tar.zip
rm $APP_NAME.*.backup_*.tar.zip $APP_NAME.*.backup_*.tar
else
echo -e " ${YEL}TBA...${CRS}\n" #######################################################################
fi
configure_restore
}
configure_restore() {
echo -e " - ${CRS}Analysing ${CYN}$BACKUP_TYPE${CRS} backup content...${CRS}\n"
RESTORABLE=("$APP_NAME.$FILE_EXTENSION" "$SCRIPT_FILE_NAME" "$AUTO_SCRIPT_FILE_NAME" "$APP_NAME.desktop" "$APP_CONFIG_FOLDER")
RESTORABLE=("$APP_NAME.$FILE_EXTENSION" "$SCRIPT_FILE_NAME" "$APP_NAME.desktop" "$APP_CONFIG_FOLDER")
for RESTORE_ITEM in ${RESTORABLE[@]} ; do
if [ -d "$RESTORE_ITEM" ] ; then
if [ -d "$APP_CONFIG_PATH" ] ; then
echo " - Folder : $RESTORE_ITEM | already present" >> $TMP/restore_conf
echo $RESTORE_ITEM >> $TMP/restore_check
echo "APP_CONFIG_PATH=\"$APP_CONFIG_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_check
else
echo " - Folder : $RESTORE_ITEM | not present" >> $TMP/restore_conf
echo "APP_CONFIG_PATH=\"$APP_CONFIG_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_check
echo "APP_CONFIG_PATH=\"$APP_CONFIG_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_diff
fi
elif [ -f "$RESTORE_ITEM" ] ; then
if [[ -f "$INSTALL_PATH/$RESTORE_ITEM" || -f "$SCRIPT_PATH/$RESTORE_ITEM" || -f "$LAUNCHER_PATH/$RESTORE_ITEM" ]] ; then
echo " - File : $RESTORE_ITEM | already present" >> $TMP/restore_conf
echo "\"$RESTORE_ITEM\"" >> $TMP/restore_check
if [ "$RESTORE_ITEM" == "$APP_NAME.$FILE_EXTENSION" ] ; then
echo "INSTALL_PATH=\"$INSTALL_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_check
elif [[ "$RESTORE_ITEM" == "$SCRIPT_FILE_NAME" || "$RESTORE_ITEM" == "$AUTO_SCRIPT_FILE_NAME" ]] ; then
echo "SCRIPT_PATH=\"$SCRIPT_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_check
elif [ "$RESTORE_ITEM" == "$APP_NAME.desktop" ] ; then
echo "LAUNCHER_PATH=\"$LAUNCHER_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_check
fi
else
echo " - File : $RESTORE_ITEM | not present" >> $TMP/restore_conf
if [ "$RESTORE_ITEM" == "$APP_NAME.$FILE_EXTENSION" ] ; then
echo "INSTALL_PATH=\"$INSTALL_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_check
echo "INSTALL_PATH=\"$INSTALL_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_diff
elif [[ "$RESTORE_ITEM" == "$SCRIPT_FILE_NAME" || "$RESTORE_ITEM" == "$AUTO_SCRIPT_FILE_NAME" ]] ; then
echo "SCRIPT_PATH=\"$SCRIPT_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_check
echo "SCRIPT_PATH=\"$SCRIPT_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_diff
elif [ "$RESTORE_ITEM" == "$APP_NAME.desktop" ] ; then
echo "LAUNCHER_PATH=\"$LAUNCHER_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_check
echo "LAUNCHER_PATH=\"$LAUNCHER_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_diff
fi
fi
fi
done
RESTORE_PATH=("INSTALL_PATH" "SCRIPT_PATH" "LAUNCHER_PATH" "APP_CONFIG_PATH")
#################################################################################################
for CHANGED in ${RESTORE_PATH[@]} ; do
LOCAL_PATH=$(echo \$$CHANGED)
echo $LOCAL_PATH
if [ "$(cat conf_log | grep $RESTORE_PATH | awk -F '=' '{print $2}')" == "$LOCAL_PATH" ] ; then
echo $(cat conf_log | grep "${CHANGED}_PATH") >> $TMP/restore_path_change
echo "${CHANGED}_PATH"
echo -e " - ${CRS}Configuring ${CYN}$BACKUP_TYPE${CRS} restoration process...${CRS}\n"
i=1
RESTORE_PATH=$(cat $TMP/restore_check | awk -F'=' '{print $1}')
else
echo "BAD"
echo $(cat conf_log | grep "${CHANGED}_PATH")
for PATH_VARIABLE in ${RESTORE_PATH[@]} ; do
PATH_CHECK=$(cat $TMP/restore_diff 2> /dev/null| grep "$PATH_VARIABLE" | awk '{print $1}' | awk -F'=' '{print $2}' | tr -d "\"")
if [[ "$PATH_CHECK" == "$INSTALL_PATH" || "$PATH_CHECK" == "$SCRIPT_PATH" || "$PATH_CHECK" == "$LAUNCHER_PATH" || "$PATH_CHECK" == "$APP_CONFIG_PATH" ]] ; then
echo " $i - DEFAULT_$PATH_VARIABLE = $PATH_CHECK" >> $TMP/restore_path_change
echo " BACKUP_$(cat conf_log | grep "$PATH_VARIABLE")" >> $TMP/restore_path_change
echo >> $TMP/restore_path_change
i=$(($i+1))
fi
done
if [ -f "$TMP/restore_path_change" ] ; then
echo -e " ${YEL}Path change detected!\n${CRS}"
echo -e "$(cat $TMP/restore_path_change)\n"
while true ; do
read -p " Which path to use? (DEFAULT/backup) : " PATH_OVERWRITE
echo
if [[ "$PATH_OVERWRITE" == "" || "$PATH_OVERWRITE" == "default" || "$PATH_OVERWRITE" == "DEFAULT" ]] ; then
break
elif [[ "$PATH_OVERWRITE" == "backup" || "$PATH_OVERWRITE" == "BACKUP" ]] ; then
TARGET_TO_CHANGE=$(cat $TMP/restore_diff | awk '{print $1}' | awk -F'=' '{print $1}')
for TARGET_VARIABLE in ${TARGET_TO_CHANGE[@]} ; do
PATH_TO_CHANGE=$(cat conf_log | grep "$TARGET_VARIABLE" | awk -F'=' '{print $2}' | tr -d " ")
if [ "$TARGET_VARIABLE" == "INSTALL_PATH" ] ; then
INSTALL_PATH=$PATH_TO_CHANGE
elif [ "$TARGET_VARIABLE" == "SCRIPT_PATH" ] ; then
SCRIPT_PATH=$PATH_TO_CHANGE
elif [ "$TARGET_VARIABLE" == "LAUNCHER_PATH" ] ; then
LAUNCHER_PATH=$PATH_TO_CHANGE
elif [ "$TARGET_VARIABLE" == "APP_CONFIG_PATH" ] ; then
APP_CONFIG_PATH=$PATH_TO_CHANGE
fi
done
break
else
echo -e " ${YEL}Invalid response!${CRS}\n"
fi
done
fi
for RESTORE_ITEM in ${RESTORABLE[@]} ; do
if [ -d "$RESTORE_ITEM" ] ; then
if [ -d "$APP_CONFIG_PATH" ] ; then
echo -e " - Folder : $RESTORE_ITEM \t| ${RED}directory existing${CRS}" >> $TMP/restore_content
else
echo -e " - Folder : $RESTORE_ITEM \t| ${GRN}not present${CRS}" >> $TMP/restore_content
fi
elif [ -f "$RESTORE_ITEM" ] ; then
if [[ -f "$INSTALL_PATH/$RESTORE_ITEM" || -f "$SCRIPT_PATH/$RESTORE_ITEM" || -f "$LAUNCHER_PATH/$RESTORE_ITEM" ]] ; then
echo -e " - File : $RESTORE_ITEM \t| ${RED}file existing${CRS}" >> $TMP/restore_content
else
echo -e " - File : $RESTORE_ITEM \t| ${GRN}not present${CRS}" >> $TMP/restore_content
fi
fi
done
restore_backup
}
restore_backup() {
echo -e " ${LCY}Backup Content Summary${CRS}\n"
echo -e "$(cat $TMP/restore_conf)\n"
echo -e "\t${LCY}###### Restore Summary ######${CRS}\n"
echo -e " ${MGT}Destination${CRS}"
echo -e " - Install path \t: ${CYN}$INSTALL_PATH${CRS}"
echo -e " - Script path \t: ${CYN}$SCRIPT_PATH${CRS}"
echo -e " - Launcher path \t: ${CYN}$LAUNCHER_PATH${CRS}"
echo -e " - $APP_NAME config \t: ${CYN}$APP_CONFIG_PATH${CRS}\n"
echo -e " ${MGT}Backup content${CRS}"
echo -e "$(cat $TMP/restore_content)\n"
if [ -f "$TMP/restore_check" ] ; then
echo -e " ${RED}WARNING: Some items are existing on your system!${CRS}\n"
echo -e " ${RED}WARNING: Some items are existent on your system!${CRS}\n"
while true ; do
read -p " Overwrite existing? (y/N) : " RESTORE_OVERWRITE
@ -697,10 +792,28 @@ restore_backup() {
break
elif [[ "$RESTORE_OVERWRITE" == "y" || "$RESTORE_OVERWRITE" == "Y" ]] ; then
EXISTING=$(cat $TMP/restore_check)
echo -e "\n - ${CRS}Restoring ${CYN}$BACKUP_TYPE${CRS} backup files...${CRS}\n"
EXISTING=$(cat $TMP/restore_check | awk -F'=' '{print $1}')
for REPLACE in ${EXISTING[@]} ; do
rm -rf $REPLACE
if [ "$REPLACE" == "INSTALL_PATH" ] ; then
rm -rf $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION
chmod +x $APP_NAME.$FILE_EXTENSION
mv $APP_NAME.$FILE_EXTENSION $INSTALL_PATH
elif [ "$REPLACE" == "SCRIPT_PATH" ] ; then
rm -rf $SCRIPT_PATH/$SCRIPT_FILE_NAME $SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME
chmod +x *.sh
mv *.sh $SCRIPT_PATH
elif [ "$REPLACE" == "LAUNCHER_PATH" ] ; then
rm -rf $LAUNCHER_PATH/$APP_NAME.desktop
mv $APP_NAME.desktop $LAUNCHER_PATH
elif [ "$REPLACE" == "APP_CONFIG_PATH" ] ; then
rm -rf $APP_CONFIG_PATH
mv $APP_CONFIG_FOLDER $HOME/.config
fi
done
fi
done
@ -712,11 +825,34 @@ restore_backup() {
read -p " Proceed with changes? (Y/n) : " RESTORE_CONFIRM
if [[ "$RESTORE_CONFIRM" == "" || "$RESTORE_CONFIRM" == "y" || "$RESTORE_CONFIRM" == "Y" ]] ; then
echo -e " - ${CRS}Copying ${CYN}$BACKUP_TYPE${CRS} backup files...${CRS}\n"
echo -e " - ${CRS}Restoring ${CYN}$BACKUP_TYPE${CRS} backup files...${CRS}\n"
for REPLACE in ${EXISTING[@]} ; do
if [ "$REPLACE" == "INSTALL_PATH" ] ; then
rm -rf $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION
chmod +x $APP_NAME.$FILE_EXTENSION
mv $APP_NAME.$FILE_EXTENSION $INSTALL_PATH
elif [ "$REPLACE" == "SCRIPT_PATH" ] ; then
rm -rf $SCRIPT_PATH/$SCRIPT_FILE_NAME $SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME
chmod +x *.sh
mv *.sh $SCRIPT_PATH
elif [ "$REPLACE" == "LAUNCHER_PATH" ] ; then
rm -rf $LAUNCHER_PATH/$APP_NAME.desktop
mv $APP_NAME.desktop $LAUNCHER_PATH
elif [ "$REPLACE" == "APP_CONFIG_PATH" ] ; then
rm -rf $APP_CONFIG_PATH
mv $APP_CONFIG_FOLDER $HOME/.config
fi
elif [[ "$RESTORE_CONFIRM" == "n" || "$RESTORE_CONFIRM" == "N" ]] ; then
echo -e "\n ${RED}Cancelled!${CRS}\n"
break
else
echo -e "\n ${YEL}Invalid response!${CRS}\n"
fi
done
fi