home | help
RESTORE(8)		     System Manager's Manual		      RESTORE(8)

NAME
     restore,  rrestore  -- restore files or file systems from backups made with
     dump

SYNOPSIS
     restore -i [-dhmNuvy] [-b blocksize] [-f file | -P pipecommand] [-s fileno]
     restore -R [-dNuvy] [-b blocksize] [-f file | -P pipecommand] [-s fileno]
     restore -r [-dNuvy] [-b blocksize] [-f file | -P pipecommand] [-s fileno]
     restore -t [-dhNuvy] [-b blocksize] [-f file | -P pipecommand] [-s fileno]
	     [file ...]
     restore -x [-dhmNuvy] [-b blocksize] [-f file | -P pipecommand] [-s fileno]
	     [file ...]

     rrestore is an alternate name for restore.

     (The 4.3BSD option syntax is implemented for backward compatibility, but is
     not documented here.)

DESCRIPTION
     The restore utility performs the  inverse	function  of  dump(8).	 A  full
     backup  of a file system may be restored and subsequent incremental backups
     layered on top of it.  Single files and directory subtrees may be	restored
     from  full or partial backups.  The restore utility works across a network;
     to do this see the -f and -P flags described below.  Other arguments to the
     command are file or directory names specifying the files that are to be re-
     stored.  Unless the -h flag is specified (see below), the appearance  of  a
     directory name refers to the files and (recursively) subdirectories of that
     directory.

     Exactly one of the following flags is required:

     -i      This mode allows interactive restoration of files from a dump.  Af-
	     ter  reading  in  the  directory information from the dump, restore
	     provides a shell like interface that allows the user to move around
	     the directory tree selecting files to be extracted.  The  available
	     commands  are given below; for those commands that require an argu-
	     ment, the default is the current directory.

	     add [arg]	 The current directory or specified argument is added to
			 the list of files to be extracted.  If a  directory  is
			 specified, then it and all its descendents are added to
			 the extraction list (unless the -h flag is specified on
			 the  command  line).	Files that are on the extraction
			 list are prepended with a ``*'' when they are listed by
			 ls.

	     cd arg	 Change the current working directory to  the  specified
			 argument.

	     delete [arg]
			 The  current directory or specified argument is deleted
			 from the list of files to be extracted.  If a directory
			 is specified, then  it  and  all  its	descendents  are
			 deleted from the extraction list (unless the -h flag is
			 specified on the command line).  The most expedient way
			 to extract most of the files from a directory is to add
			 the  directory  to  the extraction list and then delete
			 those files that are not needed.

	     extract	 All the files that are on the extraction list	are  ex-
			 tracted  from	the  dump.  The restore utility will ask
			 which volume the user wishes to mount.  The fastest way
			 to extract a few files is to start with the  last  vol-
			 ume, and work towards the first volume.

	     help	 List a summary of the available commands.

	     ls [arg]	 List  the current or specified directory.  Entries that
			 are directories are appended  with  a	``/''.	 Entries
			 that have been marked for extraction are prepended with
			 a  ``*''.   If the verbose flag is set the inode number
			 of each entry is also listed.

	     pwd	 Print the full pathname of the current  working  direc-
			 tory.

	     quit	 Exit  immediately,  even  if the extraction list is not
			 empty.

	     setmodes	 All the directories that have been added to the extrac-
			 tion list have their owner, modes, and times set; noth-
			 ing is extracted from the dump.   This  is  useful  for
			 cleaning  up  after  a  restore  has  been  prematurely
			 aborted.

	     verbose	 The sense of the -v flag is  toggled.	 When  set,  the
			 verbose  flag	causes	the ls command to list the inode
			 numbers of all entries.   It  also  causes  restore  to
			 print	out  information  about  each  file as it is ex-
			 tracted.

	     what	 Display dump header information, which includes:  date,
			 level,  label,  and  the  file system and host dump was
			 made from.

     -R      Request a particular tape of a multi volume set on which to restart
	     a full restore (see the -r flag below).  This is useful if the  re-
	     store has been interrupted.

     -r      Restore  (rebuild a file system).	The target file system should be
	     made pristine with newfs(8), mounted and the user cd(1)'d into  the
	     pristine file system before starting the restoration of the initial
	     level  0 backup.  If the level 0 restores successfully, the -r flag
	     may be used to restore any necessary incremental backups on top  of
	     the  level 0.  The -r flag precludes an interactive file extraction
	     and can be detrimental to one's health if not used  carefully  (not
	     to mention the disk).  An example:

		   newfs /dev/da0s1a
		   mount /dev/da0s1a /mnt
		   cd /mnt

		   restore rf /dev/sa0

	     Note  that restore leaves a file restoresymtable in the root direc-
	     tory to pass information between incremental restore passes.   This
	     file should be removed when the last incremental has been restored.

	     The restore utility , in conjunction with newfs(8) and dump(8), may
	     be  used  to  modify  file  system parameters such as size or block
	     size.

     -t      The names of the specified files are listed if they  occur  on  the
	     backup.   If  no file argument is given, then the root directory is
	     listed, which results in the entire content  of  the  backup  being
	     listed,  unless  the  -h flag has been specified.	Note that the -t
	     flag replaces the function of the old dumpdir(8) program.

     -x      The named files are read from the given media.   If  a  named  file
	     matches  a  directory  whose  contents are on the backup and the -h
	     flag is not specified, the directory is recursively extracted.  The
	     owner, modification time, and mode are restored (if possible).   If
	     no  file  argument  is given, then the root directory is extracted,
	     which results in the entire content of the backup being  extracted,
	     unless the -h flag has been specified.

     The following additional options may be specified:

     -b blocksize
	     The  number  of kilobytes per dump record.  If the -b option is not
	     specified, restore tries to determine the media block size  dynami-
	     cally.

     -d      Sends verbose debugging output to the standard error.

     -f file
	     Read  the	backup from file; file may be a special device file like
	     /dev/sa0 (a tape drive), /dev/da1c  (a  disk  drive),  an	ordinary
	     file,  or	`-' (the standard input).  If the name of the file is of
	     the form "host:file", or "user@host:file", restore reads  from  the
	     named file on the remote host using rmt(8).

     -P pipecommand
	     Use  popen(3)  to	execute  the  sh(1)  script  string  defined  by
	     pipecommand as the input for every  volume  in  the  backup.   This
	     child  pipeline's	stdout	(/dev/fd/1) is redirected to the restore
	     input stream, and the environment variable RESTORE_VOLUME is set to
	     the current volume number being read.  The  pipecommand  script  is
	     started each time a volume is loaded, as if it were a tape drive.

     -h      Extract  the actual directory, rather than the files that it refer-
	     ences.  This prevents hierarchical restoration of complete subtrees
	     from the dump.

     -m      Extract by inode numbers rather than by file name.  This is  useful
	     if only a few files are being extracted, and one wants to avoid re-
	     generating the complete pathname to the file.

     -N      Do  the  extraction normally, but do not actually write any changes
	     to disk.  This can be used to check the integrity of dump media  or
	     other test purposes.

     -s fileno
	     Read  from the specified fileno on a multi-file tape.  File number-
	     ing starts at 1.

     -u      When creating certain types of files, restore may generate a  warn-
	     ing  diagnostic  if they already exist in the target directory.  To
	     prevent this, the -u (unlink) flag causes restore to remove old en-
	     tries before attempting to create new ones.

     -v      Normally restore does its work silently.	The  -v  (verbose)  flag
	     causes  it  to type the name of each file it treats preceded by its
	     file type.

     -y      Do not ask the user whether to abort the restore in the event of an
	     error.  Always try to skip over the bad block(s) and continue.

ENVIRONMENT
     TAPE    Device from which to read backup.

     TMPDIR  Name of directory where temporary files are to be created.

FILES
     /dev/sa0		the default tape drive
     /tmp/rstdir*	file containing directories on the tape.
     /tmp/rstmode*	owner, mode, and time stamps for directories.
     ./restoresymtable	information passed between incremental restores.

DIAGNOSTICS
     The restore utility complains if it gets a read  error.   If  -y  has  been
     specified,  or  the user responds `y', restore will attempt to continue the
     restore.

     If a backup was made using more than one tape volume, restore  will  notify
     the  user	when  it is time to mount the next volume.  If the -x or -i flag
     has been specified, restore will also ask which volume the user  wishes  to
     mount.   The  fastest  way to extract a few files is to start with the last
     volume, and work towards the first volume.

     There are numerous consistency checks that can be listed by restore.   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, and from using a dump tape created on an ac-
	     tive file system.

     expected next file <inumber>, got <inumber>
	     A file that was not listed in the directory showed  up.   This  can
	     occur when using a dump created on an active file system.

     Incremental dump too low
	     When  doing incremental restore, a dump that was written before the
	     previous incremental dump, or that has too low an incremental level
	     has been loaded.

     Incremental dump too high
	     When doing incremental restore, a dump that does not begin its cov-
	     erage where the previous incremental dump left off, or that has too
	     high an incremental level has been loaded.

     Tape read error while restoring <filename>
     Tape read error while skipping over inode <inumber>
     Tape read error while trying to resynchronize
	     A tape (or other media) 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 restore, skipped <num> blocks
	     After a dump read error, restore may have to resynchronize  itself.
	     This message lists the number of blocks that were skipped over.

SEE ALSO
     dump(8), mount(8), newfs(8), rmt(8)

HISTORY
     The restore utility appeared in 4.2BSD.

BUGS
     The  restore  utility can get confused when doing incremental restores from
     dumps that were made on active file systems.

     A level zero dump must be done after a full restore.  Because restore  runs
     in  user  code,  it  has no control over inode allocation; thus a full dump
     must be done to get a new set of directories reflecting the new inode  num-
     bering, even though the contents of the files is unchanged.

     To  do  a network restore, you have to run restore as root.  This is due to
     the previous security history of dump and restore.  (restore is written  to
     be  setuid  root, but we are not certain all bugs are gone from the restore
     code - run setuid at your own risk.)

     The temporary files /tmp/rstdir* and /tmp/rstmode*  are  generated  with  a
     unique  name  based  on  the  date  of the dump and the process ID (see mk-
     temp(3)), except for when -r or -R is  used.   Because  -R  allows  you  to
     restart  a -r operation that may have been interrupted, the temporary files
     should be the same across different processes.  In  all  other  cases,  the
     files are unique because it is possible to have two different dumps started
     at  the  same  time,  and separate operations should not conflict with each
     other.

FreeBSD 5.4			   May 1, 1995			      RESTORE(8)

home | help