1 % bup-restore(1) Bup %BUP_VERSION%
2 % Avery Pennarun <apenwarr@gmail.com>
7 bup-restore - extract files from a backup set
11 bup restore [\--outdir=*outdir*] [-v] [-q] \<paths...\>;
15 `bup restore` extracts files from a backup set (created
16 with `bup-save`(1)) to the local filesystem.
18 The specified *paths* are of the form
19 /_branch_/_revision_/_path/to/file_. The components of the
23 : the name of the backup set to restore from; this
24 corresponds to the `--name` (`-n`) option to `bup save`.
27 : the revision of the backup set to restore. The
28 revision *latest* is always the most recent
29 backup on the given branch. You can discover other
30 revisions using `bup ls /branch`.
33 : the original absolute filesystem path to the file you
34 want to restore. For example, `/etc/passwd`.
36 Note: if the /path/to/file is a directory, `bup restore`
37 will restore that directory as well as recursively
38 restoring all its contents.
40 If /path/to/file is a directory ending in a slash (ie.
41 /path/to/dir/), `bup restore` will restore the children of
42 that directory directly to the current directory (or the
43 `--outdir`). If the directory does *not* end in a slash,
44 the children will be restored to a subdirectory of the
45 current directory. See the EXAMPLES section to see how
48 Whenever path metadata is available, `bup restore` will attempt to
49 restore it. When restoring ownership, bup implements tar/rsync-like
50 semantics. It will not try to restore the user unless running as
51 root, and it will fall back to the numeric uid or gid whenever the
52 metadata contains a user or group name that doesn't exist on the
53 current system. The use of user and group names can be disabled via
54 `--numeric-ids` (which can be important when restoring a chroot, for
55 example), and as a special case, a uid or gid of 0 will never be
58 Hardlinks will also be restored when possible, but at least currently,
59 no links will be made to targets outside the restore tree, and if the
60 restore tree spans a different arrangement of filesystems from the
61 save tree, some hardlink sets may not be completely restored.
63 Also note that changing hardlink sets on disk between index and save
64 may produce unexpected results. With the current implementation, bup
65 will attempt to recreate any given hardlink set as it existed at index
66 time, even if all of the files in the set weren't still hardlinked
67 (but were otherwise identical) at save time.
69 Note that during the restoration process, access to data within the
70 restore tree may be more permissive than it was in the original
71 source. Unless security is irrelevant, you must restore to a private
72 subdirectory, and then move the resulting tree to its final position.
73 See the EXAMPLES section for a demonstration.
77 -C, \--outdir=*outdir*
78 : create and change to directory *outdir* before
82 : restore numeric IDs (user, group, etc.) rather than names.
85 : increase log output. Given once, prints every
86 directory as it is restored; given twice, prints every
90 : don't show the progress meter. Normally, is stderr is
91 a tty, a progress display is printed that shows the
92 total number of files restored.
96 Create a simple test backup set:
99 $ bup save -n mybackup /etc/passwd /etc/profile
101 Restore just one file:
103 $ bup restore /mybackup/latest/etc/passwd
107 -rw-r--r-- 1 apenwarr apenwarr 1478 2010-09-08 03:06 passwd
109 Restore the whole directory (no trailing slash):
111 $ bup restore -C test1 /mybackup/latest/etc
120 Restore the whole directory (trailing slash):
122 $ bup restore -C test2 /mybackup/latest/etc/
130 Restore a tree without risk of unauthorized access:
132 # mkdir --mode 0700 restore-tmp
134 # bup restore -C restore-tmp /somebackup/latest/foo
137 # mv restore-tmp/foo somewhere
144 `bup-save`(1), `bup-ftp`(1), `bup-fuse`(1), `bup-web`(1)
148 Part of the `bup`(1) suite.