]> arthur.barton.de Git - backup-script.git/blobdiff - bin/backup-audit
Enable shell options for safer execution environment
[backup-script.git] / bin / backup-audit
index 1aa83a7e17bc16091e11ec7d2812ad3e27008580..0dc2995f5925b5da2166067624090a63c0420603 100755 (executable)
@@ -27,6 +27,10 @@ default_files="running-config"
 default_generations=0
 default_target="/var/backups"
 
+# Set shell options.
+shopt -s nullglob
+set -o pipefail
+
 # Search configuration file (last one is used as default!)
 for conf in \
        "/usr/local/etc/backup-script.conf" \
@@ -42,9 +46,15 @@ for conf in \
 done
 
 Usage() {
-       echo "Usage: $NAME [-q|--quiet] [-v|--verbose] [<system> [<system> [...]]]"
+       echo "Usage: $NAME [-q|--quiet] [-v|--verbose] [<job> [<job> [...]]]"
        echo "       $NAME <-d|--dirs> <dir1> <dir2>"
        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 <job> is given, all defined jobs are checked."
+       echo
        exit 2
 }
 
@@ -212,8 +222,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 +250,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 +262,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 +273,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 +346,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