Correct BSD License clause numbering from 1-2-4 to 1-2-3.
[dragonfly.git] / sbin / restore / restore.8
1 .\" Copyright (c) 1985, 1991, 1993
2 .\"     The Regents of the University of California.  All rights reserved.
3 .\"
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
6 .\" are met:
7 .\" 1. Redistributions of source code must retain the above copyright
8 .\"    notice, this list of conditions and the following disclaimer.
9 .\" 2. Redistributions in binary form must reproduce the above copyright
10 .\"    notice, this list of conditions and the following disclaimer in the
11 .\"    documentation and/or other materials provided with the distribution.
12 .\" 3. Neither the name of the University nor the names of its contributors
13 .\"    may be used to endorse or promote products derived from this software
14 .\"    without specific prior written permission.
15 .\"
16 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
17 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 .\" SUCH DAMAGE.
27 .\"
28 .\"     @(#)restore.8   8.4 (Berkeley) 5/1/95
29 .\" $FreeBSD: src/sbin/restore/restore.8,v 1.20.2.15 2003/02/23 22:47:13 trhodes Exp $
30 .\"
31 .Dd July 5, 2012
32 .Dt RESTORE 8
33 .Os
34 .Sh NAME
35 .Nm restore ,
36 .Nm rrestore
37 .Nd "restore UFS file systems or files from backups made with dump"
38 .Sh SYNOPSIS
39 .Nm
40 .Fl i
41 .Op Fl cdhkmNuvy
42 .Op Fl b Ar blocksize
43 .Op Fl f Ar file
44 .Op Fl s Ar fileno
45 .Nm
46 .Fl R
47 .Op Fl cdkNuvy
48 .Op Fl b Ar blocksize
49 .Op Fl f Ar file
50 .Op Fl s Ar fileno
51 .Nm
52 .Fl r
53 .Op Fl cdkNuvy
54 .Op Fl b Ar blocksize
55 .Op Fl f Ar file
56 .Op Fl s Ar fileno
57 .Nm
58 .Fl t
59 .Op Fl cdhkNuvy
60 .Op Fl b Ar blocksize
61 .Op Fl f Ar file
62 .Op Fl s Ar fileno
63 .Op Ar
64 .Nm
65 .Fl x
66 .Op Fl cdhkmNuvy
67 .Op Fl b Ar blocksize
68 .Op Fl f Ar file
69 .Op Fl s Ar fileno
70 .Op Ar
71 .Sh DESCRIPTION
72 The
73 .Nm
74 utility performs the inverse function of
75 .Xr dump 8 .
76 A full backup of a file system may be restored and
77 subsequent incremental backups layered on top of it.
78 Single files and
79 directory subtrees may be restored from full or partial
80 backups.
81 The
82 .Nm
83 utility works across a network;
84 to do this see the
85 .Fl f
86 flag described below.
87 Other arguments to the command are file or directory
88 names specifying the files that are to be restored.
89 Unless the
90 .Fl h
91 flag is specified (see below),
92 the appearance of a directory name refers to
93 the files and (recursively) subdirectories of that directory.
94 .Pp
95 .Nm
96 may also be invoked as
97 .Nm rrestore .
98 The
99 .Bx 4.3
100 option syntax is implemented for backward compatibility, but
101 is not documented here.
102 .Pp
103 Exactly one of the following flags is required:
104 .Bl -tag -width Ds
105 .It Fl i
106 This mode allows interactive restoration of files from a dump.
107 After reading in the directory information from the dump,
108 .Nm
109 provides a shell like interface that allows the user to move
110 around the directory tree selecting files to be extracted.
111 The available commands are given below;
112 for those commands that require an argument,
113 the default is the current directory.
114 .Bl -tag -width Fl
115 .It Ic add Op Ar arg
116 The current directory or specified argument is added to the list of
117 files to be extracted.
118 If a directory is specified, then it and all its descendants are
119 added to the extraction list
120 (unless the
121 .Fl h
122 flag is specified on the command line).
123 Files that are on the extraction list are prepended with a ``*''
124 when they are listed by
125 .Ic ls .
126 .It Ic \&cd Ar arg
127 Change the current working directory to the specified argument.
128 .It Ic delete Op Ar arg
129 The current directory or specified argument is deleted from the list of
130 files to be extracted.
131 If a directory is specified, then it and all its descendants are
132 deleted from the extraction list
133 (unless the
134 .Fl h
135 flag is specified on the command line).
136 The most expedient way to extract most of the files from a directory
137 is to add the directory to the extraction list and then delete
138 those files that are not needed.
139 .It Ic extract
140 All the files that are on the extraction list are extracted
141 from the dump.
142 The
143 .Nm
144 utility will ask which volume the user wishes to mount.
145 The fastest way to extract a few files is to
146 start with the last volume, and work towards the first volume.
147 .It Ic help
148 List a summary of the available commands.
149 .It Ic \&ls Op Ar arg
150 List the current or specified directory.
151 Entries that are directories are appended with a ``/''.
152 Entries that have been marked for extraction are prepended with a ``*''.
153 If the verbose
154 flag is set the inode number of each entry is also listed.
155 .It Ic pwd
156 Print the full pathname of the current working directory.
157 .It Ic quit
158 Exit immediately,
159 even if the extraction list is not empty.
160 .It Ic setmodes
161 All the directories that have been added to the extraction list
162 have their owner, modes, and times set;
163 nothing is extracted from the dump.
164 This is useful for cleaning up after a restore has been prematurely aborted.
165 .It Ic verbose
166 The sense of the
167 .Fl v
168 flag is toggled.
169 When set, the verbose flag causes the
170 .Ic ls
171 command to list the inode numbers of all entries.
172 It also causes
173 .Nm
174 to print out information about each file as it is extracted.
175 .It Ic what
176 Display dump header information, which includes: date,
177 level, label, and the file system and host dump was made
178 from.
179 .El
180 .It Fl R
181 Request a particular tape of a multi volume set on which to restart
182 a full restore
183 (see the
184 .Fl r
185 flag below).
186 This is useful if the restore has been interrupted.
187 .It Fl r
188 Restore (rebuild a file system).
189 The target file system should be made pristine with
190 .Xr newfs 8 ,
191 mounted and the user
192 .Xr cd 1 Ns 'd
193 into the pristine file system
194 before starting the restoration of the initial level 0 backup.
195 If the
196 level 0 restores successfully, the
197 .Fl r
198 flag may be used to restore
199 any necessary incremental backups on top of the level 0.
200 The
201 .Fl r
202 flag precludes an interactive file extraction and can be
203 detrimental to one's health if not used carefully (not to mention
204 the disk). An example:
205 .Bd -literal -offset indent
206 newfs /dev/da0s1a
207 mount /dev/da0s1a /mnt
208 cd /mnt
209
210 restore rf /dev/sa0
211 .Ed
212 .Pp
213 Note that
214 .Nm
215 leaves a file
216 .Pa restoresymtable
217 in the root directory to pass information between incremental
218 restore passes.
219 This file should be removed when the last incremental has been
220 restored.
221 .Pp
222 The
223 .Nm
224 utility ,
225 in conjunction with
226 .Xr newfs 8
227 and
228 .Xr dump 8 ,
229 may be used to modify file system parameters
230 such as size or block size.
231 .It Fl t
232 The names of the specified files are listed if they occur
233 on the backup.
234 If no file argument is given,
235 then the root directory is listed,
236 which results in the entire content of the
237 backup being listed,
238 unless the
239 .Fl h
240 flag has been specified.
241 Note that the
242 .Fl t
243 flag replaces the function of the old
244 .Xr dumpdir 8
245 program.
246 .It Fl x
247 The named files are read from the given media.
248 If a named file matches a directory whose contents
249 are on the backup
250 and the
251 .Fl h
252 flag is not specified,
253 the directory is recursively extracted.
254 The owner, modification time,
255 and mode are restored (if possible).
256 If no file argument is given,
257 then the root directory is extracted,
258 which results in the entire content of the
259 backup being extracted,
260 unless the
261 .Fl h
262 flag has been specified.
263 .El
264 .Pp
265 The following additional options may be specified:
266 .Bl -tag -width Ds
267 .It Fl b Ar blocksize
268 The number of kilobytes per dump record.
269 If the
270 .Fl b
271 option is not specified,
272 .Nm
273 tries to determine the media block size dynamically.
274 .It Fl c
275 Normally,
276 .Nm
277 will try to determine dynamically whether the dump was made from an
278 old (pre-4.4) or new format file system.  The
279 .Fl c
280 flag disables this check, and only allows reading a dump in the old
281 format.
282 .It Fl d
283 Sends verbose debugging output to the standard error.
284 .It Fl f Ar file
285 Read the backup from
286 .Ar file ;
287 .Ar file
288 may be a special device file
289 like
290 .Pa /dev/sa0
291 (a tape drive),
292 .Pa /dev/da1c
293 (a disk drive),
294 an ordinary file,
295 or
296 .Sq Fl
297 (the standard input).
298 If the name of the file is of the form
299 .Dq host:file ,
300 or
301 .Dq user@host:file ,
302 .Nm
303 reads from the named file on the remote host using
304 .Xr rmt 8 .
305 .Pp
306 .It Fl k
307 Use Kerberos authentication when contacting the remote tape server.
308 (Only available if this options was enabled when
309 .Nm
310 was compiled.)
311 .Pp
312 .It Fl h
313 Extract the actual directory,
314 rather than the files that it references.
315 This prevents hierarchical restoration of complete subtrees
316 from the dump.
317 .It Fl m
318 Extract by inode numbers rather than by file name.
319 This is useful if only a few files are being extracted,
320 and one wants to avoid regenerating the complete pathname
321 to the file.
322 .It Fl N
323 Do the extraction normally, but do not actually write any changes
324 to disk.
325 This can be used to check the integrity of dump media
326 or other test purposes.
327 .It Fl s Ar fileno
328 Read from the specified
329 .Ar fileno
330 on a multi-file tape.
331 File numbering starts at 1.
332 .It Fl u
333 When creating certain types of files, restore may generate a warning
334 diagnostic if they already exist in the target directory.
335 To prevent this, the
336 .Fl u
337 (unlink) flag causes restore to remove old entries before attempting
338 to create new ones.
339 .It Fl v
340 Normally
341 .Nm
342 does its work silently.
343 The
344 .Fl v
345 (verbose)
346 flag causes it to type the name of each file it treats
347 preceded by its file type.
348 .It Fl y
349 Do not ask the user whether to abort the restore in the event of an error.
350 Always try to skip over the bad block(s) and continue.
351 .El
352 .Sh ENVIRONMENT
353 .Bl -tag -width ".Ev TMPDIR"
354 .It Ev TAPE
355 Device from which to read backup.
356 .It Ev TMPDIR
357 Name of directory where temporary files are to be created.
358 .El
359 .Sh FILES
360 .Bl -tag -width "./restoresymtable" -compact
361 .It Pa /dev/sa0
362 the default tape drive
363 .It Pa /tmp/rstdir*
364 file containing directories on the tape.
365 .It Pa /tmp/rstmode*
366 owner, mode, and time stamps for directories.
367 .It Pa \&./restoresymtable
368 information passed between incremental restores.
369 .El
370 .Sh DIAGNOSTICS
371 The
372 .Nm
373 utility complains if it gets a read error.
374 If
375 .Fl y
376 has been specified, or the user responds
377 .Ql y ,
378 .Nm
379 will attempt to continue the restore.
380 .Pp
381 If a backup was made using more than one tape volume,
382 .Nm
383 will notify the user when it is time to mount the next volume.
384 If the
385 .Fl x
386 or
387 .Fl i
388 flag has been specified,
389 .Nm
390 will also ask which volume the user wishes to mount.
391 The fastest way to extract a few files is to
392 start with the last volume, and work towards the first volume.
393 .Pp
394 There are numerous consistency checks that can be listed by
395 .Nm .
396 Most checks are self-explanatory or can ``never happen''.
397 Common errors are given below.
398 .Pp
399 .Bl -tag -width Ds -compact
400 .It Converting to new file system format.
401 A dump tape created from the old file system has been loaded.
402 It is automatically converted to the new file system format.
403 .Pp
404 .It <filename>: not found on tape
405 The specified file name was listed in the tape directory,
406 but was not found on the tape.
407 This is caused by tape read errors while looking for the file,
408 and from using a dump tape created on an active file system.
409 .Pp
410 .It expected next file <inumber>, got <inumber>
411 A file that was not listed in the directory showed up.
412 This can occur when using a dump created on an active file system.
413 .Pp
414 .It Incremental dump too low
415 When doing incremental restore,
416 a dump that was written before the previous incremental dump,
417 or that has too low an incremental level has been loaded.
418 .Pp
419 .It Incremental dump too high
420 When doing incremental restore,
421 a dump that does not begin its coverage where the previous incremental
422 dump left off,
423 or that has too high an incremental level has been loaded.
424 .Pp
425 .It Tape read error while restoring <filename>
426 .It Tape read error while skipping over inode <inumber>
427 .It Tape read error while trying to resynchronize
428 A tape (or other media) read error has occurred.
429 If a file name is specified,
430 then its contents are probably partially wrong.
431 If an inode is being skipped or the tape is trying to resynchronize,
432 then no extracted files have been corrupted,
433 though files may not be found on the tape.
434 .Pp
435 .It resync restore, skipped <num> blocks
436 After a dump read error,
437 .Nm
438 may have to resynchronize itself.
439 This message lists the number of blocks that were skipped over.
440 .El
441 .Sh SEE ALSO
442 .Xr UFS 5 ,
443 .Xr dump 8 ,
444 .Xr mount 8 ,
445 .Xr newfs 8 ,
446 .Xr rmt 8
447 .Sh HISTORY
448 The
449 .Nm
450 utility appeared in
451 .Bx 4.2 .
452 .Sh BUGS
453 The
454 .Nm
455 utility can get confused when doing incremental restores from
456 dumps that were made on active file systems.
457 .Pp
458 A level zero dump must be done after a full restore.
459 Because restore runs in user code,
460 it has no control over inode allocation;
461 thus a full dump must be done to get a new set of directories
462 reflecting the new inode numbering,
463 even though the contents of the files is unchanged.
464 .Pp
465 To do a network restore, you have to run restore as root.  This is due
466 to the previous security history of dump and restore.  (restore is
467 written to be setuid root, but we are not certain all bugs are gone
468 from the restore code - run setuid at your own risk.)
469 .Pp
470 The temporary files
471 .Pa /tmp/rstdir*
472 and
473 .Pa /tmp/rstmode*
474 are generated with a unique name based on the date of the dump
475 and the process ID (see
476 .Xr mktemp 3 ) ,
477 except for when
478 .Fl r
479 or
480 .Fl R
481 is used.
482 Because
483 .Fl R
484 allows you to restart a
485 .Fl r
486 operation that may have been interrupted, the temporary files should
487 be the same across different processes.
488 In all other cases, the files are unique because it is possible to
489 have two different dumps started at the same time, and separate
490 operations shouldn't conflict with each other.