UFSRESTORE(8)        Maintenance Commands and Procedures       UFSRESTORE(8)
NAME
       ufsrestore - incremental file system restore
SYNOPSIS
       /usr/sbin/ufsrestore i | r | R | t | x [abcdfhlmostvyLT]
            [
archive_file] [
factor] [
dumpfile] [
n] [
label]
            [
timeout] [
filename]...
DESCRIPTION
       The 
ufsrestore utility restores files from backup media created with
       the 
ufsdump command. 
ufsrestores's actions are controlled by the 
key       argument. The 
key is exactly one 
function letter (
i, 
r, 
R, 
t, or 
x)
       and zero or more 
function modifiers (letters). The 
key string
       contains no 
SPACE characters. Function modifier arguments are listed
       on the command line in the same order as their corresponding function
       modifiers appear in the 
key string.       
filename arguments which appear on the command line, or as arguments
       to an interactive command, are treated as shell 
glob patterns by the       
x and 
t functions; any files or directories matching the patterns are
       selected. The metacharacters 
*, 
?, and 
[ ] must be protected from the
       shell if they appear on the command line. There is no way to quote
       these metacharacters to explicitly match them in a filename.
       The temporary files 
rstdir* and 
rstmode* are placed in 
/tmp by
       default. If the environment variable 
TMPDIR is defined with a non-
       empty value, that location is used instead of 
/tmp.
OPTIONS
   Function Letters
       You must specify one (and only one) of the function letters listed
       below. Note that 
i, 
x, and 
r are intended to restore files into an
       empty directory. The 
R function is intended for restoring into a
       populated directory.       
i            Interactive. After reading in the directory information from the
            media, 
ufsrestore invokes a shell-like interface that allows you
            to browse through the dump file's directory hierarchy and select
            individual files to be extracted. Restoration has the same
            semantics as 
x (see below). See 
Interactive Commands, below, for
            a description of available commands.       
r            Recursive. Starting with an empty directory and a level 0 dump,
            the 
r function recreates the filesystem relative to the current
            working directory, exactly as it appeared when the dump was
            made. Information used to restore incremental dumps on top of
            the full dump (for example, 
restoresymtable) is also included.
            Several 
ufsrestore runs are typical, one for each higher level
            of dump (0, 1, ..., 9).  Files that were deleted between the
            level 0 and a subsequent incremental dump will not exist after
            the final restore. To completely restore a file system, use the            
r function restore the level 0 dump, and again for each
            incremental dump. Although  this function letter is intended for
            a complete restore onto a new file system (one just created with            
newfs(8)), if the file  system contains files not on the backup
            media, they are preserved.       
R            Resume restoring. If an 
r-mode 
ufsrestore was interrupted, this
            function prompts for the volume from which to resume restoring
            and continues the restoration from where it was left off.
            Otherwise identical to 
r.       
t            Table of contents. List each 
filename that appears on the media.
            If no 
filename argument is given, the root directory is listed.
            This results in a list of all files on the media, unless the 
h            function modifier is in effect. The table of contents is taken
            from the media or from the specified archive file, when the 
a            function modifier is used. The 
a function modifier is mutually
            exclusive with the 
x and 
r function letters.       
x            Extract the named files from the media. Files are restored to
            the same relative locations that they had in the original file
            system.
            If the 
filename argument matches a directory whose contents were
            written onto the media, and the 
h modifier is not in effect, the
            directory is recursively extracted, relative to the current
            directory, which is expected to be empty. For each file, the
            owner, modification time, and mode are restored (if possible).
            If you omit the 
filename argument or specify 
., the root
            directory is extracted. This results in the entire tape being
            extracted, unless the 
h modifier is in effect. . With the 
x            function, existing files are overwritten and 
ufsrestore displays
            the names of the overwritten files. Overwriting a currently-
            running executable can have unfortunate consequences.
            Use the 
x option to restore partial file system dumps, as they
            are (by definition) not entire file systems.
   Function Modifiers
       a archive_file                          Read the table of contents from 
archive_file                          instead of the media. This function modifier can
                          be used in combination with the 
t, 
i, or 
x                          function letters, making it possible to check
                          whether files are on the media without having to
                          mount the media. When used with the 
x and
                          interactive (
i) function letters, it prompts for
                          the volume containing the file(s) before
                          extracting them.       
b factor                          Blocking factor. Specify the blocking factor for
                          tape reads. For variable length 
SCSI tape devices,
                          unless the data was written with the default
                          blocking factor, a blocking factor at least as
                          great as that used to write the tape must be used;
                          otherwise, an error will be generated. Note that a
                          tape block is 512 bytes. Refer to the man page for
                          your specific tape driver for the maximum blocking
                          factor.       
c                          Convert the contents of the media in 4.1BSD format
                          to the new 
ufs file system format.       
d                          Debug. Turn on debugging output.       
f dump_file                          Use 
dump_file instead of 
/dev/rmt/0 as the file to
                          restore from.  Typically 
dump_file specifies a
                          tape or diskette drive. If 
