borg-extract1
Extract archive contents
Usage
borg [common
options]
extract
[options]
ARCHIVE
[PATH ...]
Overview
This command extracts the contents of an archive.
By default, the entire archive is extracted, but a subset of files and directories can be selected by passing a list of PATH arguments. The default interpretation for the paths to extract is pp: which is a literal path-prefix match. If you want to use e.g. a wildcard, you must select a different pattern style such as sh: or fm:. See borg_patterns for more information.
The file selection can be further restricted by using the --exclude option. For more help on include/exclude patterns, see the borg_patterns command output.
By using --dry-run, you can do all extraction steps except actually writing the output data: reading metadata and data chunks from the repository, checking the hash/HMAC, decrypting, and decompressing.
--progress can be slower than no progress display, since it makes one additional pass over the archive metadata.
Note:
Currently, extract always writes into the current working directory ("."), so make sure you cd to the right place before calling borg extract.
When parent directories are not extracted (because of using file/directory selection or any other reason), Borg cannot restore parent directories' metadata, e.g., owner, group, permissions, etc.
Options
See borg-common(1) for common options of Borg commands.
arguments
ARCHIVE
|
archive to extract |
|---|---|
PATH
|
paths to extract; patterns are supported |
options
-
--list -
output verbose list of items (files, dirs, ...)
-
-n, --dry-run -
do not actually change any files
-
--numeric-owner -
deprecated, use
--numeric-idsinstead
-
--numeric-ids -
only obey numeric user and group identifiers
-
--nobsdflags -
deprecated, use
--noflagsinstead
-
--noflags -
do not extract/set flags (e.g. NODUMP, IMMUTABLE)
-
--noacls -
do not extract/set ACLs
-
--noxattrs -
do not extract/set xattrs
-
--stdout -
write all extracted data to stdout
-
--sparse -
create holes in output sparse file from all-zero chunks
Include/Exclude options
-ePATTERN, --exclude PATTERN-
exclude paths matching PATTERN
--exclude-fromEXCLUDEFILE-
read exclude patterns from EXCLUDEFILE, one per line
--patternPATTERN-
include/exclude paths matching PATTERN
--patterns-fromPATTERNFILE-
read include/exclude patterns from PATTERNFILE, one per line
--strip-componentsNUMBER-
Remove the specified number of leading path elements. Paths with fewer elements will be silently skipped.
Examples
# Extract entire archive $ borg extract /path/to/repo::my-files # Extract entire archive and list files while processing $ borg extract --list /path/to/repo::my-files # Verify whether an archive could be successfully extracted, but do not write files to disk $ borg extract --dry-run /path/to/repo::my-files # Extract the "src" directory $ borg extract /path/to/repo::my-files home/USERNAME/src # Extract the "src" directory but exclude object files $ borg extract /path/to/repo::my-files home/USERNAME/src --exclude '*.o' # Extract only the C files $ borg extract /path/to/repo::my-files 'sh:home/USERNAME/src/*.c' # Restore a raw device (must not be active/in use/mounted at that time) $ borg extract --stdout /path/to/repo::my-sdx | dd of=/dev/sdx bs=10M
Releases
5 releases since Debian 10 (Buster); the text changed 4 times.
--noacls since Debian 11 (Bullseye);
--nobsdflags since Arch Linux 2026-11-01;
--noflags since Debian 12 (Bookworm);
--noxattrs since Debian 11 (Bullseye);
--numeric-ids since Debian 12 (Bookworm);
--numeric-owner since Arch Linux 2026-11-01.
--continue until Debian 13 (Trixie).