From 16061b13c63c91562f38ca8bb2fe33f286fda0e6 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Thu, 28 Dec 2023 21:00:18 +0100 Subject: code aufgeraeumt --- copyPhotos | 118 +++++++++++++++++++------------------------------------------ 1 file changed, 37 insertions(+), 81 deletions(-) diff --git a/copyPhotos b/copyPhotos index 41f5587..8b90a06 100755 --- a/copyPhotos +++ b/copyPhotos @@ -7,20 +7,16 @@ set -e verwendung() { echo 'copyPhotos [-i]' - echo ' -d übergehe Kopieren zum Drittbackup' - echo ' -f übergehe Kopieren zum Fileserver' echo ' -i übergehe bereits vorhandene Dateien ohne zu meckern' - echo ' -z übergehe Kopieren zum Zweitbackup' + echo ' -o Ignoriere, wenn ein Backup-server offline ist.' exit 1 } zielVerzeichnis=~/Bilder -endHost="erich@fileserver" -endZielVerzeichnis="Bilder/Fotos" -zweitHost='erich@pizza' -zweitZielVerzeichnis='data/Bilder/Fotos' -drittHost='data@backup' -drittZielVerzeichnis='raid/Bilder/Fotos' +ziele=(# 'erich@fileserver:Bilder/Fotos' + 'erich@pizza:data/Bilder/Fotos' + 'data@backup:raid/Bilder/Fotos' + 'erich@backup-lo:/mnt/crypted/transfer/Bilder') publicHost="ecknernet@eckner.net:backstage/downloadarea" unset daten @@ -28,30 +24,22 @@ unset jahre declare -A daten declare -A jahre -backup=true -fileserver=true ignoriere=false -stefanie=true +offline_erlaubt=false eval set -- "$( - getopt -o dfiz -n "$(basename "$0")" -- "$@" || \ + getopt -o io -n "$(basename "$0")" -- "$@" || \ echo verwendung )" while true do case "$1" in - -d) - backup=false - ;; - -f) - fileserver=false - ;; -i) ignoriere=true ;; - -z) - stefanie=false + -o) + offline_erlaubt=true ;; --) shift @@ -123,78 +111,46 @@ trap 'rm -rf --one-file-system "${tmp_dir:?}"' EXIT tar -cf - "${!jahre[@]}" --xform='s@^\([0-9]\{4\}\)_@\1/\1_@' | \ tar -C "${tmp_dir}" -x -pingErg=0 -if ${fileserver} -then - ping -c1 "${endHost}" > /dev/null || \ - pingErg=$? -else - pingErg=1 -fi - -[ ${pingErg} -gt 1 ] && exit ${pingErg} +erg=0 -if [ ${pingErg} -eq 0 ] -then +for ziel in "${ziele[@]}"; do - rsync --progress --ignore-existing -avc "${tmp_dir}/" "${endHost}:${endZielVerzeichnis}/" + host="${ziel%:*}" + verzeichnis="${ziel#*:}" - echo "${summen}" | \ - sed 's@^\([0-9a-f]\+ \+\)\([0-9]\{4\}\)_@\1'"${endZielVerzeichnis}"'/\2/\2_@' | \ - ssh "${endHost}" 'sha512sum -c' + pingErg=0 -fi -erg=${pingErg} + pingHost=$( + sed -n '/^Host '"${host#*@}"'$/,/^$/ { + s/^\s\+Hostname \(\S\+\)$/\1/ + T + p + }' ~/.ssh/config + ) + if [ -z "${pingHost}" ]; then + pingHost="${host#*@}" + fi -pingErg=0 -if ${stefanie} -then - ping -c1 "${zweitHost#*@}" > /dev/null || \ + ping -c1 "${pingHost}" > /dev/null || \ pingErg=$? -else - pingErg=1 -fi - -[ ${pingErg} -gt 1 ] && exit ${pingErg} - -if [ ${pingErg} -eq 0 ] -then - - rsync --progress --ignore-existing -avc "${tmp_dir}/" "${zweitHost}:${zweitZielVerzeichnis}/" - echo "${summen}" | \ - sed 's@^\([0-9a-f]\+ \+\)\([0-9]\{4\}\)_@\1'"${zweitZielVerzeichnis}"'/\2/\2_@' | \ - ssh "${zweitHost}" 'sha512sum -c' - -fi -if [ ${pingErg} -gt ${erg} ]; then - erg=${pingErg} -fi - -pingErg=0 -if ${backup} -then - ping -c1 "${drittHost#*@}" > /dev/null || \ - pingErg=$? -else - pingErg=1 -fi + ! ${offline_erlaubt} && [ ${pingErg} -gt 1 ] && exit ${pingErg} -[ ${pingErg} -gt 1 ] && exit ${pingErg} + if [ ${pingErg} -eq 0 ] + then -if [ ${pingErg} -eq 0 ] -then + rsync --progress --ignore-existing -avc "${tmp_dir}/" "${host}:${verzeichnis}/" - rsync --progress --ignore-existing -avc "${tmp_dir}/" "${drittHost}:${drittZielVerzeichnis}/" + echo "${summen}" | \ + sed 's@^\([0-9a-f]\+ \+\)\([0-9]\{4\}\)_@\1'"${verzeichnis}"'/\2/\2_@' | \ + ssh "${host}" 'sha512sum -c' - echo "${summen}" | \ - sed 's@^\([0-9a-f]\+ \+\)\([0-9]\{4\}\)_@\1'"${drittZielVerzeichnis}"'/\2/\2_@' | \ - ssh "${drittHost}" 'sha512sum -c' + fi + if [ ${pingErg} -gt ${erg} ]; then + erg=${pingErg} + fi -fi -if [ ${pingErg} -gt ${erg} ]; then - erg=${pingErg} -fi +done while true do -- cgit v1.2.3-54-g00ecf