X-Git-Url: https://arthur.barton.de/gitweb/?a=blobdiff_plain;f=bin%2Fbackup-audit;h=4f3358674f0ca5ca2dc7771909c366a3df32da8d;hb=732d2cebfa68c6d3982eaaf299e75b2e216944cd;hp=cec0145b0a20102c92165c5528e28bad0816716e;hpb=1f1ac2b2ee66b81a086c3153fb8c001bc1ef0a12;p=backup-script.git diff --git a/bin/backup-audit b/bin/backup-audit index cec0145..4f33586 100755 --- a/bin/backup-audit +++ b/bin/backup-audit @@ -42,9 +42,15 @@ for conf in \ done Usage() { - echo "Usage: $NAME [-q|--quiet] [-v|--verbose] [ [ [...]]]" + echo "Usage: $NAME [-q|--quiet] [-v|--verbose] [ [ [...]]]" echo " $NAME <-d|--dirs> " echo + echo " -d, --dirs Compare two backup directories (not jobs)." + echo " -q, --quiet Quite mode, only list jobs with changes or errors." + echo " -v, --verbose Verbose mode, show all checks that are run." + echo + echo "When no is given, all defined jobs are checked." + echo exit 2 } @@ -70,7 +76,7 @@ ListDirectory() { local exclude - exclude='total | .$| ..$' + exclude='total ' if [[ "$dir_name" == "/" ]]; then exclude="$exclude"'| \.stamp$| dev$| etc$| proc$| root$| run$| sys$| tmp$' exclude="$exclude"'| data$| net$| srv$' @@ -78,8 +84,8 @@ ListDirectory() { fi # shellcheck disable=SC2012 - ls -al "$base_dir$dir_name" 2>/dev/null \ - | egrep -v "($exclude)" + ls -Al "$base_dir$dir_name" 2>/dev/null \ + | egrep -v "($exclude)" | awk '!($2="")' | column -t } HandleSystem() { @@ -212,8 +218,7 @@ DiffGenerations() { [[ -r "${gen1_d}${file}" ]] || continue [[ $VERBOSE -ne 0 ]] && echo "Checking \"$file\" ..." - diff -U 3 "${gen1_d}${file}" "${gen2_d}${file}" >"$tmp_diff" - if [[ $? -ne 0 ]]; then + if ! diff -U 3 "${gen1_d}${file}" "${gen2_d}${file}" >"$tmp_diff"; then BeginDiff "\"$file\"" tail -n +3 "$tmp_diff" | PipeDiff EndDiff @@ -241,8 +246,7 @@ DiffGenerations() { [[ $VERBOSE -ne 0 ]] && echo "Checking \"$dir\" ..." ListDirectory "${gen1_d}" "${dir}" >"$tmp_1" ListDirectory "${gen2_d}" "${dir}" >"$tmp_2" - diff -U 0 "$tmp_1" "$tmp_2" >"$tmp_diff" - if [[ $? -ne 0 ]]; then + if ! diff -U 0 "$tmp_1" "$tmp_2" >"$tmp_diff"; then BeginDiff "\"$dir\" directory" tail -n +3 "$tmp_diff" | egrep -v '^@@ ' | PipeDiff EndDiff @@ -254,8 +258,7 @@ DiffGenerations() { [[ $VERBOSE -ne 0 ]] && echo "Checking list of installed packages ..." chroot "${gen1_d}" dpkg --get-selections >"$tmp_1" || return 2 chroot "${gen2_d}" dpkg --get-selections >"$tmp_2" || return 2 - diff -U 0 "$tmp_1" "$tmp_2" >"$tmp_diff" - if [[ $? -ne 0 ]]; then + if ! diff -U 0 "$tmp_1" "$tmp_2" >"$tmp_diff"; then BeginDiff "list of installed packages" tail -n +3 "$tmp_diff" | grep -v '^@@ ' | PipeDiff EndDiff @@ -266,8 +269,7 @@ DiffGenerations() { # scp Backup type file=$(basename "$files") [[ $VERBOSE -ne 0 ]] && echo "Checking \"$file\" ..." - diff -U 3 "${gen1_d}/${file}" "${gen2_d}/${file}" >"$tmp_diff" - if [[ $? -ne 0 ]]; then + if ! diff -U 3 "${gen1_d}/${file}" "${gen2_d}/${file}" >"$tmp_diff"; then BeginDiff "\"$file\"" tail -n +3 "$tmp_diff" | PipeDiff EndDiff @@ -340,8 +342,8 @@ for f in "${sys[@]}"; do ;; esac - HandleSystem "$fname" >"$tmp_out" 2>&1 - [[ $QUIET -eq 0 || $? -ne 0 ]] && cat "$tmp_out" + HandleSystem "$fname" >"$tmp_out" 2>&1; result=$? + [[ $QUIET -eq 0 || $result -ne 0 ]] && cat "$tmp_out" done CleanUp