]> arthur.barton.de Git - backup-script.git/blobdiff - bin/backup-status
backup-audit: Add some more systemd-related paths to check
[backup-script.git] / bin / backup-status
index eff19744b0c652519960d643705dafa41342785d..76e75195577c0ce50ebdb78319f94318c7de4d57 100755 (executable)
@@ -10,7 +10,7 @@
 # Please read the file COPYING, README and AUTHORS for more information.
 #
 
-NAME=`basename $0`
+NAME=$(basename "$0")
 PIDFILE="/var/run/backup-script.pid"
 QUICK=0
 ONLY_ERRORS=0
@@ -25,8 +25,12 @@ declare -i snapshots=0
 [ -d "/usr/local/etc/backup-script.d" ] \
        && conf_d="/usr/local/etc/backup-script.d" \
        || conf_d="/etc/backup-script.d"
-default_target="/var/backups"
+default_backup_type="rsync"
 default_generations=0
+default_target="/var/backups"
+
+# Set shell options.
+shopt -s nullglob
 
 # Search configuration file (last one is used as default!)
 for conf in \
@@ -36,19 +40,22 @@ for conf in \
        "/usr/local/etc/backup-script.conf" \
 ; do
        if [ -r "$conf" ]; then
+               # shellcheck source=/dev/null
                source "$conf"
                break
        fi
 done
 
 Usage() {
-       echo "Usage: $NAME [--errors|--latest] [--quick] [<system> [<system> [...]]]"
+       echo "Usage: $NAME [--errors|--latest] [--quick] [<job> [<job> [...]]]"
        echo "       $NAME --running"
        echo
-       echo "  --errors, -e    Only show current backups with errors (implies \"--latest\")."
-       echo "  --latest, -l    Only show latest backup generations."
-       echo "  --quick, -q     Don't calculate backup sizes."
-       echo "  --running, -r   Check if an \"backup-script\" task is currently running."
+       echo "  -e, --errors    Only show current backups with errors (implies \"--latest\")."
+       echo "  -l, --latest    Only show latest backup generations."
+       echo "  -q, --quick     Don't calculate backup sizes."
+       echo "  -r, --running   Check if an \"backup-script\" task is currently running."
+       echo
+       echo "When no <job> is given, all defined jobs are listed."
        echo
        exit 2
 }
@@ -58,7 +65,8 @@ Check_Size() {
        # $2: padding
 
        if [ "$QUICK" = "0" ]; then
-               size=`du -Hhs "$1" | cut -f1`
+               size=$(du -Hhs "$1" | cut -f1)
+               # shellcheck disable=SC2086
                echo "$2  - Size:" $size
        fi
 }
@@ -76,6 +84,7 @@ Check_Stamp() {
                declare -i duration_t=-1
 
                # Read in "stamp file"
+               # shellcheck source=/dev/null
                source "$1"
 
                if [ $start_t -gt 0 ] && [ $end_t -gt 0 ]; then
@@ -89,25 +98,27 @@ Check_Stamp() {
                        duration_t=$end_t-$start_t
                else
                        if [ "$(uname)" = "Linux" ]; then
-                               end=`LC_ALL=C stat "$1" | grep "^Modify: " \
-                                | cut -d':' -f2- | cut -d. -f1`
+                               end=$(LC_ALL=C stat "$1" | grep "^Modify: " \
+                                | cut -d':' -f2- | cut -d. -f1)
                        else
-                               end=`LC_ALL=C stat -f "%Sc" "$1"`
+                               end=$(LC_ALL=C stat -f "%Sc" "$1")
                        fi
                fi
+               # shellcheck disable=SC2086
                [ -n "$start" ] && echo "$2  - Start date:" $start
+               # shellcheck disable=SC2086
                [ -n "$end" ] && echo "$2  - End date:" $end
                if [ $duration_t -gt -1 ]; then
                        declare -i s=$duration_t
                        if [ $s -ge 60 ]; then
-                               declare -i m=$(($s/60))
-                               declare -i s=$(($s%60))
+                               declare -i m=$((s / 60))
+                               declare -i s=$((s % 60))
                                if [ $m -ge 60 ]; then
-                                       declare -i h=$(($m/60))
-                                       declare -i m=$(($m%60))
+                                       declare -i h=$((m / 60))
+                                       declare -i m=$((m % 60))
                                        if [ $h -ge 24 ]; then
-                                               declare -i d=$(($h/24))
-                                               declare -i h=$(($h%24))
+                                               declare -i d=$((h / 24))
+                                               declare -i h=$((h % 24))
                                                duration="${d}d${h}h${m}m${s}s"
                                        else
                                                duration="${h}h${m}m${s}s"
@@ -140,12 +151,13 @@ Snapshot_Info() {
 
 Get_Result_Code() {
        code=1
+       # shellcheck source=/dev/null
        [ -r "$1" ] && source "$1"
        [ -z "$code" ] && code=1
        echo $code
 }
 
-if [ "$1" == "-r" -o "$1" == "--running" ]; then
+if [[ "$1" == "-r" || "$1" == "--running" ]]; then
        pid="$(cat "$PIDFILE" 2>/dev/null)"
        if [ -n "$pid" ]; then
                if kill -0 "$pid" >/dev/null 2>&1; then
@@ -189,16 +201,16 @@ if [ $# -ge 1 ]; then
                        echo "$NAME: Can' read \"${conf_d}/$s\"!"
                        exit 1
                fi
-               sys="$sys ${conf_d}/$s"
+               sys+=("${conf_d}/$s")
        done
 else
-       sys="${conf_d}/"*
+       sys=("${conf_d}/"*)
 fi
 
-for f in $sys; do
-       [ -r "$f" -a -f "$f" ] || continue
+for f in "${sys[@]}"; do
+       [[ -r "$f" && -f "$f" ]] || continue
 
-       fname=`basename $f`
+       fname=$(basename "$f")
        case "$fname" in
                "backup-script.conf"|*.sh)
                        continue
@@ -209,8 +221,10 @@ for f in $sys; do
        system="$fname"
        target="$default_target"
        generations="$default_generations"
+       backup_type="$default_backup_type"
 
        # Read in system configuration file
+       # shellcheck source=/dev/null
        source "$f"
 
        target="$target/$(basename "$f")"
@@ -218,10 +232,11 @@ for f in $sys; do
        [ -d "$target" ] || continue
 
        if [ "$ONLY_ERRORS" != "0" ]; then
+               [[ "$backup_type" = "disabled" ]] && continue
                [ $generations -gt 0 ] \
                        && result=$(Get_Result_Code "$target/latest/.stamp") \
                        || result=$(Get_Result_Code "$target/.stamp")
-               [ $result -eq 0 -o $result -eq 24 ] && continue
+               [[ $result -eq 0 || $result -eq 24 ]] && continue
        fi
 
        # System name