Commit graph

236 commits

Author SHA1 Message Date
Mrityunjay Raj
d712776b42 docs: replace insecure http:// links with https://, fixes #9302 2026-02-13 01:59:19 +05:30
Mrityunjay Raj
ffe360a2ec fix typos found by codespell
- backupped → backed-up (docs/faq.rst)
- splitted → expected (src/borg/testsuite/xattr_test.py)
- uptodate → up-to-date (docs/development.rst, src/borg/repository.py)

Closes #9295
2026-02-13 00:16:54 +05:30
Thomas Waldmann
f646d2c4d0
docs: consolidate key backup info in borg key export, fixes #6204
Consolidate key backup documentation into `borg key export` and reference
it from Quickstart and FAQ to avoid duplication and inconsistency.

Clarify that while `repokey` or `authenticated` mode stores the key in the
repo, a separate backup is still recommended to protect against repository
corruption or data loss.
2026-02-08 11:50:31 +01:00
Thomas Waldmann
3642c7903b
docs: some fixes/update to the FAQ 2025-11-21 17:16:35 +01:00
Thomas Waldmann
d0dab94c07
docs: What happens when a new keyfile repo is created at the same path?, fixes #6230
Also add a test.
2025-10-10 14:24:05 +02:00
Thomas Waldmann
2c7bec0149
manual corrections/reverts 2025-09-23 14:56:35 +02:00
Thomas Waldmann
3120f9cd1c
fixed typos and grammar (AI)
this was done by Junie AI.
2025-09-23 14:56:23 +02:00
dataprolet
5b01535768
Adds systemd-inhibit and examples (#8989) 2025-08-11 15:06:36 +02:00
Thomas Waldmann
9e6d90754e
remove remainders of append-only support
Some features like append-only repositories rely on a server-side component
that enforces them (because that shall only be controllable server-side,
not client-side).

So, that can only work, if such a server-side component exists, which is the
case for borg 1.x ssh: repositories (but not for borg 1.x non-ssh: repositories).

For borg2, we currently have:
- fs repos
- sftp: repos
- rclone: repos (enabling many different cloud providers)
- s3/b3: repos
- ssh: repos using client/server rpc code similar as in borg 1.x

So, only for the last method we have a borg server-side process that could enforce some features, but not for any of the other repo types.

For append-only the current idea is that this should not be done within borg,
but solved by a missing repo object delete permission enforced by the storage.

borg create could then use credentials that miss permission to delete,
while borg compact would use credentials that include permission to delete.
2025-04-28 18:55:15 +02:00
Thomas Waldmann
2996daff97
docs: add FAQ entry about pure-python msgpack warning, fixes #8323 2025-04-09 17:07:18 +02:00
infectormp
bfa944af07
FAQ: Why backups are slow on a Linux server that is a member of a windows domain? (#8636)
FAQ: Why backups are slow on a Linux server that is a member of a windows domain?
2025-01-18 00:03:22 +01:00
Martin Richtarsky
b913d9dd1a docs/FAQ: Clean up entries regarding SSH settings
Link to recommended ones
2024-11-01 07:43:47 +01:00
Helmut Grohne
70f173caa7 FAQ: Why is backing up an unmodified FAT filesystem slow on Linux? 2024-09-23 10:36:56 +02:00
Thomas Waldmann
a891559578
files cache improvements, fixes #8385, fixes #5658
- changes to locally stored files cache:

  - store as files.<H(archive_name)>
  - user can manually control suffix via env var
  - if local files cache is not found, build from previous archive.
- enable rebuilding the files cache via loading the previous
  archive's metadata from the repo (better than starting with
  empty files cache and needing to read/chunk/hash all files).
  previous archive == same archive name, latest timestamp in repo.
- remove AdHocCache (not needed any more, slow)
- remove BORG_CACHE_IMPL, we only have one
- remove cache lock (this was blocking parallel backups to same
  repo from same machine/user).

Cache entries now have ctime AND mtime.

Note: TTL and age still needed for discarding removed files.
      But due to the separate files caches per series, the TTL
      was lowered to 2 (from 20).
2024-09-20 00:40:49 +02:00
Thomas Waldmann
1bc5902718
docs: update about archive series
in borg 1.x, we used to put a timestamp into the archive name to make
it unique, because borg1 required that.

borg2 does not require unique archive names, but it encourages you
to even use an identical archive name within the same SERIES of archives.
that makes matching (e.g. for prune, but also at other places) much
simpler and borg KNOWS which archives belong to the same series.
2024-09-18 14:05:12 +02:00
Eddie Carswell
9fe3cb686f
Update repository URLs in docs to use new syntax
Fixes #8361

Signed-off-by: Eddie Carswell <eddiecarswell13@yahoo.com>
2024-09-11 22:03:59 -05:00
Thomas Waldmann
78c7aabbb6
docs: fix usage docs and references for repo-* commands 2024-09-08 18:06:26 +02:00
Thomas Waldmann
04dfadbbd6
cli: rename r* commands to repo-*
also:
- adapt tests
- adapt BuildMan manpage generation
- adapt help strings / doc strings
- docs
2024-09-08 18:06:24 +02:00
Thomas Waldmann
ace97fadec
docs: updates / removing outdated stuff 2024-09-08 12:00:50 +02:00
Thomas Waldmann
5e3f2c04d5
remove archive checkpointing
borg1 needed this due to its transactional / rollback behaviour:
if there was uncommitted stuff in the repo, next repo opening automatically
rolled back to last commit. thus we needed checkpoint archives to reference
chunks and commit the repo.

borg2 does not do that anymore, unused chunks are only removed when the
user invokes borg compact.

thus, if a borg create gets interrupted, the user can just run borg create
again and it will find some chunks are already in the repo, making progress
even if borg create gets frequently interrupted.
2024-09-07 22:00:54 +02:00
Thomas Waldmann
d6a70f48f2
remove LocalCache
Note: this is the default cache implementation in borg 1.x,
it worked well, but there were some issues:

- if the local chunks cache got out of sync with the repository,
  it needed an expensive rebuild from the infos in all archives.
- to optimize that, a local chunks.archive.d cache was used to
  speed that up, but at the price of quite significant space needs.

AdhocCacheWithFiles replaced this with a non-persistent chunks cache,
requesting all chunkids from the repository to initialize a simplified
non-persistent chunks index, that does not do real refcounting and also
initially does not have size information for pre-existing chunks.

We want to move away from precise refcounting, LocalCache needs to die.
2024-09-07 22:00:31 +02:00
William Bonnaventure
de5d130dda Update docs for BORG_USE_CHUNKS_ARCHIVE 2024-07-13 21:26:18 +02:00
AJ Jordan
f3ae0467b5
Fix typo 2023-12-17 01:13:43 -05:00
Thomas Waldmann
4325656f4c
docs: not only attack/unsafe, can also be a fs issue, fixes #7853 2023-11-05 17:36:31 +01:00
Thomas Waldmann
deed47824f
mount -olocal: how to show mount in finder's sidebar, fixes #5321 2023-07-01 16:07:31 +02:00
Thomas Waldmann
fbf463496b
docs: fix some markup / linking issues 2023-06-11 23:03:21 +02:00
Thomas Waldmann
c8996aaf12
BORG_DATA_DIR / BORG_SECURITY_DIR docs update 2023-05-18 12:48:47 +02:00
Thomas Waldmann
8e6c504654
docs: fix some -a / --match-archives issues
at some places, the docs were not updated yet.

for borg 1.x, -a (aka --glob-archives) expected
sh: style glob patterns ONLY (but one must not
give sh: explicitly).

for borg 2, -a (aka --match-archives) defaults
to id: style (identical match), so one must give
sh: if one wants shell-style globbing.
2023-05-16 00:50:50 +02:00
Thomas Waldmann
23dcc18bec
update FAQ about locale/unicode issues, fixes #6999 2023-03-04 16:30:24 +01:00
Thomas Waldmann
b92f4aa487
remove --consider-part-files, related stats code, update docs
we now just treat that one .borg_part file we might have inside
checkpoint archives as a normal file.

people can recognize via the file name it is a partial file.

nobody cares for statistics of checkpoint files and the final
archive now does not contain any partial files any more, thus
no needs to maintain statistics about count and size of part
files.
2023-02-01 13:04:18 +01:00
Josh Soref
a26c1d99d9 spelling: new
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2023-01-12 09:36:03 -05:00
Paul D
253d8e8d4e Docs grammar fixes
joined split infinitives, and relocated adverbs appropriately.
2022-12-29 22:26:54 +00:00
Paul D
a85b643866 Docs grammar fixes.
One cannot "to not x", but one can "not to x".
Avoiding split infinitives gives the added bonus that machine
translation yields better results.

setup (n/adj) vs set(v) up. We don't "I setup it" but "I set it up".

Likewise for login(n/adj) and log(v) in, backup(n/adj) and back(v) up.
2022-12-29 00:01:48 +00:00
Thomas Waldmann
fb74fdb710 massively increase per archive metadata stream size limit, fixes #1473
implemented by introducing one level of indirection, the limit is now
very high, so it is not practically relevant any more.

we always use the indirection (storing the metadata stream chunk ids list not
directly into the archive item, but into some repo objects referenced by the new
ArchiveItem.item_ptrs list).

thus, the code behaves the same for all archive sizes.
2022-08-06 19:01:41 +02:00
Thomas Waldmann
89e4a52c56 docs: misc. updates
- remove outdated stuff
- fix infos for borg 2.0
2022-08-03 11:35:25 +02:00
Thomas Waldmann
c7ed985ffd Merge branch 'master' into borg2 2022-07-02 23:28:39 +02:00
Thomas Waldmann
6888d5dcb2 remove -P (aka --prefix) option, fixes #6806
-a (aka --glob-archives) can be used for same purpose and is more powerful.
2022-07-02 20:52:41 +02:00
TW
e577ccb094
Merge pull request #6755 from fantasya-pbem/docs/5960_FAQ-quota-size
[DOCS] #5960 - FAQ: Full quota / full disk
2022-06-29 14:42:11 +02:00
Thomas Waldmann
51cf85e627 build_usage / build_man / doc updates 2022-06-25 21:58:19 +02:00
Thalian
036eb97f03 [DOCS] #5960 - FAQ: Full quota / full disk 2022-06-24 17:55:14 +02:00
Thomas Waldmann
e0c64629d1 Merge branch 'master' into borg2
strange conflicts, automated patches seemed to not have applied correctly.
also had to fix some stuff manually, tests were failing.
2022-06-23 11:25:01 +02:00
Thalian
c7c98ca0fd [DOCS] #4776 - FAQ: How to swap backup media
fixes #4776
2022-06-05 18:05:16 +02:00
Thalian
b4d3859b9e #6407 - Document Borg 1.2 pattern behavior change
Make clear that absolute paths always go into the matcher as if they are relative (without leading slash). Adapt all examples accordingly.

fixes #6407
2022-05-27 14:13:12 +02:00
Thomas Waldmann
6bfdb3f630 refactor hardlink_master processing globally
borg now has the chunks list in every item with content.
due to the symmetric way how borg now deals with hardlinks using
item.hlid, processing gets much simpler.

but some places where borg deals with other "sources" of hardlinks
still need to do some hardlink management:
borg uses the HardLinkManager there now (which is not much more
than a dict, but keeps documentation at one place and avoids some
code duplication we had before).

item.hlid is computed via hardlink_id function.

support hardlinked symlinks, fixes #2379
as we use item.hlid now to group hardlinks together,
there is no conflict with the item.source usage for
symlink targets any more.

2nd+ hardlinks now add to the files count as did the 1st one.
for borg, now all hardlinks are created equal.
so any hardlink item with chunks now adds to the "file" count.

ItemFormatter: support {hlid} instead of {source} for hardlinks
2022-05-18 14:20:01 +02:00
Andrea Gelmini
c79fd61b5c
Fix typos (#6688)
fix typos

Co-authored-by: Thomas Waldmann <tw@waldmann-edv.de>
2022-05-15 21:23:48 +02:00
Thomas Waldmann
9f09a9e096 docs: mention BORG_FILES_CACHE_SUFFIX as alternative to BORG_FILES_CACHE_TTL, fixes #5602 2022-04-30 20:28:46 +02:00
Thomas Waldmann
c2ad118434 FAQ: add a hint about --debug-topic=files_cache 2022-04-20 13:00:02 +02:00
Thomas Waldmann
18c398e708 virtualisation speed tips 2022-04-13 22:48:27 +02:00
Andrey Andreyevich Bienkowski
08f82ee408
Argon2: documentation and changelog (#6560)
docs: borg key change-algorithm
docs: borg init --key-algorithm
docs: "this is not a borg repo" can be due to argon2 and old borg
2022-04-11 11:21:07 +02:00
Jonathan Rascher
da07c36d6b
(docs) Recommend umask for passphrase file perms
The previous sample for creating a ~/.borg-passphrase file creates it first and then chmod's it to 400 permissions. That's probably fine in practice, but means there's a tiny window where the passphrase file is sitting with default permissions (likely world readable, depending on the system umask).

It seems safer to first change the umask to remove all group & world bits (0077) _before_ creating the file. To be polite and avoid messing with the user's previous umask, we do this in a subshell. (Note that umask 0077 leads to a mode of 600 rather than the previous 400, because removing the owner write bit doesn't seem to buy much since the owner can just chmod the file anyway.)
2022-04-03 00:34:33 -05:00