X-Git-Url: https://arthur.barton.de/gitweb/?a=blobdiff_plain;f=bin%2Fbackup-status;h=edbdd64cc1c6fa62c553e2fc446ccbe16ef77bbf;hb=19d844c6b25cc2f63cd4633d31b1af50dcd468f6;hp=c81a4d1f430b87baaecd42688790e058bba09e1a;hpb=2ce476ba8b423adce75cdd48faf9f2326f4880aa;p=backup-script.git diff --git a/bin/backup-status b/bin/backup-status index c81a4d1..edbdd64 100755 --- a/bin/backup-status +++ b/bin/backup-status @@ -11,6 +11,7 @@ # NAME=`basename $0` +PIDFILE="/var/run/backup-script.pid" QUICK=0 export LC_ALL=C @@ -19,16 +20,31 @@ declare -i count=0 declare -i snapshots=0 # Default settings, can be overwritten in backup-script.conf: -conf_d="/etc/backup-script.d" +[ -d "/usr/local/etc/backup-script.d" ] \ + && conf_d="/usr/local/etc/backup-script.d" \ + || conf_d="/etc/backup-script.d" default_target="" default_generations=0 -for conf in "/etc/backup-script.conf" "${conf_d}/backup-script.conf"; do +# Search configuration file (last one is used as default!) +for conf in \ + "/usr/local/etc/backup-script.conf" \ + "/etc/backup-script.conf" \ + "${conf_d}/backup-script.conf" \ + "/usr/local/etc/backup-script.conf" \ +; do if [ -r "$conf" ]; then source "$conf" + break fi done +Usage() { + echo "Usage: $NAME [-q|--quick] [ [ [...]]]" + echo " $NAME {-r|--running}" + exit 2 +} + Check_Size() { # $1: directory # $2: padding @@ -44,14 +60,14 @@ Check_Stamp() { # $2: padding if [ -f "$1" ]; then - if [ `uname` = "Linux" ]; then + if [ "$(uname)" = "Linux" ]; then last=`LC_ALL=C stat "$1" | grep "^Modify: " \ | cut -d':' -f2- | cut -d. -f1` else last=`LC_ALL=C stat -f "%Sc" "$1"` fi [ -n "$last" ] && echo "$2 - Date:" $last - unset code + code= source "$1" case "$code" in 0) txt=", OK"; ;; @@ -64,20 +80,39 @@ Check_Stamp() { fi } -if [ "$1" == "-q" ]; then - QUICK=1 - shift +if [ "$1" == "-r" -o "$1" == "--running" ]; then + pid="$(cat "$PIDFILE" 2>/dev/null)" + if [ -n "$pid" ]; then + if kill -0 "$pid" >/dev/null 2>&1; then + echo "Backup job running with PID $pid." + echo + pstree -ap "$pid" 2>/dev/null + exit 0 + else + echo "No backup running (invalid PID $pid in \"$PIDFILE\")." + exit 1 + fi + fi + echo "No backup running (no PID file \"$PIDFILE\" found)." + exit 1 fi -case "$1" in - "-"*) - echo "Usage: $NAME [-q] [ [ [...]]]" - exit 1 - ;; -esac +while [ $# -gt 0 ]; do + case "$1" in + "--quick"|"-q") + QUICK=1 + ;; + "-"*) + Usage + ;; + *) + break + esac + shift +done if [ $# -ge 1 ]; then - for s in $@; do + for s in "$@"; do if [ ! -r "${conf_d}/$s" ]; then echo "$NAME: Can' read \"${conf_d}/$s\"!" exit 1 @@ -85,7 +120,7 @@ if [ $# -ge 1 ]; then sys="$sys ${conf_d}/$s" done else - sys=${conf_d}/* + sys="${conf_d}/"* fi [ -r "${conf_d}/backup-script.conf" ] && source "${conf_d}/backup-script.conf" @@ -108,10 +143,6 @@ for f in $sys; do # Read in system configuration file source "$f" - # Validate configuration - [ "$system" = "localhost" -o "$system" = "127.0.0.1" ] && local=1 - - destdir="$target" target="$target/$system" [ -d "$target" ] || continue @@ -123,7 +154,8 @@ for f in $sys; do echo "- Target: $target" if [ $generations -gt 0 ]; then - for s in $target/[0-9]*-[0-9]*; do + for s in $target/[0-9]*-[0-9]* $target/current; do + [ -e "$s" ] || continue echo " - Snapshot: $s" Check_Size "$s" " " Check_Stamp "$s/.stamp" " "