2021-10-26 22:45:24 +00:00
|
|
|
btrfs-restore(8)
|
|
|
|
================
|
|
|
|
|
|
|
|
SYNOPSIS
|
|
|
|
--------
|
|
|
|
|
|
|
|
**btrfs restore** [options] <device> <path> | -l <device>
|
|
|
|
|
|
|
|
DESCRIPTION
|
|
|
|
-----------
|
|
|
|
|
2023-04-26 23:48:47 +00:00
|
|
|
:command:`btrfs restore` is used to try to salvage files from a damaged filesystem and
|
2021-10-26 22:45:24 +00:00
|
|
|
restore them into *path* or just list the subvolume tree roots. The filesystem
|
|
|
|
image is not modified.
|
|
|
|
|
|
|
|
If the filesystem is damaged and cannot be repaired by the other tools
|
2023-06-28 17:55:08 +00:00
|
|
|
(:doc:`btrfs-check` or :doc:`btrfs-rescue`),
|
2023-04-26 23:48:47 +00:00
|
|
|
:command:`btrfs restore` could be used to
|
2021-10-26 22:45:24 +00:00
|
|
|
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.
|
|
|
|
|
|
|
|
OPTIONS
|
|
|
|
-------
|
|
|
|
|
|
|
|
-s|--snapshots
|
|
|
|
get also snapshots that are skipped by default
|
|
|
|
|
|
|
|
-x|--xattr
|
|
|
|
get extended attributes
|
|
|
|
|
|
|
|
-m|--metadata
|
|
|
|
restore owner, mode and times for files and directories
|
|
|
|
|
|
|
|
-S|--symlinks
|
|
|
|
restore symbolic links as well as normal files
|
|
|
|
|
|
|
|
-i|--ignore-errors
|
|
|
|
ignore errors during restoration and continue
|
|
|
|
|
|
|
|
-o|--overwrite
|
2022-12-07 20:00:25 +00:00
|
|
|
overwrite directories/files in *path*, e.g. for repeated runs
|
2021-10-26 22:45:24 +00:00
|
|
|
|
|
|
|
-t <bytenr>
|
|
|
|
use *bytenr* to read the root tree
|
|
|
|
|
|
|
|
-f <bytenr>
|
|
|
|
only restore files that are under specified subvolume root pointed by *bytenr*
|
|
|
|
|
|
|
|
-u|--super <mirror>
|
|
|
|
use given superblock mirror identified by <mirror>, it can be 0,1 or 2
|
|
|
|
|
|
|
|
-r|--root <rootid>
|
|
|
|
only restore files that are under a specified subvolume whose objectid is *rootid*
|
|
|
|
|
|
|
|
-d
|
|
|
|
find directory
|
|
|
|
|
|
|
|
-l|--list-roots
|
|
|
|
list subvolume tree roots, can be used as argument for *-r*
|
|
|
|
|
|
|
|
-D|--dry-run
|
|
|
|
dry run (only list files that would be recovered)
|
|
|
|
|
|
|
|
--path-regex <regex>
|
2024-02-16 08:37:55 +00:00
|
|
|
restore only filenames matching a regular expression (:manref:`regex(7)`)
|
2021-10-26 22:45:24 +00:00
|
|
|
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)
|
|
|
|
|
|
|
|
-v|--verbose
|
|
|
|
(deprecated) alias for global *-v* option
|
|
|
|
|
|
|
|
``Global options``
|
|
|
|
|
|
|
|
-v|--verbose
|
|
|
|
be verbose and print what is being restored
|
|
|
|
|
|
|
|
EXIT STATUS
|
|
|
|
-----------
|
|
|
|
|
|
|
|
**btrfs restore** returns a zero exit status if it succeeds. Non zero is
|
|
|
|
returned in case of failure.
|
|
|
|
|
|
|
|
AVAILABILITY
|
|
|
|
------------
|
|
|
|
|
2022-10-06 15:52:25 +00:00
|
|
|
**btrfs** is part of btrfs-progs. Please refer to the documentation at
|
2023-03-16 21:38:21 +00:00
|
|
|
`https://btrfs.readthedocs.io <https://btrfs.readthedocs.io>`_.
|
2021-10-26 22:45:24 +00:00
|
|
|
|
|
|
|
SEE ALSO
|
|
|
|
--------
|
|
|
|
|
2023-06-28 17:55:08 +00:00
|
|
|
:doc:`btrfs-check`,
|
|
|
|
:doc:`btrfs-rescue`,
|
|
|
|
:doc:`mkfs.btrfs`
|