From 004f0eec763f150cfdb4c7d09db835e592a58644 Mon Sep 17 00:00:00 2001 From: "Toerd@archlinux" Date: Sat, 10 Oct 2020 16:46:25 +0200 Subject: [PATCH] Feature: Added multi-destination support + fixed some bugs --- backup_ba.sh | 67 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 26 deletions(-) diff --git a/backup_ba.sh b/backup_ba.sh index 51f265b..aed2077 100755 --- a/backup_ba.sh +++ b/backup_ba.sh @@ -18,37 +18,52 @@ tar_cmd="tar --exclude-vcs -czf" part_backup_files="/home/phga/sync/docs/study/BA/proposal /home/phga/sync/docs/study/BA/BA_WIP.org" full_backup_files="/home/phga/sync/docs/study/BA" -backup_path="https://nx.phga.de/remote.php/dav/files/toerd/external/no_sync/backups/study_backups/BA/" -nxt_user=toerd +# Add your own paths, users and password-files separated with a space +backup_paths=("https://nx.phga.de/remote.php/dav/files/toerd/external/no_sync/backups/study_backups/BA/" "https://nc.frfe.de/remote.php/dav/files/toerd/backups/BA/") +nxt_users=(toerd toerd) +nxt_passwds=(backup_ba_pw_phga.de.gpg backup_ba_pw_frfe.de.gpg) # PASSWORD: see desc in header (./backup_ba_pw.gpg) # get latest backup date (from filename, order in webdav seems to be asc - lucky for us) -last_full_backup=$(curl -s -u toerd:$(gpg -d $me/backup_ba_pw.gpg) -X PROPFIND "$backup_path" | rg -o -e "(\d{4}-\d{2}-\d{2})_BA_full" -r '$1' | tail -1) -last_part_backup=$(curl -s -u toerd:$(gpg -d $me/backup_ba_pw.gpg) -X PROPFIND "$backup_path" | rg -o -e "(\d{4}-\d{2}-\d{2})_BA_part" -r '$1' | tail -1) -datediff_full_backup=$((($(date +%s) - $(date -d $last_full_backup +%s)) / (3600 * 24))) +i=0 +for bp in ${backup_paths[@]}; do + last_full_backup=$(curl -s -u ${nxt_users[$i]}:$(gpg -d $me/${nxt_passwds[$i]}) -X PROPFIND "$bp" | rg -o -e "(\d{4}-\d{2}-\d{2})_BA_full" -r '$1' | tail -1) + last_part_backup=$(curl -s -u ${nxt_users[$i]}:$(gpg -d $me/${nxt_passwds[$i]}) -X PROPFIND "$bp" | rg -o -e "(\d{4}-\d{2}-\d{2})_BA_part" -r '$1' | tail -1) + if [ ! -z $last_full_backup ]; then + datediff_full_backup=$((($(date +%s) - $(date -d $last_full_backup +%s)) / (3600 * 24))) + else + datediff_full_backup=1337 + fi -# Info output -echo -------------------------------------- -echo Last full backup was $datediff_full_backup days ago -echo Date last full backup: $last_full_backup -echo Date last part backup: $last_part_backup -echo -------------------------------------- + # Info output + echo -------------------------------------- + echo $bp | rg -o -e ".*\.de" + echo Last full backup was $datediff_full_backup days ago + echo Date last full backup: $last_full_backup + echo Date last part backup: $last_part_backup + echo -------------------------------------- -# If 14 days have passed, create a new full backup -if [ -z $last_full_backup ] || [ $datediff_full_backup -gt 14 ]; then - $tar_cmd "$tmp_path$archive_name_full" $full_backup_files - curl -s -u $nxt_user:$(gpg -d $me/backup_ba_pw.gpg) -T "$tmp_path$archive_name_full" "$backup_path$archive_name_full" -else - echo "---- No full backup required yet! ----" -fi - -# if there is no important backup from this day, create one -if [ -z $last_part_backup ] || [ $today != $last_part_backup ]; then - $tar_cmd "$tmp_path$archive_name_part" $part_backup_files - curl -s -u $nxt_user:$(gpg -d $me/backup_ba_pw.gpg) -T "$tmp_path$archive_name_part" "$backup_path$archive_name_part" -else - echo "---- No part backup required yet! ----" -fi + # If 14 days have passed, create a new full backup + if [ -z $last_full_backup ] || [ $datediff_full_backup -gt 14 ]; then + # if no tar for this backup exists create one + if [ ! -f "$tmp_path$archive_name_full" ]; then + $tar_cmd "$tmp_path$archive_name_full" $full_backup_files + fi + curl -s -u ${nxt_users[$i]}:$(gpg -d $me/${nxt_passwds[$i]}) -T "$tmp_path$archive_name_full" "$bp$archive_name_full" + else + echo "---- No full backup required yet! ----" + fi + # if there is no important backup from this day, create one + if [ -z $last_part_backup ] || [ $today != $last_part_backup ]; then + if [ ! -f "$tmp_path$archive_name_part" ]; then + $tar_cmd "$tmp_path$archive_name_part" $part_backup_files + fi + curl -s -u ${nxt_users[$i]}:$(gpg -d $me/${nxt_passwds[$i]}) -T "$tmp_path$archive_name_part" "$bp$archive_name_part" + else + echo "---- No part backup required yet! ----" + fi + ((i++)) +done # remove temp path rm -r $tmp_path \ No newline at end of file