From a167c603cd41642d7cdd4aece5086c278268f091 Mon Sep 17 00:00:00 2001 From: Hartmut Bauer Date: Wed, 19 Mar 2025 01:16:52 +0100 Subject: [PATCH] first steps with command line args --- test.sh | 70 ++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 44 insertions(+), 26 deletions(-) diff --git a/test.sh b/test.sh index 0f95c43..6a35fb1 100755 --- a/test.sh +++ b/test.sh @@ -34,7 +34,7 @@ log() { # zB. if is_in "foo" "foo" "bar" "foo bar" ; then ... # Leere Liste liefert immer false # -function is_in { +is_in() { local search="$1" shift 1 local e @@ -47,7 +47,7 @@ function is_in { # $1 - Verzeichnis in dem gesucht wird als absoluter Pfad # $2 ff. - auszuschliessende Verzeichnisse (kann leer bleiben) # -function iterate_dirs_in() { +iterate_dirs_in() { local dirname local root=$1 shift 1 @@ -63,7 +63,7 @@ function iterate_dirs_in() { # # $1 - dir to check # -function check_directory() { +check_directory() { local dir=$1 if [ -d "$1" ]; then return 0 @@ -82,7 +82,7 @@ function check_directory() { # # $1 - zu löschendes Verzeichnis # -function delete_dir() { +delete_dir() { local dir=$1 sudo rm -rf "$dir" && return 0 log ERROR "### could not delete directory $1!" @@ -93,7 +93,7 @@ function delete_dir() { # Slashes "/" im Pfadnamen durch Dashes "-" ersetzen, so dass der String als Dateiname verwendet werden kann. # # $1 - path -function backup_file_prefix() { +backup_file_prefix() { echo "$1" | sed -E 's/^\///' | sed -E 's/\//-/g' } @@ -103,7 +103,7 @@ function backup_file_prefix() { # $2 - Zielverzeichnis für .tgz.gpg-Dateien # $3 ff. - Verzeichnisse, die nicht gesichert werden sollen (kann leer bleiben) # -function backup_all_dirs() { +backup_all_dirs() { local root=$1 local target=$2 local prefix=$(backup_file_prefix $root) @@ -114,7 +114,7 @@ function backup_all_dirs() { for dir in $(iterate_dirs_in "$root" "$@"); do tar_file="$target/$prefix-$dir.$EXT" backup_dir "$root" "$tar_file" "$dir" - list "$tar_file" "$dir" + create_list "$tar_file" "$dir" test_integrity "$tar_file" done } @@ -125,7 +125,7 @@ function backup_all_dirs() { # $2 - Zielpfad und -name für das Archiv # $2 - zu sicherndes Verzeichnis # -function backup_dir() { +backup_dir() { local root=$1 local archive=$2 local dir=$3 @@ -143,7 +143,7 @@ function backup_dir() { # # $1 - Archiv # -function list() { +create_list() { local archive=$1 log INFO "--- List $archive" sudo gpg --batch --decrypt --passphrase $PASSPHRASE "$archive" | sudo tar -tzv | sudo tee $archive.txt >/dev/null @@ -160,7 +160,7 @@ function list() { # # $1 - Archiv # -function test_integrity() { +test_integrity() { local archive=$1 log INFO "--- Check integrity of $archive" sudo gpg --batch --decrypt --passphrase $PASSPHRASE "$archive" | sudo tar -xzO >/dev/null @@ -179,7 +179,7 @@ function test_integrity() { # $1 - Archiv, ggf. mit Pfad # $2 ff. - zurückzusichernde Dateien/Verzeichnisse # -function restore() { +restore() { local archive=$1 shift 1 sudo gpg --batch --decrypt --passphrase $PASSPHRASE "$archive" | sudo tar -xzv $@ >/dev/null @@ -191,9 +191,25 @@ function restore() { fi } +# Liste der Archives auf stdout ausgeben +# +# Zeigt alle Archive incl. des letzten Verzeichnisses an +# +# z.B. +# backup.7/volume1-data-Web.tgz.gpg +# media/volume1-media-books.tgz.gpg +# +# $1 - root path i.d.R. ein Verzeichnis oberhalb, damit alle täglichen Backups angezeigt werden +# +list_archives() { + local target=$1 + local targ=${target//\//\\\/} # slashes escapen + echo "#$targ#" + sudo find "$target" -type f -name "*.gpg" | sed -E "s/^$targ//" +} # *** NAS Test *** -function nas_test() { +nas_test() { LOG_FILE="/volume1/nfs/Server/tmp/backup.log" log INFO "*** *** Begin NAS backup (data, nfs, media/books, media/music)" @@ -208,22 +224,26 @@ function nas_test() { # nfs backup_all_dirs "/volume1/nfs" "$TARGET_DIR" "${EXCLUDE_DIRS[@]}" - TARGET_DIR="/volume1/nfs/backups/tmp/media" + BACKUP_ROOT=/volume1/nfs/backups/tmp + TARGET_DIR="$BACKUP_ROOT/media" EXCLUDE_DIRS=("@eaDir" "Temporary Items" "lost+found" serien tmp video "video.archive") check_directory $TARGET_DIR # media/books media/music backup_all_dirs "/volume1/media" "$TARGET_DIR" "${EXCLUDE_DIRS[@]}" - log INFO "*** End of NAS backuip" + log INFO "*** End of NAS backup" + list_archives $BACKUP_ROOT + } # *** NATHAN Test *** -function nathan_test() { +nathan_test() { LOG_FILE=/var/docker/tmp/backup.log log INFO "*** *** Begin nathan server backup" - TARGET_DIR=/var/docker/tmp/backup.$DAY + BACKUP_ROOT=/var/docker/tmp + TARGET_DIR="$BACKUP_ROOT/backup.$DAY" delete_dir $TARGET_DIR check_directory $TARGET_DIR @@ -232,14 +252,17 @@ function nathan_test() { backup_all_dirs "/var/docker/vol" "$TARGET_DIR" log INFO "*** End of nathan server backup" + list_archives $BACKUP_ROOT + } # *** HANILLER Test *** -function hamiller_test() { +hamiller_test() { LOG_FILE=/var/docker/tmp/backup.log log INFO "*** *** Begin hamiller server backup" - TARGET_DIR=/var/docker/tmp/backup.$DAY + BACKUP_ROOT=/var/docker/tmp + TARGET_DIR="$BACKUP_ROOT/backup.$DAY" delete_dir $TARGET_DIR check_directory $TARGET_DIR @@ -248,9 +271,10 @@ function hamiller_test() { # backup_all_dirs "/var/docker/vol" "$TARGET_DIR" log INFO "*** End of hamiller server backup" + list_archives $BACKUP_ROOT } -function test() { +test() { #LOG_FILE=./t1.log #log INFO "error test" echo "host: #$1#" @@ -261,13 +285,7 @@ function test() { #hamiller_test #test1 -test "$HOSTNAME" - -if [ ! -z $ERROR ]; then - log ERROR "*** *** Errors occured during the progem run, see full log for details." -else - log INFO "*** *** Program ended successfully." -fi +list_archives /var/docker/tmp exit