]> Dogcows Code - chaz/tar/commitdiff
*** empty log message ***
authorFrançois Pinard <pinard@iro.umontreal.ca>
Wed, 16 Nov 1994 02:48:48 +0000 (02:48 +0000)
committerFrançois Pinard <pinard@iro.umontreal.ca>
Wed, 16 Nov 1994 02:48:48 +0000 (02:48 +0000)
scripts/level-0
scripts/level-1
src/gnu.c
src/port.h

index 108eeee09c4f47ca55277c91f2ea7b130ceb5622..bcf886df3ed9d9d44b1b58f2689ba584efdd4781 100644 (file)
@@ -66,9 +66,10 @@ startdate="`date`"
 here="`pwd`"
 
 # Logfile name should be in the form  ``log-1993-03-18-level-0''
+# They go in the subdirectory `log' of the current directory. 
 # i.e. year-month-date.  This format is useful for sorting by name, since
 # logfiles are intentionally kept online for future reference.
-LOGFILE="log-`date | sed -ne '
+LOGFILE="log/log-`date | sed -ne '
    s/[^ ]*  *\([^ ]*\)  *\([^ ]*\).* \([^ ]*\)$/\3-\1-\2/
    /-[0-9]$/s/\([0-9]\)$/0\1/
    /Jan/{s/Jan/01/p;q;}
index 447dbd220f3eedba0dc4d078b33c19ea6935566a..7d10fbd259d15e8b848c8a6e5f96ad8c1cfff8c6 100644 (file)
@@ -8,21 +8,31 @@
 #
 # You must edit the file `backup-specs' to set the parameters for your site.
 
+# Useful for backup-specs, in case things have to be done slightly
+# differently for different dump levels. 
+DUMP_LEVEL=1
+
 # Insure `mail' is in PATH. 
 PATH="/usr/ucb:${PATH}"
 export PATH
 
+# This is not the most reliable test in the world.  The following might be
+# more predictable:
+#
+# whoami="`whoami`"
+# euid="`sed -ne '/^'\"${whoami}\"':/{s/^[^:]*:[^:]*://;s/:.*//p;q;}' /etc/passwd`"
+# if [ "${euid}" != 0 ]; then ...
+#
 if [ ! -w / ]; then
    echo "The backup must be run as root or else some files will fail to be dumped."
    exit 1
 fi
 
-# Get the values of BACKUP_DIRS and BACKUP_FILES, and other variables.
+# Get the values of BACKUP_DIRS, BACKUP_FILES, and other variables.
 . ./backup-specs
 
 # Maybe sleep until around specified or default hour.
-#
-if [ "${1}" != "now" ]; then
+if [ "z${1}" != "znow" ]; then
    if [ "${1}x" != "x" ]; then
       spec="${1}"
    else
@@ -40,14 +50,7 @@ if [ "${1}" != "now" ]; then
      }' spec=\"${spec}\"`"
 
    clear
-
-   # Put your favorite message here.  We just want a screenful of obnoxious
-   # caps warning people from messing with the dedicated terminal. 
-   awk 'BEGIN { 
-           for (i = 0; i < 30; i++)
-              print "           D O    N O T   T O U C H   T H I S   T E R M I N A L !!!!!"
-        }' /dev/null
-
+   echo "${SLEEP_MESSAGE}"
    sleep "${pausetime}"
 fi
 
@@ -61,8 +64,9 @@ startdate="`date`"
 
 here="`pwd`"
 
-# Logfile name should be in the form  ``log-1993-03-18-full''
-# i.e. year-month-date.  This format is useful for sorting by name. 
+# Logfile name should be in the form  ``log-1993-03-18-level-1''
+# i.e. year-month-date.  This format is useful for sorting by name, since
+# logfiles are intentionally kept online for future reference.
 LOGFILE=log-`date | awk '
    BEGIN {
       d["Jan"] = "01";  d["Feb"] = "02"; d["Mar"] = "03";
@@ -71,127 +75,122 @@ LOGFILE=log-`date | awk '
       d["Oct"] = "10";  d["Nov"] = "11"; d["Dec"] = "12";
    }
    {
-      if ($3 < 10)
-         $3 = "0" $3;
-      print $6 "-" d[$2] "-" $3;
-   }'`-level-1
+    if ($3 < 10) $3 = "0" $3;
+    print $6 "-" d[$2] "-" $3;
+   }'`-level-${DUMP_LEVEL}
 
