Merge pull request #9807 from ThomasWaldmann/update-changes-1.4
Some checks failed
CodeQL / Analyze (push) Has been cancelled
Windows CI / msys2-ucrt64 (push) Has been cancelled

Update changes (1.4-maint)
This commit is contained in:
TW 2026-06-25 19:27:30 +02:00 committed by GitHub
commit 94de5ae3d5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
43 changed files with 156 additions and 53 deletions

View file

@ -422,25 +422,28 @@ above.
New features:
- create/import-tar --quick-stats: faster than --stats by omitting "All archives"
and repository chunk statistics, #9579
- delete/prune --quick-stats: faster than --stats by omitting "All archives" statistics, #9757
- create/import-tar/delete/prune --quick-stats: faster than --stats by omitting "All archives"
and repository chunk statistics, #9579, #9757
- prune: show total vs matching archives in output, #9262
- create --exclude-dataless: macOS: skip cloud files not materialized locally, #9746
- Minimal implementation of "related repositories", #9645
This feature allows multiple repositories to share deduplication-relevant secrets (id_key and chunk_seed) while maintaining secure, independent encryption keys.
This feature allows multiple repositories to share deduplication-relevant secrets
(id_key and chunk_seed) while maintaining secure, independent encryption keys.
- borg key export-related-secrets <REPO> <SPATH>
- borg init --import-related-secrets <SPATH> <REPO>
Fixes:
- hashindex: fix new checks for big endian archs, #9521
- Archive.delete: don't reuse msgpack Unpacker after an unpacking failure
- slashdot hack: fix exclusion of source directory metadata, #9534
- hashindex: fix new checks for big endian archs, #9521
Note: Many of the fixed issues listed below relate to rather rare or theoretical
issues and were found by automated code checking.
Note:
Many of the fixed issues listed below relate to rather rare or theoretical
issues and were found by automated code checking.
- LRUCache: resolve KeyError and memory leaks, #9587
- crypto.low_level: fix freeing of memory, #9585
@ -473,10 +476,15 @@ Note: Many of the fixed issues listed below relate to rather rare or theoretical
Other changes:
- msgpack: also allow 1.2.0 and 1.2.1
- msgpack: also allow up to 1.2.1
- use F_FULLFSYNC on macOS for SyncFile data durability, #9383
- mount: improve error msg when uid/gid cannot be resolved, #9574
- properly handle invalid and dev versions in version parser, fixes #9014
- tests: reset borg.output.progress logger between tests to fix flakiness
- docs:
- borgbackup.readthedocs.io: offer PDF and html downloads in sidebar, #9731
- fix 'borg key change-passphrase' docs, #9697
- impact of the slashdot hack on pattern matching, #9647
- pull-backup.rst minor fixes
- sshfs + chroot does not support different CPU architectures, #6878
@ -490,6 +498,7 @@ Other changes:
- improve macOS Keychain instructions, #5156
- add DoS warning for none encryption mode, #6715
- document error handling in borg create, #4912
- update year in LICENSE and docs/conf.py
Version 1.4.4 (2026-03-19)

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-benchmark-crud" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-benchmark-crud" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-benchmark-crud \- Benchmark Create, Read, Update, Delete for archives.
.SH SYNOPSIS

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-benchmark" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-benchmark" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-benchmark \- benchmark command
.SH SYNOPSIS

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-break-lock" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-break-lock" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-break-lock \- Break the repository lock (e.g. in case it was left by a dead borg.
.SH SYNOPSIS

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-check" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-check" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-check \- Check repository consistency
.SH SYNOPSIS

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-common" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-common" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-common \- Common options of Borg commands
.SH SYNOPSIS

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-compact" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-compact" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-compact \- compact segment files in the repository
.SH SYNOPSIS

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-compression" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-compression" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-compression \- Details regarding compression
.SH DESCRIPTION

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-config" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-config" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-config \- get, set, and delete values in a repository or cache config file
.SH SYNOPSIS
@ -97,6 +97,12 @@ $ borg config /path/to/repo additional_free_space 2G
# make a repo append\-only
$ borg config /path/to/repo append_only 1
# set storage quota to 50 GB
$ borg config /path/to/repo storage_quota 50G
# set maximum segment size to 100 MiB (see \(dqAdjusting segment size\(dq in Usage Notes)
$ borg config /path/to/repo max_segment_size 104857600
.EE
.UNINDENT
.UNINDENT

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-create" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-create" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-create \- Create new archive
.SH SYNOPSIS
@ -132,7 +132,9 @@ the currently processed path.
When using \fB\-\-stats\fP, you will get some statistics about how much data was
added \- the \(dqThis Archive\(dq deduplicated size there is most interesting as that is
how much your repository will grow. Please note that the \(dqAll archives\(dq stats refer to
the state after creation. Also, the \fB\-\-stats\fP and \fB\-\-dry\-run\fP options are mutually
the state after creation. \fB\-\-stats\fP can be slow \- if you want something faster, use
\fB\-\-quick\-stats\fP (this skips the repository\-wide \(dqAll archives\(dq and chunk index statistics).
The \fB\-\-stats\fP / \fB\-\-quick\-stats\fP and \fB\-\-dry\-run\fP options are mutually
exclusive because the data is not actually compressed and deduplicated during a dry run.
.sp
For more help on include/exclude patterns, see the \fIborg_patterns\fP command output.
@ -159,6 +161,9 @@ do not create a backup archive
.B \-s\fP,\fB \-\-stats
print statistics for the created archive
.TP
.B \-\-quick\-stats
print only archive statistics, skipping repository\-wide statistics
.TP
.B \-\-list
output verbose list of items (files, dirs, ...)
.TP
@ -221,6 +226,9 @@ if tag objects are specified with \fB\-\-exclude\-if\-present\fP, don\(aqt omit
.TP
.B \-\-exclude\-nodump
exclude files flagged NODUMP
.TP
.B \-\-exclude\-dataless
exclude files flagged DATALESS (macOS: placeholder files whose content is not materialized locally, e.g. not\-downloaded cloud storage files)
.UNINDENT
.SS Filesystem options
.INDENT 0.0
@ -405,6 +413,22 @@ Linux examples for this are bind mounts (possibly same device number, but always
subvolumes of a Btrfs file system (different device numbers from the parent but not necessarily mount points).
macOS examples are the APFS mounts of a typical macOS installation.
Therefore, when using \fB\-\-one\-file\-system\fP, you should double\-check that the backup works as intended.
.SS Error handling
.sp
When Borg encounters a file or directory it cannot read (e.g., due to permission
denied, or another process holding an exclusive lock on Windows), it will:
.INDENT 0.0
.IP \(bu 2
Log a warning message.
.IP \(bu 2
Skip that file or directory and continue backing up the remaining files.
.IP \(bu 2
Exit with a Warning RC at the end of the operation.
.UNINDENT
.sp
This ensures that a single problematic file does not abort your entire backup.
You should check your logs for these warnings to ensure that all important data
is being backed up.
.SS Item flags
.sp
\fB\-\-list\fP outputs a list of all files, directories and other

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-delete" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-delete" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-delete \- Delete an existing repository or archives
.SH SYNOPSIS
@ -52,6 +52,9 @@ When using \fB\-\-stats\fP, you will get some statistics about how much data was
deleted \- the \(dqDeleted data\(dq deduplicated size there is most interesting as
that is how much your repository will shrink.
Please note that the \(dqAll archives\(dq stats refer to the state after deletion.
\fB\-\-stats\fP can be slow \- if you want something faster, use \fB\-\-quick\-stats\fP
(this skips the repository\-wide \(dqAll archives\(dq statistics).
The \fB\-\-stats\fP / \fB\-\-quick\-stats\fP and \fB\-\-dry\-run\fP options are mutually exclusive.
.sp
You can delete multiple archives by specifying a shell pattern to match
multiple archives using the \fB\-\-glob\-archives GLOB\fP option (for more info on
@ -84,6 +87,9 @@ output verbose list of archives
.B \-s\fP,\fB \-\-stats
print statistics for the deleted archive
.TP
.B \-\-quick\-stats
print only deletion statistics, skipping repository\-wide statistics
.TP
.B \-\-cache\-only
delete only the local cache for the given repository
.TP

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-diff" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-diff" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-diff \- Diff contents of two archives
.SH SYNOPSIS

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-export-tar" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-export-tar" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-export-tar \- Export archive contents as a tarball
.SH SYNOPSIS

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-extract" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-extract" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-extract \- Extract archive contents
.SH SYNOPSIS

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-import-tar" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-import-tar" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-import-tar \- Create a backup archive from a tarball
.SH SYNOPSIS
@ -96,6 +96,9 @@ filter program to pipe data through
.B \-s\fP,\fB \-\-stats
print statistics for the created archive
.TP
.B \-\-quick\-stats
print only archive statistics, skipping repository\-wide statistics
.TP
.B \-\-list
output verbose list of items (files, dirs, ...)
.TP

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-info" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-info" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-info \- Show archive details such as disk space used
.SH SYNOPSIS

View file

@ -29,7 +29,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-init" "1" "2026-05-15" "" "borg backup tool"
.TH "borg-init" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-init \- Initialize an empty repository
.SH SYNOPSIS

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-key-change-passphrase" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-key-change-passphrase" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-key-change-passphrase \- Change repository key file passphrase
.SH SYNOPSIS

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-key-export-related-secrets" "1" "2026-05-15" "" "borg backup tool"
.TH "borg-key-export-related-secrets" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-key-export-related-secrets \- Export secrets for creating related repositories
.SH SYNOPSIS

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-key-export" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-key-export" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-key-export \- Export the repository key for backup
.SH SYNOPSIS

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-key-import" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-key-import" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-key-import \- Import the repository key from backup
.SH SYNOPSIS
@ -67,6 +67,9 @@ path to the backup (\(aq\-\(aq to read from stdin)
.B \-\-paper
interactively import from a backup done with \fB\-\-paper\fP
.UNINDENT
.SH EXAMPLES
.sp
This command can be used to create a related repository:
.SH SEE ALSO
.sp
\fIborg\-common(1)\fP, \fIborg\-key\-export(1)\fP

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-key-migrate-to-repokey" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-key-migrate-to-repokey" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-key-migrate-to-repokey \- Migrate passphrase -> repokey
.SH SYNOPSIS

View file

@ -28,12 +28,13 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-key" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-key" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-key \- Manage a keyfile or repokey of a repository
.SH SYNOPSIS
.nf
borg [common options] key export ...
borg [common options] key export\-related\-secrets ...
borg [common options] key import ...
borg [common options] key change\-passphrase ...
borg [common options] key migrate\-to\-repokey ...
@ -41,7 +42,7 @@ borg [common options] key migrate\-to\-repokey ...
.sp
.SH SEE ALSO
.sp
\fIborg\-common(1)\fP, \fIborg\-key\-export(1)\fP, \fIborg\-key\-import(1)\fP, \fIborg\-key\-change\-passphrase(1)\fP, \fIborg\-key\-migrate\-to\-repokey(1)\fP
\fIborg\-common(1)\fP, \fIborg\-key\-export(1)\fP, \fIborg\-key\-export\-related\-secrets(1)\fP, \fIborg\-key\-import(1)\fP, \fIborg\-key\-change\-passphrase(1)\fP, \fIborg\-key\-migrate\-to\-repokey(1)\fP
.SH Author
The Borg Collective
.\" End of generated man page.

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-list" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-list" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-list \- List archive or repository contents
.SH SYNOPSIS

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-mount" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-mount" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-mount \- Mount archive or an entire repository as a FUSE filesystem
.SH SYNOPSIS

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-patterns" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-patterns" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-patterns \- Details regarding patterns
.SH DESCRIPTION
@ -52,6 +52,10 @@ start with \fBsrc\fP\&.
When you back up relative paths like \fB\&../../src\fP, the archived paths
start with \fBsrc\fP\&.
.UNINDENT
.IP \(bu 2
When using the slashdot hack, patterns match against the unstripped path,
i.e., when you back up \fB/this/gets/stripped/./this/gets/archived\fP,
patterns must match \fBthis/gets/stripped/this/gets/archived\fP\&.
.UNINDENT
.sp
A directory exclusion pattern can end either with or without a slash (\(aq/\(aq).

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-placeholders" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-placeholders" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-placeholders \- Details regarding placeholders
.SH DESCRIPTION

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-prune" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-prune" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-prune \- Prune repository archives according to specified rules
.SH SYNOPSIS
@ -93,6 +93,9 @@ When using \fB\-\-stats\fP, you will get some statistics about how much data was
deleted \- the \(dqDeleted data\(dq deduplicated size there is most interesting as
that is how much your repository will shrink.
Please note that the \(dqAll archives\(dq stats refer to the state after pruning.
\fB\-\-stats\fP can be slow \- if you want something faster, use \fB\-\-quick\-stats\fP
(this skips the repository\-wide \(dqAll archives\(dq statistics).
The \fB\-\-stats\fP / \fB\-\-quick\-stats\fP and \fB\-\-dry\-run\fP options are mutually exclusive.
.SH OPTIONS
.sp
See \fIborg\-common(1)\fP for common options of Borg commands.
@ -114,6 +117,9 @@ force pruning of corrupted archives, use \fB\-\-force \-\-force\fP in case \fB\-
.B \-s\fP,\fB \-\-stats
print statistics for the deleted archive
.TP
.B \-\-quick\-stats
print only deletion statistics, skipping repository\-wide statistics
.TP
.B \-\-list
output verbose list of archives it keeps/prunes
.TP

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-recreate" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-recreate" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-recreate \- Re-create archives
.SH SYNOPSIS

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-rename" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-rename" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-rename \- Rename an existing archive
.SH SYNOPSIS

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-serve" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-serve" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-serve \- Start in server mode. This command is usually not used manually.
.SH SYNOPSIS
@ -53,7 +53,7 @@ restrict repository access. Only the repository located at PATH (no sub\-directo
only allow appending to repository segment files. Note that this only affects the low level structure of the repository, and running \fIdelete\fP or \fIprune\fP or reading from the repository will still be allowed. See \fIappend_only_mode\fP in Additional Notes for more details.
.TP
.BI \-\-storage\-quota \ QUOTA
Override storage quota of the repository (e.g. 5G, 1.5T). When a new repository is initialized, sets the storage quota on the new repository as well. Default: no quota.
Set storage quota of the repository (has priority over the repository\(aqs own quota setting) (e.g. 5G, 1.5T). When a new repository is initialized, sets the storage quota on the new repository as well. Default: no quota.
.UNINDENT
.SH EXAMPLES
.sp

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-umount" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-umount" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-umount \- un-mount the FUSE filesystem
.SH SYNOPSIS

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-upgrade" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-upgrade" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-upgrade \- upgrade a repository from a previous version
.SH SYNOPSIS

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-version" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-version" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-version \- Display the borg client / borg server version
.SH SYNOPSIS

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg-with-lock" "1" "2026-03-18" "" "borg backup tool"
.TH "borg-with-lock" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg-with-lock \- run a user specified command with the repository lock held
.SH SYNOPSIS

View file

@ -29,7 +29,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borg" "1" "2026-03-18" "" "borg backup tool"
.TH "borg" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borg \- deduplicating and encrypting backup tool
.SH SYNOPSIS
@ -412,7 +412,7 @@ If BORG_PASSPHRASE or BORG_PASSCOMMAND are also set, they take precedence.
When set, use the value to answer the passphrase question when a \fBnew\fP passphrase is asked for.
This variable is checked first. If it is not set, BORG_PASSPHRASE and BORG_PASSCOMMAND will also
be checked.
Main usecase for this is to fully automate \fBborg change\-passphrase\fP\&.
Main usecase for this is to fully automate \fBborg key change\-passphrase\fP\&.
.TP
.B BORG_DISPLAY_PASSPHRASE
When set, use the value to answer the \(dqdisplay the passphrase for verification\(dq question when defining a new passphrase for encrypted repositories.

View file

@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "borgfs" "1" "2026-03-18" "" "borg backup tool"
.TH "borgfs" "1" "2026-06-25" "" "borg backup tool"
.SH Name
borgfs \- Mount archive or an entire repository as a FUSE filesystem
.SH SYNOPSIS

View file

@ -25,6 +25,8 @@ borg create
+-------------------------------------------------------+---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| | ``-s``, ``--stats`` | print statistics for the created archive |
+-------------------------------------------------------+---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| | ``--quick-stats`` | print only archive statistics, skipping repository-wide statistics |
+-------------------------------------------------------+---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| | ``--list`` | output verbose list of items (files, dirs, ...) |
+-------------------------------------------------------+---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| | ``--filter STATUSCHARS`` | only display items with the given status characters (see description) |
@ -71,6 +73,8 @@ borg create
+-------------------------------------------------------+---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| | ``--exclude-nodump`` | exclude files flagged NODUMP |
+-------------------------------------------------------+---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| | ``--exclude-dataless`` | exclude files flagged DATALESS (macOS: placeholder files whose content is not materialized locally, e.g. not-downloaded cloud storage files) |
+-------------------------------------------------------+---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| **Filesystem options** |
+-------------------------------------------------------+---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| | ``-x``, ``--one-file-system`` | stay in the same file system and do not store mount points of other file systems - this might behave different from your expectations, see the description below. |
@ -135,6 +139,7 @@ borg create
options
-n, --dry-run do not create a backup archive
-s, --stats print statistics for the created archive
--quick-stats print only archive statistics, skipping repository-wide statistics
--list output verbose list of items (files, dirs, ...)
--filter STATUSCHARS only display items with the given status characters (see description)
--json output stats as JSON. Implies ``--stats``.
@ -161,6 +166,7 @@ borg create
--exclude-if-present NAME exclude directories that are tagged by containing a filesystem object with the given NAME
--keep-exclude-tags if tag objects are specified with ``--exclude-if-present``, don't omit the tag objects themselves from the backup archive
--exclude-nodump exclude files flagged NODUMP
--exclude-dataless exclude files flagged DATALESS (macOS: placeholder files whose content is not materialized locally, e.g. not-downloaded cloud storage files)
Filesystem options
@ -273,7 +279,9 @@ the currently processed path.
When using ``--stats``, you will get some statistics about how much data was
added - the "This Archive" deduplicated size there is most interesting as that is
how much your repository will grow. Please note that the "All archives" stats refer to
the state after creation. Also, the ``--stats`` and ``--dry-run`` options are mutually
the state after creation. ``--stats`` can be slow - if you want something faster, use
``--quick-stats`` (this skips the repository-wide "All archives" and chunk index statistics).
The ``--stats`` / ``--quick-stats`` and ``--dry-run`` options are mutually
exclusive because the data is not actually compressed and deduplicated during a dry run.
For more help on include/exclude patterns, see the :ref:`borg_patterns` command output.
@ -307,6 +315,20 @@ macOS examples are the APFS mounts of a typical macOS installation.
Therefore, when using ``--one-file-system``, you should double-check that the backup works as intended.
Error handling
++++++++++++++
When Borg encounters a file or directory it cannot read (e.g., due to permission
denied, or another process holding an exclusive lock on Windows), it will:
- Log a warning message.
- Skip that file or directory and continue backing up the remaining files.
- Exit with a Warning RC at the end of the operation.
This ensures that a single problematic file does not abort your entire backup.
You should check your logs for these warnings to ensure that all important data
is being backed up.
.. _list_item_flags:
Item flags

View file

@ -27,6 +27,8 @@ borg delete
+-----------------------------------------------------------------------------+---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
| | ``-s``, ``--stats`` | print statistics for the deleted archive |
+-----------------------------------------------------------------------------+---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
| | ``--quick-stats`` | print only deletion statistics, skipping repository-wide statistics |
+-----------------------------------------------------------------------------+---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
| | ``--cache-only`` | delete only the local cache for the given repository |
+-----------------------------------------------------------------------------+---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
| | ``--force`` | force deletion of corrupted archives, use ``--force --force`` in case ``--force`` does not work. |
@ -74,6 +76,7 @@ borg delete
-n, --dry-run do not change repository
--list output verbose list of archives
-s, --stats print statistics for the deleted archive
--quick-stats print only deletion statistics, skipping repository-wide statistics
--cache-only delete only the local cache for the given repository
--force force deletion of corrupted archives, use ``--force --force`` in case ``--force`` does not work.
--keep-security-info keep the local security info when deleting a repository
@ -111,6 +114,9 @@ When using ``--stats``, you will get some statistics about how much data was
deleted - the "Deleted data" deduplicated size there is most interesting as
that is how much your repository will shrink.
Please note that the "All archives" stats refer to the state after deletion.
``--stats`` can be slow - if you want something faster, use ``--quick-stats``
(this skips the repository-wide "All archives" statistics).
The ``--stats`` / ``--quick-stats`` and ``--dry-run`` options are mutually exclusive.
You can delete multiple archives by specifying a shell pattern to match
multiple archives using the ``--glob-archives GLOB`` option (for more info on

View file

@ -21,6 +21,10 @@ Be careful, your patterns must match the archived paths:
- When you back up relative paths like ``../../src``, the archived paths
start with ``src``.
- When using the slashdot hack, patterns match against the unstripped path,
i.e., when you back up ``/this/gets/stripped/./this/gets/archived``,
patterns must match ``this/gets/stripped/this/gets/archived``.
A directory exclusion pattern can end either with or without a slash ('/').
If it ends with a slash, such as `some/path/`, the directory will be
included but not its content. If it does not end with a slash, such as

View file

@ -25,6 +25,8 @@ borg import-tar
+-------------------------------------------------------+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+
| | ``-s``, ``--stats`` | print statistics for the created archive |
+-------------------------------------------------------+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+
| | ``--quick-stats`` | print only archive statistics, skipping repository-wide statistics |
+-------------------------------------------------------+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+
| | ``--list`` | output verbose list of items (files, dirs, ...) |
+-------------------------------------------------------+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------+
| | ``--filter STATUSCHARS`` | only display items with the given status characters |
@ -69,6 +71,7 @@ borg import-tar
options
--tar-filter filter program to pipe data through
-s, --stats print statistics for the created archive
--quick-stats print only archive statistics, skipping repository-wide statistics
--list output verbose list of items (files, dirs, ...)
--filter STATUSCHARS only display items with the given status characters
--json output stats as JSON (implies --stats)

View file

@ -25,6 +25,8 @@ borg prune
+-----------------------------------------------------------------------------+---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
| | ``-s``, ``--stats`` | print statistics for the deleted archive |
+-----------------------------------------------------------------------------+---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
| | ``--quick-stats`` | print only deletion statistics, skipping repository-wide statistics |
+-----------------------------------------------------------------------------+---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
| | ``--list`` | output verbose list of archives it keeps/prunes |
+-----------------------------------------------------------------------------+---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------+
| | ``--keep-within INTERVAL`` | keep all archives within this time interval |
@ -80,6 +82,7 @@ borg prune
-n, --dry-run do not change repository
--force force pruning of corrupted archives, use ``--force --force`` in case ``--force`` does not work.
-s, --stats print statistics for the deleted archive
--quick-stats print only deletion statistics, skipping repository-wide statistics
--list output verbose list of archives it keeps/prunes
--keep-within INTERVAL keep all archives within this time interval
--keep-last, --keep-secondly number of secondly archives to keep
@ -162,4 +165,7 @@ backup archive in the same second).
When using ``--stats``, you will get some statistics about how much data was
deleted - the "Deleted data" deduplicated size there is most interesting as
that is how much your repository will shrink.
Please note that the "All archives" stats refer to the state after pruning.
Please note that the "All archives" stats refer to the state after pruning.
``--stats`` can be slow - if you want something faster, use ``--quick-stats``
(this skips the repository-wide "All archives" statistics).
The ``--stats`` / ``--quick-stats`` and ``--dry-run`` options are mutually exclusive.

View file

@ -21,7 +21,7 @@ borg serve
+-------------------------------------------------------+-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| | ``--append-only`` | only allow appending to repository segment files. Note that this only affects the low level structure of the repository, and running `delete` or `prune` or reading from the repository will still be allowed. See :ref:`append_only_mode` in Additional Notes for more details. |
+-------------------------------------------------------+-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| | ``--storage-quota QUOTA`` | Override storage quota of the repository (e.g. 5G, 1.5T). When a new repository is initialized, sets the storage quota on the new repository as well. Default: no quota. |
| | ``--storage-quota QUOTA`` | Set storage quota of the repository (has priority over the repository's own quota setting) (e.g. 5G, 1.5T). When a new repository is initialized, sets the storage quota on the new repository as well. Default: no quota. |
+-------------------------------------------------------+-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| .. class:: borg-common-opt-ref |
| |
@ -44,7 +44,7 @@ borg serve
--restrict-to-path PATH restrict repository access to PATH. Can be specified multiple times to allow the client access to several directories. Access to all sub-directories is granted implicitly; PATH doesn't need to directly point to a repository.
--restrict-to-repository PATH restrict repository access. Only the repository located at PATH (no sub-directories are considered) is accessible. Can be specified multiple times to allow the client access to several repositories. Unlike ``--restrict-to-path`` sub-directories are not accessible; PATH needs to directly point at a repository location. PATH may be an empty directory or the last element of PATH may not exist, in which case the client may initialize a repository there.
--append-only only allow appending to repository segment files. Note that this only affects the low level structure of the repository, and running `delete` or `prune` or reading from the repository will still be allowed. See :ref:`append_only_mode` in Additional Notes for more details.
--storage-quota QUOTA Override storage quota of the repository (e.g. 5G, 1.5T). When a new repository is initialized, sets the storage quota on the new repository as well. Default: no quota.
--storage-quota QUOTA Set storage quota of the repository (has priority over the repository's own quota setting) (e.g. 5G, 1.5T). When a new repository is initialized, sets the storage quota on the new repository as well. Default: no quota.
:ref:`common_options`