dump_file is specified
                          as `
-', 
ufsrestore reads from the standard input.
                          This allows 
ufsdump(8) and 
ufsrestore to be used
                          in a pipeline to copy a file system:
                            example# ufsdump 0f - /dev/rdsk/c0t0d0s7 \
                             | (cd /home;ufsrestore xf -)
                          If the name of the file is of the form                          
machine:device, the restore is done from the
                          specified machine over the network using 
rmt(8).
                          Since 
ufsrestore is normally run by root, the name
                          of the local machine must appear in the 
/.rhosts                          file of the remote machine. If the file is
                          specified as 
user@machine:device, 
ufsrestore will
                          attempt to execute as the specified user on the
                          remote machine. The specified user must have a                          
.rhosts file on the remote machine that allows the
                          user invoking the command from the local machine
                          to access the remote machine.       
h                          Extract or list the actual directory, rather than
                          the files that it references.  This prevents
                          hierarchical restoration of complete subtrees from
                          the tape.       
l                          Autoload. When the end-of-tape is reached before
                          the restore is complete, take the drive off-line
                          and wait up to two minutes (the default, see the 
T                          function modifier) for the tape drive to be ready
                          again. This gives autoloading (stackloader) tape
                          drives a chance to load a new tape. If the drive
                          is ready within two minutes, continue. If it is
                          not, prompt for another tape and wait.       
L label                          The label that should appear in the header of the
                          dump file. If the labels do not match, 
ufsrestore                          issues a diagnostic and exits. The tape label is
                          specific to the 
ufsdump tape format, and bears no
                          resemblance to 
IBM or 
ANSI-standard tape labels.       
m                          Extract by inode numbers rather than by filename
                          to avoid regenerating complete pathnames.
                          Regardless of where the files are located in the
                          dump hierarchy, they are restored into the current
                          directory and renamed with their inode number.
                          This is useful if only a few files are being
                          extracted.       
o                          Offline. Take the drive off-line when the restore
                          is complete or the end-of-media is reached and
                          rewind the tape, or eject the diskette. In the
                          case of some autoloading 8mm drives, the tape is
                          removed from the drive automatically.       
s n                          Skip to the 
nth file when there are multiple dump
                          files on the same tape.  For example, the command:
                            example# ufsrestore xfs /dev/rmt/0hn 5
                          would position you to the fifth file on the tape
                          when reading volume 1 of the dump. If a dump
                          extends over more than one volume, all volumes
                          except the first are assumed to start at position
                          0, no matter what "
s n" value is specified.
                          If "
s n" is specified, the backup media must be at                          
BOT (beginning of tape). Otherwise, the initial
                          positioning to read the table of contents will
                          fail, as it is performed by skipping the tape
                          forward 
n-1 files rather than by using absolute
                          positioning. This is because on some devices
                          absolute positioning is very time consuming.       
T timeout [hms]                          Sets the amount of time to wait for an autoload
                          command to complete. This function modifier is
                          ignored unless the 
l function modifier has also
                          been specified. The default timeout period is two
                          minutes. The time units may be specified as a
                          trailing 
h (hours), 
m (minutes), or 
s (seconds).
                          The default unit is minutes.       
v                          Verbose. 
ufsrestore displays the name and inode
                          number of each file it restores, preceded by its
                          file type.       
y                          Do not ask whether to abort the restore in the
                          event of tape errors.  
ufsrestore tries to skip
                          over the bad tape block(s) and continue as best it
                          can.
   Interactive Commands
       ufsrestore enters interactive mode when invoked with the 
i function
       letters. Interactive commands are reminiscent of the shell. For those
       commands that accept an argument, the default is the current
       directory. The interactive options are:       
add [filename]
                             Add the named file or directory to the list of
                             files to extract. If a directory is specified,
                             add that directory and its files (recursively)
                             to the extraction list (unless the 
h modifier
                             is in effect).       
cd directory                             Change to 
directory (within the dump file).       
delete [filename]
                             Delete the current directory, or the named file
                             or directory from the list of files to extract.
                             If a directory is specified, delete that
                             directory and all its descendents from the
                             extraction list (unless the 
h modifier is in
                             effect). The most expedient way to extract a
                             majority of files from a directory is to add
                             that directory to the extraction list, and then
                             delete specific files to omit.       
extract                             Extract all files on the extraction list from
                             the dump media. 
ufsrestore asks which volume
                             the user wishes to mount. The fastest way to
                             extract a small number of files is to start
                             with the last volume and work toward the first.
                             If "
s n" is given on the command line, volume 1
                             will automatically be positioned to file 
n when
                             it is read.       
help                             Display a summary of the available commands.       
ls [directory]
                             List files in 
directory or the current
                             directory, represented by a `
.' (period).
                             Directories are appended with a `
/' (slash).
                             Entries marked for extraction are prefixed with
                             a `
*' (asterisk). If the verbose option is in
                             effect, inode numbers are also listed.       
marked [directory]
                             Like 
ls, except only files marked for
                             extraction are listed.       
pager                             Toggle the pagination of the output from the 
ls                             and 
marked commands. The pager used is that
                             defined by the 
PAGER environment variable, or                             
more(1) if that envar is not defined. The 
PAGER                             envar may include white-space-separated
                             arguments for the pagination program.       
