diff --git a/.gitignore b/.gitignore index a4ff44cd12..bbc8761a93 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,4 @@ borg.exe .coverage.* .vagrant .eggs +.DS_Store diff --git a/docs/changes.rst b/docs/changes.rst index d8374648ef..80e93d8404 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -414,44 +414,50 @@ Compatibility notes: Change Log ========== -Version 1.4.4 (not yet released) --------------------------------- +Version 1.4.4 (2026-03-19) +-------------------------- For upgrade and compatibility hints, please also read the "Upgrade Notes" section above. New features: -- prune: added -v / --info output, #9262 -- mount: warn about symlinks pointing outside of the mountpoint, #9254 -- create/info: remember/show cwd at the time of backup creation, #6191 +- prune: added -v / --info output, #9262. +- mount: warn about symlinks pointing outside of the mount point, #9254. +- create/info: remember/show cwd at the time of archive creation, #6191. Fixes: -- hashindex_size: return int64_t, #9423 -- compress: make Padme size obfuscation usable ("obfuscate,250,...") +- hashindex: fix memory leak, #9497. +- hashindex: check values in read HashHeader, #9485. +- hashindex_size: return int64_t, #9423. +- hashindex: fix iteritems segfaulting with non-existent marker, #9368. + Never happened in borg, because borg always gives existing markers to iteritems. +- compress: make Padme size obfuscation usable ("obfuscate,250,..."). +- borgfs/mount: get_base_dir: avoid using incorrect HOME, #3395. Other changes: -- pyinstaller binary: do not exclude ssl, needed for pyfuse3/trio, #9196 -- mount: fuse fs performance improvement -- hashindex: fixed iteritems segfaulting with non-existent marker, #9368. - Never happened in borg, because borg always gives existing markers to iteritems. +- PyInstaller binary: do not exclude SSL, needed for pyfuse3/trio, #9196. +- mount: FUSE FS performance improvement. +- warn when replaying segments, #9233. - CI / tests: - - build linux binaries with pyfuse3 - - use macos-15 to build the binaries - - tox: use pytest -n auto by default to speed up tests - - scripts/linux-run: run commands (e.g. tox) in a podman linux container - - fix race condition in test_with_lock, #8810 - - fix spurious sparse test fail on win32, #7616 - - cygwin: skip ~root base dir test - - fix coverage collection for daemonized borg mount, #9448 + - build Linux binaries with pyfuse3. + - use macOS 15 to build the binaries. + - scripts/linux-run: run commands (e.g. tox) in a Podman Linux container. + - fix race condition in test_with_lock, #8810. + - fix spurious sparse test failure on Win32, #7616. + - Cygwin: skip ~root base dir test. + - fix coverage collection for daemonized `borg mount`, #9448. - docs: - - consolidate key backup info in "borg key export" help, #6204 - - fix typos found by codespell - - update binary readme - - github: enhance pull request template + + - move RTD version selector to sidebar top-left, #8204. + - consolidate key backup info in `borg key export` help, #6204. + - clarify append-only != write-only, #9304. + - fix typos found by codespell. + - update binary README. + - GitHub: enhance pull request template. Version 1.4.3 (2025-12-02) diff --git a/docs/man/borg-benchmark-crud.1 b/docs/man/borg-benchmark-crud.1 index c71f4a4a9f..1640084f20 100644 --- a/docs/man/borg-benchmark-crud.1 +++ b/docs/man/borg-benchmark-crud.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-benchmark-crud" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-benchmark-crud \- Benchmark Create, Read, Update, Delete for archives. .SH SYNOPSIS .sp @@ -95,7 +96,6 @@ path where to create benchmark input data .SH SEE ALSO .sp \fIborg\-common(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-benchmark.1 b/docs/man/borg-benchmark.1 index 4396808eae..845a4779a9 100644 --- a/docs/man/borg-benchmark.1 +++ b/docs/man/borg-benchmark.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-benchmark" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-benchmark \- benchmark command .SH SYNOPSIS .nf @@ -41,7 +42,6 @@ These commands perform various benchmarks. .SH SEE ALSO .sp \fIborg\-common(1)\fP, \fIborg\-benchmark\-crud(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-break-lock.1 b/docs/man/borg-break-lock.1 index 7d5e474653..33b318fcab 100644 --- a/docs/man/borg-break-lock.1 +++ b/docs/man/borg-break-lock.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-break-lock" "1" "2026-03-18" "" "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 .sp @@ -50,7 +51,6 @@ repository for which to break the locks .SH SEE ALSO .sp \fIborg\-common(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-check.1 b/docs/man/borg-check.1 index 486547a257..03c41e6a9c 100644 --- a/docs/man/borg-check.1 +++ b/docs/man/borg-check.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-check" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-check \- Check repository consistency .SH SYNOPSIS .sp @@ -95,7 +96,7 @@ The check command is a read\-only task by default. If any corruption is found, Borg will report the issue and proceed with checking. To actually repair the issues found, pass \fB\-\-repair\fP\&. .sp -\fBNOTE:\fP +\fBNote:\fP .INDENT 0.0 .INDENT 3.5 \fB\-\-repair\fP is a \fBPOTENTIALLY DANGEROUS FEATURE\fP and might lead to data @@ -203,7 +204,6 @@ consider last N archives after other filters were applied .SH SEE ALSO .sp \fIborg\-common(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-common.1 b/docs/man/borg-common.1 index ae919e2437..4f3b53e2af 100644 --- a/docs/man/borg-common.1 +++ b/docs/man/borg-common.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-common" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-common \- Common options of Borg commands .SH SYNOPSIS .INDENT 0.0 @@ -105,7 +106,6 @@ Use this command to connect to the \(aqborg serve\(aq process (default: \(aqssh\ .SH SEE ALSO .sp \fIborg\-common(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-compact.1 b/docs/man/borg-compact.1 index 1ce731fda5..a4c2791bbf 100644 --- a/docs/man/borg-compact.1 +++ b/docs/man/borg-compact.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-compact" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-compact \- compact segment files in the repository .SH SYNOPSIS .sp @@ -101,7 +102,6 @@ $ borg compact \-\-cleanup\-commits /path/to/repo .SH SEE ALSO .sp \fIborg\-common(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-compression.1 b/docs/man/borg-compression.1 index a95848723f..df7166eaa3 100644 --- a/docs/man/borg-compression.1 +++ b/docs/man/borg-compression.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-compression" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-compression \- Details regarding compression .SH DESCRIPTION .sp @@ -153,7 +154,7 @@ Example probabilities for SPEC \fB1\fP: .UNINDENT .sp Uses the Padmé algorithm to deterministically pad the compressed size to a sum of -powers of 2, limiting overhead to 12%. See for details. +powers of 2, limiting overhead to 12%. See \% for details. .UNINDENT .sp Examples: @@ -175,7 +176,6 @@ borg create \-\-compression obfuscate,250,zstd,3 ... .EE .UNINDENT .UNINDENT -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-config.1 b/docs/man/borg-config.1 index e572e2fe4c..35c116bc26 100644 --- a/docs/man/borg-config.1 +++ b/docs/man/borg-config.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-config" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-config \- get, set, and delete values in a repository or cache config file .SH SYNOPSIS .sp @@ -76,7 +77,7 @@ list the configuration of the repo .UNINDENT .SH EXAMPLES .sp -\fBNOTE:\fP +\fBNote:\fP .INDENT 0.0 .INDENT 3.5 The repository & cache config files are some of the only directly manipulable @@ -102,7 +103,6 @@ $ borg config /path/to/repo append_only 1 .SH SEE ALSO .sp \fIborg\-common(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-create.1 b/docs/man/borg-create.1 index 412b9d6844..b77c2ffdc7 100644 --- a/docs/man/borg-create.1 +++ b/docs/man/borg-create.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-create" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-create \- Create new archive .SH SYNOPSIS .sp @@ -210,7 +211,7 @@ include/exclude paths matching PATTERN read include/exclude patterns from PATTERNFILE, one per line .TP .B \-\-exclude\-caches -exclude directories that contain a CACHEDIR.TAG file ( ) +exclude directories that contain a CACHEDIR.TAG file (\%) .TP .BI \-\-exclude\-if\-present \ NAME exclude directories that are tagged by containing a filesystem object with the given NAME @@ -519,7 +520,6 @@ So, be careful not to unintentionally trigger that. .SH SEE ALSO .sp \fIborg\-common(1)\fP, \fIborg\-delete(1)\fP, \fIborg\-prune(1)\fP, \fIborg\-check(1)\fP, \fIborg\-patterns(1)\fP, \fIborg\-placeholders(1)\fP, \fIborg\-compression(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-delete.1 b/docs/man/borg-delete.1 index 0a4d723eba..6862008a96 100644 --- a/docs/man/borg-delete.1 +++ b/docs/man/borg-delete.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-delete" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-delete \- Delete an existing repository or archives .SH SYNOPSIS .sp @@ -148,7 +149,6 @@ Type \(aqYES\(aq if you understand this and want to continue: YES .SH SEE ALSO .sp \fIborg\-common(1)\fP, \fIborg\-compact(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-diff.1 b/docs/man/borg-diff.1 index e3250c0ca3..b1ce830919 100644 --- a/docs/man/borg-diff.1 +++ b/docs/man/borg-diff.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-diff" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-diff \- Diff contents of two archives .SH SYNOPSIS .sp @@ -226,7 +227,6 @@ added 0 B file4 .SH SEE ALSO .sp \fIborg\-common(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-export-tar.1 b/docs/man/borg-export-tar.1 index 56845e7410..db063171e8 100644 --- a/docs/man/borg-export-tar.1 +++ b/docs/man/borg-export-tar.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-export-tar" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-export-tar \- Export archive contents as a tarball .SH SYNOPSIS .sp @@ -144,7 +145,6 @@ $ borg export\-tar /path/to/repo::Monday \- | ssh somewhere \(dqcd extracted; ta .SH SEE ALSO .sp \fIborg\-common(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-extract.1 b/docs/man/borg-extract.1 index e84069304c..0471f569f5 100644 --- a/docs/man/borg-extract.1 +++ b/docs/man/borg-extract.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-extract" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-extract \- Extract archive contents .SH SYNOPSIS .sp @@ -53,7 +54,7 @@ decrypting, and decompressing. \fB\-\-progress\fP can be slower than no progress display, since it makes one additional pass over the archive metadata. .sp -\fBNOTE:\fP +\fBNote:\fP .INDENT 0.0 .INDENT 3.5 Currently, extract always writes into the current working directory (\(dq.\(dq), @@ -158,7 +159,6 @@ $ borg extract \-\-stdout /path/to/repo::my\-sdx | dd of=/dev/sdx bs=10M .SH SEE ALSO .sp \fIborg\-common(1)\fP, \fIborg\-mount(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-import-tar.1 b/docs/man/borg-import-tar.1 index b1c6365a3d..db24422614 100644 --- a/docs/man/borg-import-tar.1 +++ b/docs/man/borg-import-tar.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-import-tar" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-import-tar \- Create a backup archive from a tarball .SH SYNOPSIS .sp @@ -128,7 +129,6 @@ select compression algorithm, see the output of the \(dqborg help compression\(d .SH SEE ALSO .sp \fIborg\-common(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-info.1 b/docs/man/borg-info.1 index ce18a921ea..8f33524e82 100644 --- a/docs/man/borg-info.1 +++ b/docs/man/borg-info.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-info" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-info \- Show archive details such as disk space used .SH SYNOPSIS .sp @@ -146,7 +147,6 @@ Chunk index: 1015213 626934122 .SH SEE ALSO .sp \fIborg\-common(1)\fP, \fIborg\-list(1)\fP, \fIborg\-diff(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-init.1 b/docs/man/borg-init.1 index fda2279b2e..5532923989 100644 --- a/docs/man/borg-init.1 +++ b/docs/man/borg-init.1 @@ -1,5 +1,6 @@ '\" t -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -28,8 +29,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-init" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-init \- Initialize an empty repository .SH SYNOPSIS .sp @@ -328,7 +329,6 @@ $ borg init \-\-encryption=keyfile user@hostname:backup .SH SEE ALSO .sp \fIborg\-common(1)\fP, \fIborg\-create(1)\fP, \fIborg\-delete(1)\fP, \fIborg\-check(1)\fP, \fIborg\-list(1)\fP, \fIborg\-key\-import(1)\fP, \fIborg\-key\-export(1)\fP, \fIborg\-key\-change\-passphrase(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-key-change-passphrase.1 b/docs/man/borg-key-change-passphrase.1 index 453d3111f1..0ce85d6b2c 100644 --- a/docs/man/borg-key-change-passphrase.1 +++ b/docs/man/borg-key-change-passphrase.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-key-change-passphrase" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-key-change-passphrase \- Change repository key file passphrase .SH SYNOPSIS .sp @@ -96,7 +97,6 @@ $ BORG_PASSPHRASE=old BORG_NEW_PASSPHRASE=new borg key change\-passphrase repo .SH SEE ALSO .sp \fIborg\-common(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-key-export.1 b/docs/man/borg-key-export.1 index 116b60c926..e1e229919c 100644 --- a/docs/man/borg-key-export.1 +++ b/docs/man/borg-key-export.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,36 +28,42 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-key-export" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-key-export \- Export the repository key for backup .SH SYNOPSIS .sp borg [common options] key export [options] [REPOSITORY] [PATH] .SH DESCRIPTION .sp +This command backs up the borg key. +.sp If repository encryption is used, the repository is inaccessible -without the key. This command allows one to back up this essential key. +without the borg key (and the passphrase that protects the borg key). +If a repository is not encrypted, but authenticated, the borg key is +still needed to access the repository normally. +.sp +For repositories using \fBkeyfile\fP encryption the key is kept locally +on the system that is capable of doing backups. To guard against loss +or corruption of this key, the key needs to be backed up independently +of the main data backup. +.sp +For repositories using \fBrepokey\fP encryption or \fBauthenticated\fP mode +the key is kept in the repository. A backup is thus not strictly needed, +but guards against the repository becoming inaccessible if the key is +corrupted or lost. +.sp Note that the backup produced does not include the passphrase itself -(i.e., the exported key stays encrypted). In order to regain access to a +(i.e. the exported key stays encrypted). In order to regain access to a repository, one needs both the exported key and the original passphrase. +Keep the exported key and the passphrase at safe places. .sp There are three backup formats. The normal backup format is suitable for digital storage as a file. The \fB\-\-paper\fP backup format is optimized -for printing and typing in while importing, with per\-line checks to -reduce problems with manual input. The \fB\-\-qr\-html\fP option creates a printable +for printing and typing in while importing, with per line checks to +reduce problems with manual input. The \fB\-\-qr\-html\fP creates a printable HTML template with a QR code and a copy of the \fB\-\-paper\fP\-formatted key. .sp -For repositories using keyfile encryption the key is saved locally -on the system that is capable of doing backups. To guard against loss -of this key, the key needs to be backed up independently of the main -data backup. -.sp -For repositories using repokey encryption, the key is saved in the -repository in the config file. A backup is thus not strictly needed, -but it guards against the repository becoming inaccessible if the file -is damaged for some reason. -.sp Examples: .INDENT 0.0 .INDENT 3.5 @@ -95,7 +102,6 @@ Create an html file suitable for printing and later type\-in or qr scan .SH SEE ALSO .sp \fIborg\-common(1)\fP, \fIborg\-key\-import(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-key-import.1 b/docs/man/borg-key-import.1 index 7db47dbd01..3d39edeafd 100644 --- a/docs/man/borg-key-import.1 +++ b/docs/man/borg-key-import.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-key-import" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-key-import \- Import the repository key from backup .SH SYNOPSIS .sp @@ -69,7 +70,6 @@ interactively import from a backup done with \fB\-\-paper\fP .SH SEE ALSO .sp \fIborg\-common(1)\fP, \fIborg\-key\-export(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-key-migrate-to-repokey.1 b/docs/man/borg-key-migrate-to-repokey.1 index 09b628d5c1..f3bb0fecbc 100644 --- a/docs/man/borg-key-migrate-to-repokey.1 +++ b/docs/man/borg-key-migrate-to-repokey.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-key-migrate-to-repokey" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-key-migrate-to-repokey \- Migrate passphrase -> repokey .SH SYNOPSIS .sp @@ -60,7 +61,6 @@ REPOSITORY .SH SEE ALSO .sp \fIborg\-common(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-key.1 b/docs/man/borg-key.1 index e67df13392..58a903338b 100644 --- a/docs/man/borg-key.1 +++ b/docs/man/borg-key.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-key" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-key \- Manage a keyfile or repokey of a repository .SH SYNOPSIS .nf @@ -41,7 +42,6 @@ borg [common options] key migrate\-to\-repokey ... .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 -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-list.1 b/docs/man/borg-list.1 index 2e60c5914e..68f485b3b3 100644 --- a/docs/man/borg-list.1 +++ b/docs/man/borg-list.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-list" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-list \- List archive or repository contents .SH SYNOPSIS .sp @@ -150,8 +151,7 @@ $ borg list /path/to/repo/::archiveA \-\-pattern \(aq+ re:.ext$\(aq \-\-pattern .SH NOTES .SS The FORMAT specifier syntax .sp -The \fB\-\-format\fP option uses Python\(aqs format string syntax -\&. +The \fB\-\-format\fP option uses Python\(aqs format string syntax \%\&. .sp Examples: .INDENT 0.0 @@ -315,7 +315,6 @@ health: either \(dqhealthy\(dq (file ok) or \(dqbroken\(dq (if file has all\-zer .SH SEE ALSO .sp \fIborg\-common(1)\fP, \fIborg\-info(1)\fP, \fIborg\-diff(1)\fP, \fIborg\-prune(1)\fP, \fIborg\-patterns(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-mount.1 b/docs/man/borg-mount.1 index e45f76639f..81b09fcc55 100644 --- a/docs/man/borg-mount.1 +++ b/docs/man/borg-mount.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-mount" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-mount \- Mount archive or an entire repository as a FUSE filesystem .SH SYNOPSIS .sp @@ -45,6 +46,11 @@ When mounting a repository, the top directories will be named like the archives and the directory structure below these will be loaded on\-demand from the repository when entering these directories, so expect some delay. .sp +Care should be taken, as Borg backs up symlinks as\-is. When an archive +or repository is mounted, it is possible to “jump” outside the mount point +by following a symlink. If this happens, files or directories (or versions of them) +that are not part of the archive or repository may appear to be within the mount point. +.sp Unless the \fB\-\-foreground\fP option is given the command will run in the background until the filesystem is \fBunmounted\fP\&. .sp @@ -190,7 +196,6 @@ Remove the specified number of leading path elements. Paths with fewer elements .SH SEE ALSO .sp \fIborg\-common(1)\fP, \fIborg\-umount(1)\fP, \fIborg\-extract(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-patterns.1 b/docs/man/borg-patterns.1 index d2825dceee..d51cdcc2eb 100644 --- a/docs/man/borg-patterns.1 +++ b/docs/man/borg-patterns.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-patterns" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-patterns \- Details regarding patterns .SH DESCRIPTION .sp @@ -65,8 +66,7 @@ by a colon \(aq:\(aq (i.e. \fBfm:path/*\fP, \fBsh:path/**\fP). The default pattern style for \fB\-\-exclude\fP differs from \fB\-\-pattern\fP, see below. .INDENT 0.0 .TP -.B Fnmatch -, selector \fIfm:\fP +.B Fnmatch \%, selector \fIfm:\fP This is the default style for \fB\-\-exclude\fP and \fB\-\-exclude\-from\fP\&. These patterns use a variant of shell pattern syntax, with \(aq*\(aq matching any number of characters, \(aq?\(aq matching any single character, \(aq[...]\(aq @@ -97,8 +97,7 @@ anchor patterns to the start (\(aq^\(aq), to the end (\(aq$\(aq) or both. Path separators (backslash for Windows and \(aq/\(aq on other systems) in paths are always normalized to a forward slash (\(aq/\(aq) before applying a pattern. The regular expression syntax is described in the Python documentation for -the re module -\&. +the re module \%\&. .TP .B Path prefix, selector \fIpp:\fP This pattern style is useful to match whole sub\-directories. The pattern @@ -121,7 +120,7 @@ Other include/exclude patterns that would normally match will be ignored. Same logic applies for exclude. .UNINDENT .sp -\fBNOTE:\fP +\fBNote:\fP .INDENT 0.0 .INDENT 3.5 \fIre:\fP, \fIsh:\fP and \fIfm:\fP patterns are all implemented on top of the Python SRE @@ -233,7 +232,7 @@ This is useful to include paths that are covered in an exclude pattern and would otherwise not be backed up. .UNINDENT .sp -\fBNOTE:\fP +\fBNote:\fP .INDENT 0.0 .INDENT 3.5 Via \fB\-\-pattern\fP or \fB\-\-patterns\-from\fP you can define BOTH inclusion and exclusion @@ -272,7 +271,7 @@ R / .UNINDENT .UNINDENT .sp -\fBNOTE:\fP +\fBNote:\fP .INDENT 0.0 .INDENT 3.5 It\(aqs possible that a sub\-directory/file is matched while parent directories are not. @@ -359,7 +358,6 @@ R /home/susan .sp This allows you to share the same patterns between multiple repositories without needing to specify them on the command line. -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-placeholders.1 b/docs/man/borg-placeholders.1 index 3bab78e5e1..243e9a2b6a 100644 --- a/docs/man/borg-placeholders.1 +++ b/docs/man/borg-placeholders.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-placeholders" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-placeholders \- Details regarding placeholders .SH DESCRIPTION .sp @@ -47,13 +48,11 @@ The full name of the machine in reverse domain name notation. .TP .B {now} The current local date and time, by default in ISO\-8601 format. -You can also supply your own format string -, e.g. {now:%Y\-%m\-%d_%H:%M:%S} +You can also supply your own format string \%, e.g. {now:%Y\-%m\-%d_%H:%M:%S} .TP .B {utcnow} The current UTC date and time, by default in ISO\-8601 format. -You can also supply your own format string -, e.g. {utcnow:%Y\-%m\-%d_%H:%M:%S} +You can also supply your own format string \%, e.g. {utcnow:%Y\-%m\-%d_%H:%M:%S} .TP .B {user} The user name (or UID, if no name is available) of the user running borg. @@ -96,7 +95,7 @@ borg prune \-\-glob\-archives \(aq{hostname}\-*\(aq ... .UNINDENT .UNINDENT .sp -\fBNOTE:\fP +\fBNote:\fP .INDENT 0.0 .INDENT 3.5 systemd uses a difficult, non\-standard syntax for command lines in unit files (refer to @@ -109,7 +108,6 @@ double all percent signs (\fB{hostname}\-{now:%Y\-%m\-%d_%H:%M:%S}\fP becomes \fB{hostname}\-{now:%%Y\-%%m\-%%d_%%H:%%M:%%S}\fP). .UNINDENT .UNINDENT -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-prune.1 b/docs/man/borg-prune.1 index 86f0a5b4f6..a5c27b45e8 100644 --- a/docs/man/borg-prune.1 +++ b/docs/man/borg-prune.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-prune" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-prune \- Prune repository archives according to specified rules .SH SYNOPSIS .sp @@ -42,8 +43,7 @@ Important: Repository disk space is \fBnot\fP freed until you run \fBborg compac .sp This command is normally used by automated backup scripts wanting to keep a certain number of historic backups. This retention policy is commonly referred to as -GFS - +GFS \% (Grandfather\-father\-son) backup rotation scheme. .sp Also, prune automatically removes checkpoint archives (incomplete archives left @@ -203,7 +203,6 @@ There is also a visual example of pruning in \fBdocs/misc/prune\-example.txt\fP\ .SH SEE ALSO .sp \fIborg\-common(1)\fP, \fIborg\-compact(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-recreate.1 b/docs/man/borg-recreate.1 index 6d4f8fd006..67e67ed23d 100644 --- a/docs/man/borg-recreate.1 +++ b/docs/man/borg-recreate.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-recreate" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-recreate \- Re-create archives .SH SYNOPSIS .sp @@ -128,7 +129,7 @@ include/exclude paths matching PATTERN read include/exclude patterns from PATTERNFILE, one per line .TP .B \-\-exclude\-caches -exclude directories that contain a CACHEDIR.TAG file ( ) +exclude directories that contain a CACHEDIR.TAG file (\%) .TP .BI \-\-exclude\-if\-present \ NAME exclude directories that are tagged by containing a filesystem object with the given NAME @@ -199,7 +200,6 @@ Comment: This is a better comment .SH SEE ALSO .sp \fIborg\-common(1)\fP, \fIborg\-patterns(1)\fP, \fIborg\-placeholders(1)\fP, \fIborg\-compression(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-rename.1 b/docs/man/borg-rename.1 index 301a68afbd..5157479fd2 100644 --- a/docs/man/borg-rename.1 +++ b/docs/man/borg-rename.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-rename" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-rename \- Rename an existing archive .SH SYNOPSIS .sp @@ -68,7 +69,6 @@ newname Mon, 2016\-02\-15 19:50:19 .SH SEE ALSO .sp \fIborg\-common(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-serve.1 b/docs/man/borg-serve.1 index a30a973a50..5f188a9cc9 100644 --- a/docs/man/borg-serve.1 +++ b/docs/man/borg-serve.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-serve" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-serve \- Start in server mode. This command is usually not used manually. .SH SYNOPSIS .sp @@ -49,7 +50,7 @@ restrict repository access to PATH. Can be specified multiple times to allow the 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 \fB\-\-restrict\-to\-path\fP 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. .TP .B \-\-append\-only -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 will still be allowed. See \fIappend_only_mode\fP in Additional Notes for more details. +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. @@ -91,7 +92,7 @@ command=\(dqBORG_XXX=value borg serve [...]\(dq,restrict ssh\-rsa [...] .UNINDENT .UNINDENT .sp -\fBNOTE:\fP +\fBNote:\fP .INDENT 0.0 .INDENT 3.5 The examples above use the \fBrestrict\fP directive and assume a POSIX\-compliant @@ -107,8 +108,7 @@ in this case. .UNINDENT .UNINDENT .sp -Details about sshd usage: sshd(8) - +Details about sshd usage: sshd(8) \% .SS SSH Configuration .sp \fBborg serve\fP\(aqs pipes (\fBstdin\fP/\fBstdout\fP/\fBstderr\fP) are connected to the \fBsshd\fP process on the server side. In the event that the SSH connection between \fBborg serve\fP and the client is disconnected or stuck abnormally (for example, due to a network outage), it can take a long time for \fBsshd\fP to notice the client is disconnected. In the meantime, \fBsshd\fP continues running, and as a result so does the \fBborg serve\fP process holding the lock on the repository. This can cause subsequent \fBborg\fP operations on the remote repository to fail with the error: \fBFailed to create/acquire the lock\fP\&. @@ -160,8 +160,7 @@ chsh \-s /bin/sh BORGUSER .UNINDENT .UNINDENT .sp -Because the configured shell is used by openssh - +Because the configured shell is used by openssh \% to execute the command configured through the \fBauthorized_keys\fP file using \fB\(dq$SHELL\(dq \-c \(dq$COMMAND\(dq\fP, setting a minimal shell implementation reduces the attack surface @@ -170,7 +169,6 @@ used. .SH SEE ALSO .sp \fIborg\-common(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-umount.1 b/docs/man/borg-umount.1 index 2d99ec8bfb..5a139037c8 100644 --- a/docs/man/borg-umount.1 +++ b/docs/man/borg-umount.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-umount" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-umount \- un-mount the FUSE filesystem .SH SYNOPSIS .sp @@ -113,7 +114,7 @@ bin boot etc home lib lib64 lost+found media mnt opt root sbin s .UNINDENT .UNINDENT .sp -\fBNOTE:\fP +\fBNote:\fP .INDENT 0.0 .INDENT 3.5 \fBborgfs\fP will be automatically provided if you used a distribution @@ -124,7 +125,6 @@ to manually create a symlink (see \fIpyinstaller\-binary\fP). .SH SEE ALSO .sp \fIborg\-common(1)\fP, \fIborg\-mount(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-upgrade.1 b/docs/man/borg-upgrade.1 index 50359a93f2..e4889a9b5c 100644 --- a/docs/man/borg-upgrade.1 +++ b/docs/man/borg-upgrade.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-upgrade" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-upgrade \- upgrade a repository from a previous version .SH SYNOPSIS .sp @@ -86,7 +87,7 @@ If you routinely do this you might not want to enable this upgrade reverse the upgrade by issuing \fBborg upgrade \-\-disable\-tam REPO\fP\&. .sp See - +\% for details. .SS Attic and Borg 0.xx to Borg 1.x .sp @@ -207,7 +208,6 @@ borg key migrate\-to\-repokey repo .SH SEE ALSO .sp \fIborg\-common(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-version.1 b/docs/man/borg-version.1 index db3d5b6a0b..595071cc7e 100644 --- a/docs/man/borg-version.1 +++ b/docs/man/borg-version.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-version" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-version \- Display the borg client / borg server version .SH SYNOPSIS .sp @@ -75,7 +76,6 @@ repository (used to determine client/server situation) .SH SEE ALSO .sp \fIborg\-common(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg-with-lock.1 b/docs/man/borg-with-lock.1 index d654537268..a4bcb4df04 100644 --- a/docs/man/borg-with-lock.1 +++ b/docs/man/borg-with-lock.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg-with-lock" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg-with-lock \- run a user specified command with the repository lock held .SH SYNOPSIS .sp @@ -50,7 +51,7 @@ running in the repository), then execute the given command as a subprocess and w for its termination, release the lock, and return the user command\(aqs return code as Borg\(aqs return code. .sp -\fBNOTE:\fP +\fBNote:\fP .INDENT 0.0 .INDENT 3.5 If you copy a repository with the lock held, the lock will be present in @@ -77,7 +78,6 @@ command arguments .SH SEE ALSO .sp \fIborg\-common(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borg.1 b/docs/man/borg.1 index ae936b36d6..8c319a89c1 100644 --- a/docs/man/borg.1 +++ b/docs/man/borg.1 @@ -1,5 +1,6 @@ '\" t -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -28,8 +29,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borg" "1" "2026-03-18" "" "borg backup tool" +.SH Name borg \- deduplicating and encrypting backup tool .SH SYNOPSIS .sp @@ -170,7 +171,7 @@ $ borg compact /path/to/repo .UNINDENT .UNINDENT .sp -\fBNOTE:\fP +\fBNote:\fP .INDENT 0.0 .INDENT 3.5 Borg is quiet by default (it works on WARNING log level). @@ -198,7 +199,7 @@ borg create repo::archive \-s \-\-progress path # BAD .UNINDENT .UNINDENT .sp -This is due to a problem in the argparse module: +This is due to a problem in the argparse module: \% .SS Repository URLs .sp \fBLocal filesystem\fP (or locally mounted network filesystem): @@ -212,7 +213,7 @@ expanded by your shell). .sp Note: you may also prepend a \fBfile://\fP to a filesystem path to get URL style. .sp -\fBRemote repositories\fP accessed via ssh : +\fBRemote repositories\fP accessed via ssh \%: .sp \fBssh://user@host:port/path/to/repo\fP \- remote repo, absolute path, port can be given .sp @@ -309,7 +310,7 @@ to get critical level output. While you can set misc. log levels, do not expect that every command will give different output on different log levels \- it\(aqs just a possibility. .sp -\fBWARNING:\fP +\fBWarning:\fP .INDENT 0.0 .INDENT 3.5 Options \fB\-\-critical\fP and \fB\-\-error\fP are provided for completeness, @@ -426,11 +427,10 @@ a unique id based on the MAC address of the network interface. Except if that MA that case it returns a random value, which is not what we want (because it kills automatic stale lock removal). So, if you have a all\-zero MAC address or other reasons to better externally control the host id, just set this environment variable to a unique value. If all your FQDNs are unique, you can just use the FQDN. If not, -use \&. +use \%\&. .TP .B BORG_LOGGING_CONF -When set, use the given filename as INI -\-style logging configuration. +When set, use the given filename as INI \%\-style logging configuration. A basic example conf can be found at \fBdocs/misc/logging.conf\fP\&. .TP .B BORG_RSH @@ -583,16 +583,14 @@ to modify \fBBORG_BASE_DIR\fP: the other paths for cache, config etc. will adapt .TP .B BORG_CACHE_DIR Defaults to \fB$BORG_BASE_DIR/.cache/borg\fP\&. If \fBBORG_BASE_DIR\fP is not explicitly set while -XDG env var - \fBXDG_CACHE_HOME\fP is set, then \fB$XDG_CACHE_HOME/borg\fP is being used instead. +XDG env var \% \fBXDG_CACHE_HOME\fP is set, then \fB$XDG_CACHE_HOME/borg\fP is being used instead. This directory contains the local cache and might need a lot of space for dealing with big repositories. Make sure you\(aqre aware of the associated security aspects of the cache location: \fIcache_security\fP .TP .B BORG_CONFIG_DIR Defaults to \fB$BORG_BASE_DIR/.config/borg\fP\&. If \fBBORG_BASE_DIR\fP is not explicitly set while -XDG env var - \fBXDG_CONFIG_HOME\fP is set, then \fB$XDG_CONFIG_HOME/borg\fP is being used instead. +XDG env var \% \fBXDG_CONFIG_HOME\fP is set, then \fB$XDG_CONFIG_HOME/borg\fP is being used instead. This directory contains all borg configuration directories, see the FAQ for a security advisory about the data in this directory: \fIhome_config_borg\fP .TP @@ -627,8 +625,7 @@ you need to point to the correct key file matching the repository the command wi .TP .B TMPDIR This is where temporary files are stored (might need a lot of temporary space for some -operations), see tempfile - for details. +operations), see tempfile \% for details. .UNINDENT .TP .B Building: @@ -694,19 +691,16 @@ config file), but the code tries to work also if hardlinks are not supported. .SS Units .sp To display quantities, Borg takes care of respecting the -usual conventions of scale. Disk sizes are displayed in decimal -, using powers of ten (so -\fBkB\fP means 1000 bytes). For memory usage, binary prefixes - are used, and are -indicated using the IEC binary prefixes -, +usual conventions of scale. Disk sizes are displayed in decimal \%, using powers of ten (so +\fBkB\fP means 1000 bytes). For memory usage, binary prefixes \% are used, and are +indicated using the IEC binary prefixes \%, using powers of two (so \fBKiB\fP means 1024 bytes). .SS Date and Time .sp We format date and time conforming to ISO\-8601, that is: YYYY\-MM\-DD and HH:MM:SS (24h clock). .sp -For more information about that, see: +For more information about that, see: \% .sp Unless otherwise noted, we display local date and time. Internally, we store and process date and time as UTC. @@ -753,7 +747,7 @@ borg check: the repository check computes the checksums of all chunks borg delete repo: low CPU usage .TP .B CPU (only for client/server operation): -When using borg in a client/server way with a repo, the ssh +When using borg in a client/server way with a \% repo, the ssh processes used for the transport layer will need some CPU on the client and on the server due to the crypto they are doing \- esp. if you are pumping big amounts of data. @@ -974,19 +968,18 @@ The BSDs define additional flags. \fIborg\-compression(1)\fP, \fIborg\-patterns(1)\fP, \fIborg\-placeholders(1)\fP .INDENT 0.0 .IP \(bu 2 -Main web site +Main web site \% .IP \(bu 2 -Releases +Releases \% .IP \(bu 2 -Changelog +Changelog \% .IP \(bu 2 -GitHub +GitHub \% .IP \(bu 2 -Security contact +Security contact \% .UNINDENT -.SH AUTHOR +.SH Author The Borg Collective orphan: -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/man/borgfs.1 b/docs/man/borgfs.1 index 40029d8244..9264a43110 100644 --- a/docs/man/borgfs.1 +++ b/docs/man/borgfs.1 @@ -1,4 +1,5 @@ -.\" Man page generated from reStructuredText. +.\" Man page generated from reStructuredText +.\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 @@ -27,8 +28,8 @@ 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" "2025-12-01" "" "borg backup tool" -.SH NAME +.TH "borgfs" "1" "2026-03-18" "" "borg backup tool" +.SH Name borgfs \- Mount archive or an entire repository as a FUSE filesystem .SH SYNOPSIS .sp @@ -45,6 +46,11 @@ When mounting a repository, the top directories will be named like the archives and the directory structure below these will be loaded on\-demand from the repository when entering these directories, so expect some delay. .sp +Care should be taken, as Borg backs up symlinks as\-is. When an archive +or repository is mounted, it is possible to “jump” outside the mount point +by following a symlink. If this happens, files or directories (or versions of them) +that are not part of the archive or repository may appear to be within the mount point. +.sp Unless the \fB\-\-foreground\fP option is given the command will run in the background until the filesystem is \fBunmounted\fP\&. .sp @@ -193,7 +199,6 @@ Remove the specified number of leading path elements. Paths with fewer elements .SH SEE ALSO .sp \fIborg\-common(1)\fP -.SH AUTHOR +.SH Author The Borg Collective -.\" Generated by docutils manpage writer. -. +.\" End of generated man page. diff --git a/docs/usage/key_export.rst.inc b/docs/usage/key_export.rst.inc index 00054aebe1..ff1417d17a 100644 --- a/docs/usage/key_export.rst.inc +++ b/docs/usage/key_export.rst.inc @@ -57,28 +57,34 @@ borg key export Description ~~~~~~~~~~~ +This command backs up the borg key. + If repository encryption is used, the repository is inaccessible -without the key. This command allows one to back up this essential key. +without the borg key (and the passphrase that protects the borg key). +If a repository is not encrypted, but authenticated, the borg key is +still needed to access the repository normally. + +For repositories using **keyfile** encryption the key is kept locally +on the system that is capable of doing backups. To guard against loss +or corruption of this key, the key needs to be backed up independently +of the main data backup. + +For repositories using **repokey** encryption or **authenticated** mode +the key is kept in the repository. A backup is thus not strictly needed, +but guards against the repository becoming inaccessible if the key is +corrupted or lost. + Note that the backup produced does not include the passphrase itself -(i.e., the exported key stays encrypted). In order to regain access to a +(i.e. the exported key stays encrypted). In order to regain access to a repository, one needs both the exported key and the original passphrase. +Keep the exported key and the passphrase at safe places. There are three backup formats. The normal backup format is suitable for digital storage as a file. The ``--paper`` backup format is optimized -for printing and typing in while importing, with per-line checks to -reduce problems with manual input. The ``--qr-html`` option creates a printable +for printing and typing in while importing, with per line checks to +reduce problems with manual input. The ``--qr-html`` creates a printable HTML template with a QR code and a copy of the ``--paper``-formatted key. -For repositories using keyfile encryption the key is saved locally -on the system that is capable of doing backups. To guard against loss -of this key, the key needs to be backed up independently of the main -data backup. - -For repositories using repokey encryption, the key is saved in the -repository in the config file. A backup is thus not strictly needed, -but it guards against the repository becoming inaccessible if the file -is damaged for some reason. - Examples:: borg key export /path/to/repo > encrypted-key-backup diff --git a/docs/usage/mount.rst.inc b/docs/usage/mount.rst.inc index 0e2af1828a..ba355cdd39 100644 --- a/docs/usage/mount.rst.inc +++ b/docs/usage/mount.rst.inc @@ -120,6 +120,11 @@ When mounting a repository, the top directories will be named like the archives and the directory structure below these will be loaded on-demand from the repository when entering these directories, so expect some delay. +Care should be taken, as Borg backs up symlinks as-is. When an archive +or repository is mounted, it is possible to “jump” outside the mount point +by following a symlink. If this happens, files or directories (or versions of them) +that are not part of the archive or repository may appear to be within the mount point. + Unless the ``--foreground`` option is given the command will run in the background until the filesystem is ``unmounted``. diff --git a/docs/usage/serve.rst.inc b/docs/usage/serve.rst.inc index e40692b5a5..fd8324f35c 100644 --- a/docs/usage/serve.rst.inc +++ b/docs/usage/serve.rst.inc @@ -19,7 +19,7 @@ borg serve +-------------------------------------------------------+-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | | ``--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` will still be allowed. See :ref:`append_only_mode` in Additional Notes for more details. | + | | ``--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. | +-------------------------------------------------------+-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -43,7 +43,7 @@ borg serve options --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` will still be allowed. See :ref:`append_only_mode` in Additional Notes for more details. + --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.