X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=scripts%2Fbackup.sh.in;h=e0d1c68162a97a7c555b4fd7bde4336780348864;hb=5cb79ed51999e36add131116d3d3db586be9870e;hp=e78c3268d73f43b1ecafdb0a3456975978337c34;hpb=22fae29fb760d9ad758848748869882f9cb2f8a0;p=chaz%2Ftar diff --git a/scripts/backup.sh.in b/scripts/backup.sh.in index e78c326..e0d1c68 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 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 | \ @@ -106,6 +107,10 @@ test_root() { fi } +root_fs() { + echo "${ROOT_FS}$1" | tr -s / +} + advice() { echo "Directory $1 is not found." >&2 cat >&2 <&2 @@ -147,7 +152,7 @@ init_common() { test_root - if [ x"${ADMINISTRATOR}" = x ]; then + if [ x"${ADMINISTRATOR}" = x ]; then bailout "ADMINISTRATOR not defined" fi @@ -155,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 @@ -168,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 } @@ -193,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}" @@ -235,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}" @@ -274,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," } @@ -287,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" @@ -302,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 @@ -321,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 }