diff --git a/Documentation/btrfs-restore.asciidoc b/Documentation/btrfs-restore.asciidoc index ec3a08bc..41e90e2f 100644 --- a/Documentation/btrfs-restore.asciidoc +++ b/Documentation/btrfs-restore.asciidoc @@ -12,10 +12,22 @@ SYNOPSIS DESCRIPTION ----------- *btrfs restore* is used to try to salvage files from a damaged filesystem and -restore them into or just list the tree roots. +restore them into or just list the subvolume tree roots. The filesystem +image is not modified. -Since current `btrfs-check`(8) or `btrfs-rescue`(8) only has very limited usage, -*btrfs restore* is normally a better choice. +If the filesystem is damaged and cannot be repaired by the other tools +(`btrfs-check`(8) or `btrfs-rescue`(8)), *btrfs restore* could be used to +retrieve file data, as far as the metadata are readable. The checks done by +restore are less strict and the process is usually able to get far enough to +retrieve data from the whole filesystem. This comes at a cost that some data +might be incomplete or from older versions if they're available. + +There are several options to attempt restoration of various file metadata type. +You can try a dry run first to see how well the process goes and use further +options to extend the set of restored metadata. + +For images with damaged tree structures, there are several options to point the +process to some spare copy. NOTE: It is recommended to read the following btrfs wiki page if your data is not salvaged with default option: + @@ -24,54 +36,59 @@ https://btrfs.wiki.kernel.org/index.php/Restore OPTIONS ------- -s|--snapshots:: -get snapshots, btrfs restore skips snapshots in default. +get also snapshots that are skippped by default -x|--xattr:: -get extended attributes. +get extended attributes -m|--metadata:: -restore owner, mode and times. +restore owner, mode and times for files and directories -S|--symlinks:: -restore symbolic links as well as normal files. +restore symbolic links as well as normal files -v|--verbose:: -verbose. +be verbose and print what is being restored -i|--ignore-errors:: -ignore errors. +ignore errors during restoration and continue -o|--overwrite:: -overwrite directories/files in . +overwrite directories/files in , eg. for repeated runs -t :: -use to read root tree. +use to read the root tree -f :: -only restore files that are under specified root whose root bytenr is . +only restore files that are under specified subvolume root pointed by -u|--super :: -use given superblock mirror identified by , it can be 0,1,2. +use given superblock mirror identified by , it can be 0,1 or 2 -r|--root :: -only restore files that are under specified root whose objectid is . +only restore files that are under a specified subvolume whose objectid is -d:: -find dir. +find directory -l|--list-roots:: -list tree roots. +list subvolume tree roots, can be used as argument for '-r' -D|--dry-run:: -dry run (only list files that would be recovered). +dry run (only list files that would be recovered) --path-regex :: -restore only filenames matching regex, you have to use following syntax (possibly quoted): +restore only filenames matching a regular expression (`regex`(7)) with a +mandatory format + +^/(|home(|/username(|/Desktop(|/.*))))$+ ++ +The format is not very comfortable and restores all files in the directories +in the whole path, so this is not useful for restoring single file in a deep +hierarchy. -c:: -ignore case (--path-regex only). +ignore case (--path-regex only) EXIT STATUS -----------