#
NAME=`basename $0`
+PIDFILE="/var/run/backup-script.pid"
QUICK=0
+ONLY_LATEST=0
export LC_ALL=C
fi
done
+Usage() {
+ echo "Usage: $NAME [-q|--quick] [<system> [<system> [...]]]"
+ echo " $NAME {-r|--running}"
+ exit 2
+}
+
Check_Size() {
# $1: directory
# $2: padding
# $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"; ;;
fi
}
-if [ "$1" == "-q" ]; then
- QUICK=1
- shift
+Snapshot_Info() {
+ echo " - Snapshot: $1"
+ Check_Size "$1" " "
+ Check_Stamp "$1/.stamp" " "
+}
+
+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] [<system> [<system> [...]]]"
- exit 2
- ;;
-esac
+while [ $# -gt 0 ]; do
+ case "$1" in
+ "--latest"|"-l")
+ ONLY_LATEST=1
+ ;;
+ "--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
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"
# 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
echo "- Target: $target"
if [ $generations -gt 0 ]; then
- for s in $target/current $target/[0-9]*-[0-9]*; do
- [ -e "$s" ] || continue
- echo " - Snapshot: $s"
- Check_Size "$s" " "
- Check_Stamp "$s/.stamp" " "
+ if [ "$ONLY_LATEST" = "0" ]; then
+ for s in $target/[0-9]*-[0-9]* $target/current; do
+ [ -e "$s" ] || continue
+ Snapshot_Info "$s"
+ snapshots=$snapshots+1
+ done
+ elif [ -e "$target/latest" ]; then
+ Snapshot_Info "$target/latest"
snapshots=$snapshots+1
- done
+ fi
else
# Timestamp and result code
Check_Size "$target"