X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=scripts%2Fbackup.sh.in;h=9977ec25374f53b8ed3edaacb5f08b527945503c;hb=8d087fbb0b5222b12e2dcceb5b653127ccc4b66a;hp=9dd60e7e30f646642c80f1b9fc2e559cbfbd1077;hpb=1992ef949691a9df800cfb9e1e7a894126a87177;p=chaz%2Ftar
diff --git a/scripts/backup.sh.in b/scripts/backup.sh.in
index 9dd60e7..9977ec2 100644
--- a/scripts/backup.sh.in
+++ b/scripts/backup.sh.in
@@ -1,21 +1,22 @@
#! /bin/sh
-# This program is part of GNU tar
-# Copyright 2004, Free Software Foundation
-#
-# This program is free software; you can redistribute it and/or modify
+# Make backups.
+
+# Copyright 2004-2006, 2013-2014 Free Software Foundation, Inc.
+
+# This file is part of GNU tar.
+
+# GNU tar is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 1, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+
+# GNU tar is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
-#
+
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# along with this program. If not, see .
PROGNAME=`basename $0`
CONFIGPATH="$SYSCONFDIR/backup"
@@ -27,28 +28,28 @@ LOGPATH=${CONFIGPATH}/log
# Default functions for running various magnetic tape commands
mt_begin() {
- mt -f "$1" retension
+ $MT -f "$1" retension
}
mt_rewind() {
- mt -f "$1" rewind
+ $MT -f "$1" rewind
}
mt_offline() {
- mt -f "$1" offl
+ $MT -f "$1" offl
}
mt_status() {
- mt -f "$1" status
+ $MT -f "$1" status
}
# The main configuration file may override any of these variables
MT_BEGIN=mt_begin
MT_REWIND=mt_rewind
-MT_OFFLINE=mt_offl
+MT_OFFLINE=mt_offline
MT_STATUS=mt_status
-# Insure `mail' is in PATH.
+# Insure 'mail' is in PATH.
PATH="/usr/ucb:${PATH}"
export PATH
# Put startdate in the subject line of mailed report, since if it happens
@@ -78,7 +79,7 @@ bailout() {
# Return current date
now() {
-#IF_DATE_FORMAT_OK
+#IF_DATE_FORMAT_OK
date +%Y-%m-%d
#ELSE_DATE_FORMAT_OK
LC_ALL=C date | \
@@ -104,10 +105,10 @@ test_root() {
if [ ! -w ${ROOT_FS-/} ]; then
bailout "The backup must be run as root or else some files will fail to be dumped."
fi
- case "${ROOT_FS}" in
- */) ;;
- *) ROOT_FS="${ROOT_FS}/"
- esac
+}
+
+root_fs() {
+ echo "${ROOT_FS}$1" | tr -s /
}
advice() {
@@ -139,7 +140,7 @@ init_common() {
advice $LOGPATH
exit 1
fi
- fi
+ fi
# Get the values of BACKUP_DIRS, BACKUP_FILES, and other variables.
if [ ! -r $CONFIGFILE ]; then
echo "$PROGNAME: cannot read $CONFIGFILE. Stop." >&2
@@ -151,7 +152,7 @@ init_common() {
test_root
- if [ x"${ADMINISTRATOR}" = x ]; then
+ if [ x"${ADMINISTRATOR}" = x ]; then
bailout "ADMINISTRATOR not defined"
fi
@@ -159,7 +160,7 @@ init_common() {
[ x"$SLEEP_TIME" = x ] && SLEEP_TIME=60
if [ x$VOLNO_FILE = x ]; then
- bailout "VOLNO_FILE not specified"
+ bailout "VOLNO_FILE not specified"
fi
if [ -r $DIRLIST ]; then
@@ -172,9 +173,23 @@ init_common() {
if [ \( x"$BACKUP_DIRS" = x \) -a \( x"$BACKUP_FILES" = x \) ]; then
bailout "Neither BACKUP_DIRS nor BACKUP_FILES specified"
fi
- if [ "$RSH" = "" ]; then
+ if [ -z "$RSH" ]; then
RSH=rsh
+ MT_RSH_OPTION=
+ else
+ MT_RSH_OPTION="--rsh-command=$RSH"
fi
+ if [ -z "$TAPE_FILE" ]; then
+ TAPE_FILE=/dev/tape
+ fi
+
+ # If TAPE_FILE is a remote device, update mt invocation accordingly
+ : ${MT:=mt}
+ case $TAPE_FILE in
+ *:*) MT="$MT $MT_RSH_OPTION";;
+ *) ;;
+ esac
+
POSIXLY_CORRECT=1
export POSIXLY_CORRECT
}
@@ -197,8 +212,8 @@ init_backup() {
TAR_PART1="${TAR_PART1} --info-script='${DUMP_REMIND_SCRIPT}'"
fi
# Set logfile name
- # Logfile name should be in the form ``log-1993-03-18-level-0''
- # They go in the directory `@sysconfdir@/log'.
+ # Logfile name should be in the form 'log-1993-03-18-level-0'
+ # They go in the directory '@sysconfdir@/log'.
# i.e. year-month-date. This format is useful for sorting by name, since
# logfiles are intentionally kept online for future reference.
LOGFILE="${LOGPATH}/log-`now`-level-${DUMP_LEVEL}"
@@ -239,7 +254,7 @@ wait_time() {
diff = 3600 * (time[1] - now[1]) + 60 * (time[2] - now[2]);
if (diff < 0)
diff += 3600 * 24
- print diff
+ print diff
}'`"
clear
echo "${SLEEP_MESSAGE}"
@@ -278,7 +293,7 @@ flush_level_log() {
# usage: get_dump_time LEVEL
get_dump_time() {
ls -r ${LOGPATH}/log-*-level-$1 \
- | head -1 \
+ | head -n 1 \
| sed "s,.*log-\(.*\)-level-$1,\1,"
}
@@ -291,7 +306,7 @@ backup_host() {
if [ "z${localhost}" != "z$rhost" ] ; then
$RSH "$rhost" ${TAR_PART1} -f "${localhost}:${TAPE_FILE}" $@
else
- # Using `sh -c exec' causes nested quoting and shell substitution
+ # Using 'sh -c exec' causes nested quoting and shell substitution
# to be handled here in the same way rsh handles it.
CMD="exec ${TAR_PART1} -f \"${TAPE_FILE}\" $@"
message 10 "CMD: $CMD"
@@ -306,7 +321,7 @@ print_level() {
else
echo "Level ${1-$DUMP_LEVEL}"
fi
-}
+}
prev_level() {
print_level `expr $DUMP_LEVEL - 1` | tr A-Z a-z
@@ -325,22 +340,9 @@ remote_run() {
license() {
cat - <.
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
EOF
}