-HOST="`hostname | sed -e 's/\..*//'`"
+localhost="`hostname | sed -e 's/\..*//'`"
 
 TAR_PART1="/usr/local/bin/tar -c --multi-volume --one-file-system --block=${BLOCKING} --sparse --volno-file=${VOLNO_FILE}"
 
 # Only use --info-script if DUMP_REMIND_SCRIPT was defined in backup-specs
 if [ "x${DUMP_REMIND_SCRIPT}" != "x" ]; then
-   TAR_PART1="${TAR_PART1} --info-script=${DUMP_REMIND_SCRIPT}"
+   TAR_PART1="${TAR_PART1} --info-script='${DUMP_REMIND_SCRIPT}'"
 fi
 
 # Make sure the log file did not already exist.  Create it.
 
 if [ -f "${LOGFILE}" ] ; then
-   echo "Log file ${LOGFILE} already exists."
+   echo "Log file ${LOGFILE} already exists." 1>&2
    exit 1
 else
    touch "${LOGFILE}"
 fi
 
-# Caveat: Some version of `mt' require `-t', not `-f'. 
-mt -f "${TAPE_FILE}" rewind
-rm -f "${VOLNO_FILE}"
-
-set - "${BACKUP_DIRS}"
-while [ $# -ne 0 ] ; do
-   host="`echo \"${1}\" | sed -e 's/:.*$//'`"
-   fs="`echo \"${1}\" | sed -e 's/^.*://'`"
-   date="`date`"
-   fsname="`echo \"${1}\" | sed -e 's/\//:/g'`"
-
-   # This filename must be absolute; it is opened on the machine that runs tar.
-   TAR_PART2="--listed=/etc/tar-backup/temp.level-1"
-   TAR_PART3="--label='level 1 backup of ${fs} on ${host} at ${date}' -C ${fs} ."
-
-   echo "Backing up ${1} at ${date}" | tee -a "${LOGFILE}"
-   echo "Last full dump on this filesystem:" | "tee -a ${LOGFILE}"
-
-   if [ "z${host}" != "z${HOST}" ] ; then
-     rsh "${host}" "ls -l /etc/tar-backup/${fsname}.level-0; \
-                    cp /etc/tar-backup/${fsname}.level-0 /etc/tar-backup/temp.level-1" 2>&1 \
-      | tee -a "${LOGFILE}"
-   else
-     ls -l /etc/tar-backup/${fsname}.level-0 2>&1 | tee -a ${LOGFILE}
-     cp /etc/tar-backup/${fsname}.level-0 /etc/tar-backup/temp.level-1 2>&1 | tee -a ${LOGFILE}
-   fi
-
-   # Actually back things up.
-
-   if [ "z${host}" != "z${HOST}" ] ; then
-      rsh "${host}" ${TAR_PART1} -f ${HOST}:${TAPE_FILE} ${TAR_PART2} ${TAR_PART3} 2>&1 \
-       | tee -a "${LOGFILE}"
-   else
-      # Using `sh -c exec' causes nested quoting and shell substitution
-      # to be handled here in the same way rsh handles it.
-      sh -c "exec ${TAR_PART1} -f ${TAPE_FILE} ${TAR_PART2} ${TAR_PART3}" 2>&1 | tee -a "${LOGFILE}"
-   fi
-
-   # This doesn't presently work, of course, because $? is set to the exit
-   # status of the last thing in the pipeline of the previous command,
-   # namely `tee'.  We really want the exit status of the sh command
-   # running tar, but getting this seems to be nontrivial.  --friedman
-   if [ $? -ne 0 ] ; then
-      echo "Backup of ${1} failed." | tee -a "${LOGFILE}"
+# Most everything below here is run in a subshell for which all output is
+# piped through `tee' to the logfile.  Doing this, instead of having
+# multiple pipelines all over the place, is cleaner and allows access to
+# the exit value from various commands more easily. 
+(
+ # Caveat: Some version of `mt' require `-t', not `-f'. 
+ mt -f "${TAPE_FILE}" rewind
+ rm -f "${VOLNO_FILE}"
+
+ set - "${BACKUP_DIRS}"
+ while [ $# -ne 0 ] ; do
+    date="`date`"
+    remotehost="`echo \"${1}\" | sed -e 's/:.*$//'`"
+    fs="`echo \"${1}\" | sed -e 's/^.*://'`"
+    fsname="`echo \"${1}\" | sed -e 's/\//:/g'`"
+
+    # This filename must be absolute; it is opened on the machine that runs tar.
+    TAR_PART2="--listed=/etc/tar-backup/temp.level-1"
+    TAR_PART3="--label='level 1 backup of ${fs} on ${remotehost} at ${date}' -C ${fs} ."
+
+    echo "Backing up ${1} at ${date}"
+    echo "Last full dump on this filesystem:"
+
+    if [ "z${remotehost}" != "z${localhost}" ] ; then
+      rsh "${remotehost}" "ls -l /etc/tar-backup/${fsname}.level-0; \
+          cp /etc/tar-backup/${fsname}.level-0 /etc/tar-backup/temp.level-1"
+    else
+      ls -l "/etc/tar-backup/${fsname}.level-0"
+      cp "/etc/tar-backup/${fsname}.level-0" /etc/tar-backup/temp.level-1
+    fi
+
+    # Actually back things up.
+
+    if [ "z${remotehost}" != "z${localhost}" ] ; then
+       rsh "${remotehost}" ${TAR_PART1} -f "${localhost}:${TAPE_FILE}" ${TAR_PART2} ${TAR_PART3}
+    else
+       # Using `sh -c exec' causes nested quoting and shell substitution
+       # to be handled here in the same way rsh handles it.
+       sh -c "exec ${TAR_PART1} -f \"${TAPE_FILE}\" ${TAR_PART2} ${TAR_PART3}"
+    fi
+
+    # `rsh' doesn't exit with the exit status of the remote command.  What
+    # stupid lossage.  TODO: think of a reliable workaround. 
+    if [ $? -ne 0 ] ; then
+       echo "Backup of ${1} failed."
+       # I'm assuming that the tar will have written an empty
+       # file to the tape, otherwise I should do a cat here.
+    else
+       if [ "z${localhost}" != "z${remotehost}" ] ; then
+         rsh "${remotehost}" mv -f /etc/tar-backup/temp.level-1 "/etc/tar-backup/${fsname}.level-1"
+       else
+         mv -f /etc/tar-backup/temp.level-1 "/etc/tar-backup/${fsname}.level-1"
+       fi
+    fi
+    ${TAPE_STATUS}
+    sleep 60
+    shift
+ done
+
+ # Dump any individual files requested.
+
+ if [ "x${BACKUP_FILES}" != "x" ] ; then
+    date="`date`"
+    TAR_PART2="--listed=/etc/tar-backup/temp.level-1"
+    TAR_PART3="--label='Incremental backup of miscellaneous files at ${date}'"
+
+    echo "Backing up miscellaneous files at ${date}"
+    echo "Last full dump of these files:"
+    ls -l /etc/tar-backup/misc.level-0
+
+    rm -f /etc/tar-backup/temp.level-1
+    cp /etc/tar-backup/misc.level-0 /etc/tar-backup/temp.level-1
+
+    # Using `sh -c exec' causes nested quoting and shell substitution
+    # to be handled here in the same way rsh handles it.
+    sh -c "exec ${TAR_PART1} -f \"${TAPE_FILE}\" ${TAR_PART2} ${TAR_PART3} ${BACKUP_FILES}"
+
+    if [ $? -ne 0 ] ; then
+      echo "Backup of miscellaneous files failed." 1>&2
       # I'm assuming that the tar will have written an empty
       # file to the tape, otherwise I should do a cat here.
-   else
-      if [ ${HOST} != ${host} ] ; then
-       rsh ${host} mv -f /etc/tar-backup/temp.level-1 /etc/tar-backup/${fsname}.level-1 2>&1 \
-         | tee -a ${LOGFILE}
-      else
-        mv -f /etc/tar-backup/temp.level-1 /etc/tar-backup/${fsname}.level-1 2>&1 \
-         | tee -a ${LOGFILE}
-      fi
-   fi
-   ${TAPE_STATUS} | tee -a "${LOGFILE}"
-   sleep 60
-   shift
-done
-
-# Dump any individual files requested.
-
-if [ "x${BACKUP_FILES}" != "x" ] ; then
-   date="`date`"
-   TAR_PART2="--listed=/etc/tar-backup/temp.level-1"
-   TAR_PART3="--label='Incremental backup of miscellaneous files at ${date}'"
-
-   echo "Backing up miscellaneous files at ${date}" | tee -a "${LOGFILE}"
-   echo "Last full dump of these files:" | tee -a "${LOGFILE}"
-   ls -l /etc/tar-backup/misc.level-0 2>&1 | tee -a "${LOGFILE}"
-
-   rm -f /etc/tar-backup/temp.level-1 2>&1 | tee -a "${LOGFILE}"
-   cp /etc/tar-backup/misc.level-0 /etc/tar-backup/temp.level-1 2>&1 | tee -a "${LOGFILE}"
-
-   # Using `sh -c exec' causes nested quoting and shell substitution
-   # to be handled here in the same way rsh handles it.
-   sh -c "exec ${TAR_PART1} -f ${TAPE_FILE} ${TAR_PART2} ${TAR_PART3} ${BACKUP_FILES}" 2>&1 \
-    | tee -a "${LOGFILE}"
-
-   # This doesn't presently work, of course, because $? is set to the exit
-   # status of the last thing in the pipeline of the previous command,
-   # namely `tee'.  We really want the exit status of the sh command
-   # running tar, but getting this seems to be nontrivial.  --friedman
-   if [ $? -ne 0 ] ; then
-     echo "Backup of miscellaneous files failed." | tee -a "${LOGFILE}"
-     # I'm assuming that the tar will have written an empty
-     # file to the tape, otherwise I should do a cat here.
-   else
-     mv -f /etc/tar-backup/temp.level-1 /etc/tar-backup/misc.level-1 2>&1 | tee -a "${LOGFILE}"
-   fi
-   ${TAPE_STATUS} | tee -a "${LOGFILE}"
-else
-   echo "No miscellaneous files specified" | tee -a "${LOGFILE}"
-fi
-
-# Caveat: some versions of `mt' use `-t' instead of `-f'.
-mt -f "${TAPE_FILE}" rewind
-mt -f "${TAPE_FILE}" offl
+    else
+      mv -f /etc/tar-backup/temp.level-1 /etc/tar-backup/misc.level-1
+    fi
+    ${TAPE_STATUS}
+ else
+    echo "No miscellaneous files specified"
+ fi
+
+ # Caveat: some versions of `mt' use `-t' instead of `-f'.
+ mt -f "${TAPE_FILE}" rewind
+ mt -f "${TAPE_FILE}" offl
+
+) 2>&1 | tee -a "${LOGFILE}"
 
 echo "Sending the dump log to ${ADMINISTRATOR}"
 mail -s "Results of backup started ${startdate}" ${ADMINISTRATOR} < "${LOGFILE}"
index c65ccd0214e9cac0087b1a80c5b2e109dde9b002..663f1888a232d52e19381ee6c129d72a91e08f8c 100644 (file)
--- a/src/gnu.c
+++ b/src/gnu.c
@@ -266,7 +266,7 @@ collect_and_sort_names()
                n->found=0;
        }
        if(gnu_dumpfile)
-               write_dir_file(gnu_dumpfile);
+               write_dir_file();
 }
 
 int
index 55d1c66ebc7886484b238128045ae80b3fe7fea8..481f36ab3f4aaefbf80e85e5fa37e5fc144b1543 100644 (file)
@@ -19,6 +19,10 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 #include "pathmax.h"
 
+#ifdef __GNUC__
+#define alloca __builtin_alloca
+#endif
+
 #ifdef _POSIX_VERSION
 #include <sys/wait.h>
 #else /* !_POSIX_VERSION */
This page took 0.031539 seconds and 4 git commands to generate.