-
-
Notifications
You must be signed in to change notification settings - Fork 836
Description
In 2.0.0b16, the remainders of "--append-only" were removed.
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.
Also, a-o depended on how borg 1.x dealt with the segment-files (always appending new stuff at the end, transactional behavior with commit or rollback). borg2 neither uses segment files nor transactions.
For an "append-only replacement" (let's call it simply "no-delete" for now) the current idea is that this should not be done within borg, but solved by a not-granted repo object delete/overwrite permission enforced by the storage.
borg create could then use credentials that miss permission to delete/overwrite existing repo objects in archives/* and data/*, so nothing can get removed or damaged in the repo, but a new backup archive can be added.
borg delete and borg prune would need permissions to do the soft-delete in archives/*.
borg compact would use credentials that include permission to delete.
borg repo-compress would need overwrite permissions (because the chunk ID is based on H(plaintext) and stays the same if data gets compressed differently).