| borg-list(1) | borg backup tool | borg-list(1) |
Name¶
borg-list - List archive contents.
SYNOPSIS¶
borg [common options] list [options] NAME [PATH...]
DESCRIPTION¶
This command lists the contents of an archive.
For more help on include/exclude patterns, see the output of borg_patterns.
OPTIONS¶
See borg-common(1) for common options of Borg commands.
arguments¶
options¶
- --short
- only print file/directory names, nothing else
- --format FORMAT
- specify format for file listing (default: "{mode} {user:6} {group:6} {size:8} {mtime} {path}{extra}{NL}")
- --json-lines
- Format output as JSON Lines. The form of --format is ignored, but keys used in it are added to the JSON output. Some keys are always present. Note: JSON can only represent text.
- --depth N
- only list files up to the specified directory depth
- --sort-by SPEC
- sort output by comma-separated fields (e.g. '>size,path'), see Sorting below
Include/Exclude options¶
- -e PATTERN, --exclude PATTERN
- exclude paths matching PATTERN
- --exclude-from EXCLUDEFILE
- read exclude patterns from EXCLUDEFILE, one per line
- --pattern PATTERN
- include/exclude paths matching PATTERN
- --patterns-from PATTERNFILE
- read include/exclude patterns from PATTERNFILE, one per line
EXAMPLES¶
$ borg list root-2016-02-15
drwxr-xr-x root root 0 Mon, 2016-02-15 17:44:27 +0100 .
drwxrwxr-x root root 0 Mon, 2016-02-15 19:04:49 +0100 bin
-rwxr-xr-x root root 1029624 Thu, 2014-11-13 00:08:51 +0100 bin/bash
lrwxrwxrwx root root 6 Fri, 2015-03-27 20:24:26 +0100 bin/bzcmp -> bzdiff
-rwxr-xr-x root root 2140 Fri, 2015-03-27 20:24:22 +0100 bin/bzdiff
...
$ borg list root-2016-02-15 --pattern "- bin/ba*"
drwxr-xr-x root root 0 Mon, 2016-02-15 17:44:27 +0100 .
drwxrwxr-x root root 0 Mon, 2016-02-15 19:04:49 +0100 bin
lrwxrwxrwx root root 6 Fri, 2015-03-27 20:24:26 +0100 bin/bzcmp -> bzdiff
-rwxr-xr-x root root 2140 Fri, 2015-03-27 20:24:22 +0100 bin/bzdiff
...
$ borg list archiveA --format="{mode} {user:6} {group:6} {size:8d} {isomtime} {path}{extra}{NEWLINE}"
drwxrwxr-x user user 0 2015-02-01T11:00:00.000000+01:00 .
drwxrwxr-x user user 0 2015-02-01T11:00:00.000000+01:00 code
drwxrwxr-x user user 0 2015-02-01T11:00:00.000000+01:00 code/myproject
-rw-rw-r-- user user 1416192 2015-02-01T11:00:00.000000+01:00 code/myproject/file.ext
-rw-rw-r-- user user 1416192 2015-02-01T11:00:00.000000+01:00 code/myproject/file.text
...
$ borg list archiveA --pattern '+ re:\.ext$' --pattern '- re:^.*$'
-rw-rw-r-- user user 1416192 Sun, 2015-02-01 11:00:00 +0100 code/myproject/file.ext
...
$ borg list archiveA --pattern '+ re:.ext$' --pattern '- re:^.*$'
-rw-rw-r-- user user 1416192 Sun, 2015-02-01 11:00:00 +0100 code/myproject/file.ext
-rw-rw-r-- user user 1416192 Sun, 2015-02-01 11:00:00 +0100 code/myproject/file.text
...
# Use --sort-by with a comma-separated list; sorts apply stably from last to first.
# Here: primary by size descending, tie-breaker by path ascending.
# Note the quoting - ">" would otherwise be a shell redirection.
$ borg list archiveA --sort-by='>size,path' --format='{size:8d} {path}{NL}'
1416192 code/myproject/file.ext
1416192 code/myproject/file.text
0 .
...
NOTES¶
The FORMAT specifier syntax¶
The --format option uses Python's format string syntax <https://docs.python.org/3.11/library/string.html#formatstrings>.
Examples:
$ borg list --format '{mode} {user:6} {group:6} {size:8} {mtime} {path}{extra}{NL}' ArchiveFoo
-rw-rw-r-- user user 1024 Thu, 2021-12-09 10:22:17 file-foo
...
# {VAR:<NUMBER} - pad to NUMBER columns left-aligned.
# {VAR:>NUMBER} - pad to NUMBER columns right-aligned.
$ borg list --format '{mode} {user:>6} {group:>6} {size:<8} {mtime} {path}{extra}{NL}' ArchiveFoo
-rw-rw-r-- user user 1024 Thu, 2021-12-09 10:22:17 file-foo
...
The following keys are always available:
- NEWLINE: OS dependent line separator
- NL: alias of NEWLINE
- NUL: NUL character for creating print0 / xargs -0 like output
- SPACE: space character
- TAB: tab character
- CR: carriage return character
- LF: line feed character
Keys available only when listing files in an archive:
- type: file type (file, dir, symlink, ...)
- mode: file mode (as in stat)
- uid: user id of file owner
- gid: group id of file owner
- user: user name of file owner
- group: group name of file owner
- path: file path
- target: link target for symlinks
- hlid: hard link identity (same if hardlinking same fs object)
- inode: inode number
- flags: file flags
- size: file size
- num_chunks: number of chunks in this file
- mtime: file modification time
- ctime: file change time
- atime: file access time
- isomtime: file modification time (ISO 8601 format)
- isoctime: file change time (ISO 8601 format)
- isoatime: file access time (ISO 8601 format)
- fingerprint: Fingerprint of the file content (may have false negatives), format: H(conditions)-H(chunk_ids)
- blake2b
- blake2s
- blake3
- md5
- sha1
- sha224
- sha256
- sha384
- sha3_224
- sha3_256
- sha3_384
- sha3_512
- sha512
- archiveid: internal ID of the archive
- archivename: name of the archive
- extra: prepends {target} with " -> " for soft links and " link to " for hard links
Sorting¶
Use --sort-by SPEC where SPEC is a comma-separated list of fields. Sorts are applied stably from last to first in the given list, thus the first field is the primary sort criterion. Prepend ">" for descending, "<" (or no prefix) for ascending order, e.g. --sort-by='>size,path' (quote it, ">" is a shell redirection).
Supported fields, sorting by the same value that --format would print:
- path: the item path
- type, mode: the file type character resp. the full file mode string
- user, group: the owner/group name, or the numeric id if the name is not known
- uid, gid: the numeric owner/group id
- size: the file size (same as {size}, 0 for items without content)
- mtime, ctime, atime: the timestamps (atime/ctime fall back to mtime if not stored)
There is no birthtime field, as there is no {birthtime} format key either.
The sort fields are independent of --format, you may sort by a field you do not print.
Note: --sort-by needs to read all (matching) items into memory before it can print anything, so listing a huge archive this way needs a lot of memory and delays the first output line. Without --sort-by, items are streamed and their order is undefined. If memory usage is a problem, consider borg list --format ... | sort instead.
SEE ALSO¶
borg-common(1), borg-info(1), borg-diff(1), borg-prune(1), borg-patterns(1), borg-repo-list(1)
Author¶
The Borg Collective
| 2026-10-07 |