pwd                             Print the full pathname of the current working
                             directory.       
quit                             ufsrestore exits immediately, even if the
                             extraction list is not empty.       
setmodes                             Prompts: 
set owner/mode for `
.' (period). Type                             
y for yes to set the mode (permissions, owner,
                             times) of the current directory `
.' (period)
                             into which files are being restored equal to
                             the mode of the root directory of the file
                             system from which they were dumped. Normally,
                             this is what you want when restoring a whole
                             file system, or restoring individual files into
                             the same locations from which they were dumped.
                             Type 
n for no, to leave the mode of the current
                             directory unchanged. Normally, this is what you
                             want when restoring part of a dump to a
                             directory other than the one from which the
                             files were dumped.       
setpager command                             Sets the command to use for paginating output
                             instead of the default or that inherited from
                             the environment. The 
command string may include
                             arguments in addition to the command itself.       
verbose                             Toggle the status of the 
v modifier. While 
v is
                             in effect, the 
ls command lists the inode
                             numbers of all entries, and 
ufsrestore displays
                             information about each file as it is extracted.       
what                             Display the dump header on the media.
OPERANDS
       The following operands are supported.       
filename                   Specifies the pathname of files (or directories) to be
                   restored to disk. Unless the 
h function modifier is also
                   used, a directory name refers to the files it contains,
                   and (recursively) its subdirectories and the files they
                   contain. 
filename is associated with either the 
x or 
t                   function letters, and must come last.
USAGE
       See 
largefile(7) for the description of the behavior of 
ufsrestore       when encountering files greater than or equal to 2 Gbyte (2^31
       bytes).
EXIT STATUS
       The following exit values are returned:       
0            Successful completion.       
1            An error occurred. Verbose messages are displayed.
ENVIRONMENT VARIABLES
       PAGER                 The command to use as a filter for paginating output. This
                 can also be used to specify the options to be used. Default
                 is 
more(1).       
TMPDIR                 Selects the directory for temporary files. Defaults to 
/tmp                 if not defined in the environment.
FILES
       /dev/rmt/0                              the default tape drive       
$TMPDIR/rstdir*                              file containing directories on the tape       
$TMPDIR/rstmode*                              owner, mode, and timestamps for directories       
./restoresymtable                              information passed between incremental
                              restores
SEE ALSO
       more(1), 
ufsdump(5), 
attributes(7), 
largefile(7), 
mkfs(8), 
mount(8),       
rmt(8), 
ufsdump(8)DIAGNOSTICS
       ufsrestore complains about bad option characters.
       Read errors result in complaints. If 
y has been specified, or the
       user responds 
y, 
ufsrestore will attempt to continue.
       If the dump extends over more than one tape, 
ufsrestore asks the user
       to change tapes. If the 
x or 
i function letter has been specified,       
ufsrestore also asks which volume the user wishes to mount. If the 
s       modifier has been specified, and volume 1 is mounted, it is
       automatically positioned to the indicated file.
       There are numerous consistency checks that can be listed by       
ufsrestore.  Most checks are self-explanatory or can "never happen".
       Common errors are given below.       
Converting to new file system format           A dump tape created from the old file system has been loaded. It
           is automatically converted to the new file system format.       
filename: not found on tape           The specified file name was listed in the tape directory, but was
           not found on the tape. This is caused by tape read errors while
           looking for the file, using a dump tape created on an active file
           system, or restoring a partial dump with the 
r function.       
expected next file inumber, got inumber           A file that was not listed in the directory showed up. This can
           occur when using a dump tape created on an active file system.       
Incremental tape too low           When doing an incremental restore, a tape that was written before
           the previous incremental tape, or that has too low an incremental
           level has been loaded.       
Incremental tape too high           When doing incremental restore, a tape that does not begin its
           coverage where the previous incremental tape left off, or one
           that has too high an incremental level has been loaded.       
media read error: invalid argument           Blocking factor specified for read is smaller than the blocking
           factor used to write data.       
Tape read error while restoring       Tape read error while skipping over inode inumber       Tape read error while trying to resynchronize       A tape read error has occurred           If a file name is specified, then its contents are probably
           partially wrong. If an inode is being skipped or the tape is
           trying to resynchronize, then no extracted files have been
           corrupted, though files may not be found on the tape.       
resync ufsrestore, skipped num           After a tape read error, 
ufsrestore may have to resynchronize
           itself.  This message lists the number of blocks that were
           skipped over.       
Incorrect tape label. Expected `foo', got `bar'.           The 
L option was specified, and its value did not match what was
           recorded in the header of the dump file.
NOTES
       ufsrestore can get confused when doing incremental restores from dump
       tapes that were made on active file systems.
       A  
level 0 dump must be done after a full restore. Because 
ufsrestore       runs in user mode, it has no control over inode allocation.  This
       means that 
ufsrestore repositions the files, although it does not
       change their contents. Thus, a full dump must be done to get a new
       set of directories reflecting the new file positions, so that later
       incremental dumps will be correct.
                              February 17, 2023                UFSRESTORE(8)