From de51c0557d3ce5eeab0b69092b030b458815c46f Mon Sep 17 00:00:00 2001 From: localhorst Date: Fri, 24 Apr 2020 23:07:40 +0200 Subject: [PATCH] added script --- check_AutoBackup.sh | 114 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 check_AutoBackup.sh diff --git a/check_AutoBackup.sh b/check_AutoBackup.sh new file mode 100644 index 0000000..2d81732 --- /dev/null +++ b/check_AutoBackup.sh @@ -0,0 +1,114 @@ +#! /bin/bash + +### GENERAL SETTINGS ### +DEBUG="true" +timestampFolder="index" +receiverEmail="admin@coptersicht.de" +######################## + +######### REPO SETTINGS ######### + +#repos_name[0]=" first backup repo" +#repos_directory[0]="first_repo" +#repos_interval[0]=21600 #sec +#repos_interval_tolerance[0]=10 #% + +#repos_name[1]="second backup repo" +#repos_directory[1]="second_repo" +#repos_interval[1]=21600 #sec +#repos_interval_tolerance[1]=10 #% + +#repos_name[2]=" another backup repo" +#repos_directory[2]="another_repo" +#repos_interval[2]=21600 #sec +#repos_interval_tolerance[2]=10 #% +################################# + +function fn_convertSecondsToHumanReadable() { +fn_result="$(echo $(($1/86400))d $(($(($1 - $1/86400*86400))/3600))h:$(($(($1 - $1/86400*86400))%3600/60))m:$(($(($1 - $1/86400*86400))%60))s)" +} + +echo "Starting AutoBackup Watchdog" +echo "Local time: $(date)" + +repo_count=$(("${#repos_name[@]}")) +echo "Repo Count: $repo_count" +repo_count=$(($repo_count-1)) + +for i in $(eval echo "{0..$repo_count}") #loop through all repos +do + echo " " + echo "Checking repo: ${repos_name[i]}" + cd ${repos_directory[i]} #jump into repo + timestamp=$(date -r "$timestampFolder" +%s) #get timestap of last backup aka the "index" folder + time=$(date +%s) #get local time + diff=$(($time-$timestamp)) #compute diff time + lastBackup=$(date -d @$timestamp) #convert unix time stamp in human readable + tolerance=$(( ${repos_interval[i]}*${repos_interval_tolerance[i]}/100)) #compute tolerance based on percentage + total_interval=$((${repos_interval[i]}+$tolerance)) #compute total interval based on (interval+tolerance) + cd .. #leave repo + echo "Last backup: $lastBackup" + + if [ "$diff" -gt "$total_interval" ]; then #test if last backup is overdue + overdue=$(($diff-${repos_interval[i]})) #stores diff time since last backup in seconds + fn_convertSecondsToHumanReadable $overdue # convert in human readable + overdue=$fn_result #stores diff time since last backup in human readable + fn_convertSecondsToHumanReadable ${repos_interval[i]} + plannedIntervall=$fn_result + echo -e "\e[31mOverdue: $overdue" + echo -e "\e[39m " + rm -f mail_content.txt + cat >> mail_content.txt < + + +

AutoBackup Failure

+

Overdue for the automatic backup for "${repos_name[i]}"

+
+

Local time: $(date)

+

Failed backup repo: ${repos_name[i]}

+

Planned backup interval: $plannedIntervall

+

Last backup: $lastBackup

+

Overdue: $overdue

+
+ + + +EOL + if [ "$DEBUG" = "false" ]; + then + ssmtp -f"autobackupwatchdog@coptersicht.de" -F"AutoBackup Watchdog" $receiverEmail < mail_content.txt + rm mail_content.txt + fi + fi +done +echo " " +echo "Finished"