]>
Dogcows Code - chaz/tar/blob - scripts/restore.in
2 # This program is part of GNU tar
3 # Copyright (C) 2004, 2006 Free Software Foundation, Inc.
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 1, or (at your option)
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with this program; if not, write to the Free Software
17 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
20 # Load library routines
21 SYSCONFDIR
=${SYSCONFDIR-@sysconfdir@}
22 .
${LIBDIR-@libexecdir@}/backup.sh
26 usage: $PROGNAME [OPTIONS] [PATTERN [PATTERN...]]
29 -a, --all Restore all filesystems.
30 -l, --level=LEVEL Start restoring from the given backup LEVEL
31 (default $DUMP_LEVEL).
32 -v, --verbose[=LEVEL] Set verbosity level. Default 100.
34 Informational options:
35 -h, --help Display this help message.
36 -V, --version Display program version.
38 Send bug reports to @PACKAGE_BUGREPORT@.
48 if [ -z "$prev" ]; then
50 optarg
=`expr "x$opt" : 'x[^=]*=\(.*\)'`
60 --l=*|--le=*|--lev=*|--leve=*|--level=*)
63 -l?
*) DUMP_LEVEL
=`expr $option : '-l\(.*\)'`;;
64 -l|--l|--le|--lev|--leve|--level)
67 --verb=*|--verbo=*|--verbos=*|--verbose=*)
70 -v|--verb|--verbo|--verbos|--verbose)
73 -v*) VERBOSE
=`expr $option : '-v\(.*\)'`;;
74 -V|--v|--ve|--ver|--vers|--versi|--versio|--version)
75 echo "restore (@PACKAGE_NAME@) @VERSION@"
78 -h|--h|--he|--hel|--help)
81 -*) bailout
"Unknown option $opt. Try $PROGNAME --help for more info.";;
82 *) if [ -z "$PATTERN" ]; then
85 PATTERN
="$PATTERN|$opt"
91 if [ -z "$RESTORE_ALL" ]; then
92 if [ -z "$PATTERN" ]; then
100 This file contains any messages produced by $PROGNAME.
102 It was created by GNU $PROGNAME, from @PACKAGE@ (@VERSION@).
103 Invocation command line was
111 fs
="`echo \"${1}\" | sed -e 's/^.*://'`"
113 fsname
="`echo \"${1}\" | sed -e 's/\//:/g'`"
114 remotehost
="`expr \"${1}\" : '\([^/][^/]*\):.*'`"
115 if [ -z "$remotehost" ]; then
116 remotehost
=$localhost
119 message
10 "fsname=$fsname"
120 message
10 "remotehost=$remotehost"
122 LOGPAT
="`level_log_name ${fsname} '[0-9]'`"
123 PREFIX
="`level_log_name ${fsname} ''`"
124 message
10 LOGPAT
=$LOGPAT
125 message
10 PREFIX
=$PREFIX
126 LEVELS
=`remote_run "${remotehost}" ls $LOGPAT |
127 sed "s,$PREFIX,," | sort -n`
128 message
10 "LEVELS=$LEVELS"
130 echo "Starting restore of ${1} at level $DUMP_LEVEL."
133 if [ $level -lt $DUMP_LEVEL ]; then
134 message
10 "Skipping level $level"
137 message
10 "Restoring level $level"
139 DATE
=`get_dump_time $level`
140 FILE
="`level_log_name ${fsname} ${level}`"
141 message
10 "FILE=$FILE"
143 LABEL
="`print_level $level` backup of ${fs} on ${remotehost} at ${DATE}"
144 ${RESTORE_BEGIN-:} $level $remotehost $fs $fsname
145 backup_host
${remotehost} \
146 "--listed=\"$FILE\"" \
147 "--label=\"$LABEL\"" \
149 ${RESTORE_END-:} $level $remotehost $fs $fsname
155 LOGPAT
="`level_log_name MISC '[0-9]'`"
156 PREFIX
="`level_log_name MISC ''`"
157 message
10 LOGPAT
=$LOGPAT
158 message
10 PREFIX
=$PREFIX
159 LEVELS
=`remote_run "${localhost}" ls $LOGPAT | sed "s,$PREFIX,," | sort -n`
160 message
10 "LEVELS=$LEVELS"
162 echo "Starting restore of miscellaneous files at level $DUMP_LEVEL."
165 if [ $level -lt $DUMP_LEVEL ]; then
166 message
10 "Skipping level $level"
169 message
10 "Restoring level $level"
171 DATE
=`get_dump_time $level`
172 FILE
="`level_log_name MISC ${level}`"
173 message
10 "FILE=$FILE"
175 LABEL
="`print_level $level` backup of miscellaneous files at ${DATE}"
176 ${RESTORE_BEGIN-:} $level $localhost MISC MISC
177 backup_host
${localhost} \
178 "--listed=\"$FILE\"" \
179 "--label=\"$LABEL\"" \
181 ${RESTORE_END-:} $level $localhost MISC MISC
185 # Operation Overwiew:
187 # 1. Determine the time of the last backup
188 # 2. Create list of incremental listings to process
189 # 3. For each filesystem:
190 # 3.1. Start at the requested dump level (default 0) and proceed up to
191 # the last available level:
192 # 3.1.1 Deduce the volume label
193 # 3.1.2. Invoke [rsh] tar --listed=FILE --label=LABEL [opts] -xf $TAPE_FILE
196 (message
1 "Preparing for restore"
198 message
1 "processing backup directories"
200 for dir
in ${BACKUP_DIRS}
202 message
1 "Processing $dir"
204 ${PATTERN-*}) restore_fs
$dir;;
208 if [ "x${BACKUP_FILES}" != "x" ] ; then
209 message
1 "processing miscellaneous files"
210 if [ -z "$PATTERN" ]; then
214 for file in ${BACKUP_FILES}
216 rel_file
=`expr $file : '/\(.*\)'`
218 $PATTERN) if [ -z "$RESTORE_FILES" ]; then
219 RESTORE_FILES
="$rel_file"
221 RESTORE_FILES
="$RESTORE_FILES $rel_file"
225 [ -z "$RESTORE_FILES" ] || restore_files
$RESTORE_FILES
228 fi) 2>&1 | tee -a "${LOGFILE}"
This page took 0.051693 seconds and 5 git commands to generate.