btrfs-restore(8) try to restore files from a damaged btrfs filesystem image


btrfs restore [options] <device> <path> | -l <device>


btrfs restore is used to try to salvage files from a damaged filesystem and restore them into <path> or just list the tree roots.

Since current btrfs-check(8) or btrfs-rescue(8) only has very limited usage, btrfs restore is normally a better choice.


It is recommended to read the following btrfs wiki page if your data is not salvaged with default option: m[blue][]



get snapshots, btrfs restore skips snapshots in default.


get extended attributes.


restore owner, mode and times.


restore symbolic links as well as normal files.




ignore errors.


overwrite directories/files in <path>.

-t <bytenr>

use <bytenr> to read root tree.

-f <bytenr>

only restore files that are under specified root whose root bytenr is <bytenr>.

-u|--super <mirror>

use given superblock mirror identified by <mirror>, it can be 0,1,2.

-r|--root <rootid>

only restore files that are under specified root whose objectid is <rootid>.


find dir.


list tree roots.


dry run (only list files that would be recovered).

--path-regex <regex>

restore only filenames matching regex, you have to use following syntax (possibly quoted):



ignore case (--path-regex only).


btrfs restore returns a zero exit status if it succeeds. Non zero is returned in case of failure.


btrfs is part of btrfs-progs. Please refer to the btrfs wiki m[blue][] for further details.