summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2023-12-28 21:00:18 +0100
committerErich Eckner <git@eckner.net>2023-12-28 21:00:18 +0100
commit16061b13c63c91562f38ca8bb2fe33f286fda0e6 (patch)
treecb4e9aa7ea5d8548f8bd216a39739de466ad8c5d
parent7c49c31851ab50bd6f9240e8d2796c1b353d736a (diff)
downloadcopyPhotos-16061b13c63c91562f38ca8bb2fe33f286fda0e6.tar.xz
code aufgeraeumt
-rwxr-xr-xcopyPhotos118
1 files 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