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,87 @@ 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 do
while (("$restore_point_date" < "$when_updated" )) read -rt 120 -p "Would you like to proceed? (y/N): " yesno || { echo -e "\nFailed to make a selection in time" ; exit; }
do case $yesno in
clear -x [Yy] | [Yy][Ee][Ss])
echo "The restore point you have chosen is from an older version of Truenas Scale" echo "Proceeding.."
echo "This is not recommended, as it may cause issues with the system" sleep 3
echo break
echo "Current SCALE Information:" ;;
echo "Version: $current_version" [Nn] | [Nn][Oo])
echo "When Updated: $(echo "$restore_point" | awk -F '_' '{print $2 "-" $3 "-" $4}')" echo "Exiting"
echo exit
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 "That was not an option, try again"
echo sleep 3
if read -rt 120 -p "Would you like to proceed? (y/N): " yesno || { echo -e "\nFailed to make a selection in time" ; exit; }; then continue
;;
esac
done
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 case $yesno in
[Yy] | [Yy][Ee][Ss]) [Yy] | [Yy][Ee][Ss])
echo "Proceeding.." echo "Proceeding.."
@ -199,7 +246,6 @@ do
continue continue
;; ;;
esac esac
fi
done done