initial backup validity checks

This commit is contained in:
heavybullets8 2022-12-18 10:41:04 -07:00
parent 27eec996aa
commit 12100cf3f0

View File

@ -149,40 +149,35 @@ do
done done
# Boot Query ## Check to see if empty PVC data is present in any of the applications ##
boot_query=$(cli -m csv -c 'system bootenv query created,realname')
# Find all pv_info.json files two subfolders deep
pool=$(cli -c 'app kubernetes config' | grep -E "pool\s\|" | awk -F '|' '{print $3}' | tr -d " \t\n\r")
files=$(find "$(find /mnt/"$pool"/ix-applications/backups -maxdepth 0 )" -name pv_info.json | grep "$restore_point");
# Get the date of system version and when it was updated # Iterate over the list of files
current_version=$(cli -m csv -c 'system version' | awk -F '-' '{print $3}') for file in $files; do
when_updated=$(echo "$boot_query" | grep "$current_version",\ # Check if the file only contains {} subfolders two deep
| awk -F ',' '{print $2}' | sed 's/[T|-]/_/g' | sed 's/:/_/g' | awk -F '_' '{print $1 $2 $3 $4 $5}') contents=$(cat $file)
if [[ "$contents" == '{}' ]]; then
# Print the file if it meets the criterion
file=$(echo "$file" | awk -F '/' '{print $7}')
borked_array+="$file\n"
borked=True
fi
done
# If there is empty PVC data, exit
# Get the date of the chosen restore point if [[ $borked == True ]]; then
restore_point_date=$(echo "$restore_point" | awk -F '_' '{print $2 $3 $4 $5 $6}' | tr -d "_") echo "Warning!:"
echo "The following applications have empty PVC data:"
for file in $borked_array; do
# Grab previous version echo -e "$file"
previous_version=$(echo "$boot_query" | sort -nr | grep -A 1 "$current_version," | tail -n 1) done
echo "You need to ensure these applications are not supposed to have PVC data before proceeding"
while true
# Compare the dates
while (("$restore_point_date" < "$when_updated" ))
do do
clear -x read -rt 120 -p "Would you like to proceed? (y/N): " yesno || { echo -e "\nFailed to make a selection in time" ; exit; }
echo "The restore point you have chosen is from an older version of Truenas Scale"
echo "This is not recommended, as it may cause issues with the system"
echo
echo "Current SCALE Information:"
echo "Version: $current_version"
echo "When Updated: $(echo "$restore_point" | awk -F '_' '{print $2 "-" $3 "-" $4}')"
echo
echo "Restore Point SCALE Information:"
echo "Version: $(echo "$previous_version" | awk -F ',' '{print $1}')"
echo "When Updated: $(echo "$previous_version" | awk -F ',' '{print $2}' | awk -F 'T' '{print $1}')"
echo
if read -rt 120 -p "Would you like to proceed? (y/N): " yesno || { echo -e "\nFailed to make a selection in time" ; exit; }; then
case $yesno in case $yesno in
[Yy] | [Yy][Ee][Ss]) [Yy] | [Yy][Ee][Ss])
echo "Proceeding.." echo "Proceeding.."
@ -199,7 +194,58 @@ do
continue continue
;; ;;
esac esac
done
fi fi
## Check the restore point, and ensure it is the same version as the current system ##
# Boot Query
boot_query=$(cli -m csv -c 'system bootenv query created,realname')
# Get the date of system version and when it was updated
current_version=$(cli -m csv -c 'system version' | awk -F '-' '{print $3}')
when_updated=$(echo "$boot_query" | grep "$current_version",\
| awk -F ',' '{print $2}' | sed 's/[T|-]/_/g' | sed 's/:/_/g' | awk -F '_' '{print $1 $2 $3 $4 $5}')
# Get the date of the chosen restore point
restore_point_date=$(echo "$restore_point" | awk -F '_' '{print $2 $3 $4 $5 $6}' | tr -d "_")
# Grab previous version
previous_version=$(echo "$boot_query" | sort -nr | grep -A 1 "$current_version," | tail -n 1)
# Compare the dates
while (("$restore_point_date" < "$when_updated" ))
do
clear -x
echo "The restore point you have chosen is from an older version of Truenas Scale"
echo "This is not recommended, as it may cause issues with the system"
echo
echo "Current SCALE Information:"
echo "Version: $current_version"
echo "When Updated: $(echo "$restore_point" | awk -F '_' '{print $2 "-" $3 "-" $4}')"
echo
echo "Restore Point SCALE Information:"
echo "Version: $(echo "$previous_version" | awk -F ',' '{print $1}')"
echo "When Updated: $(echo "$previous_version" | awk -F ',' '{print $2}' | awk -F 'T' '{print $1}')"
echo
read -rt 120 -p "Would you like to proceed? (y/N): " yesno || { echo -e "\nFailed to make a selection in time" ; exit; }
case $yesno in
[Yy] | [Yy][Ee][Ss])
echo "Proceeding.."
sleep 3
break
;;
[Nn] | [Nn][Oo])
echo "Exiting"
exit
;;
*)
echo "That was not an option, try again"
sleep 3
continue
;;
esac
done done