Skip to content

Commit c8c7e80

Browse files
update with borg 2.0.0b22 changes
1 parent 3b1b2aa commit c8c7e80

1 file changed

Lines changed: 41 additions & 27 deletions

File tree

releases/borg-2.0.rst

Lines changed: 41 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -48,49 +48,54 @@ Major new features
4848
and optimizes working with archives (caching, pruning, repo-list output).
4949

5050
An archive series is now simply all the archives in a repository that have
51-
the same name. On the other hand, the unique identifier for a single archive is now its ID
52-
(the hash, which can be shortened as long as it is unique).
51+
the same name. On the other hand, the unique identifier for a single archive
52+
is now its ID (the hash, which can be shortened as long as it is unique).
5353

5454
- separation of archive metadata: name, tags, user, host, timestamp
5555

5656
To support having a simple, clean archive (series) name, Borg now tracks and
57-
displays name, tags, user, host, and timestamp separately (so you don't need to
58-
put everything into the archive name as when using Borg 1.x).
57+
displays name, tags, user, host, and timestamp separately (so you don't need
58+
to put everything into the archive name as when using Borg 1.x).
5959

6060
It's now possible to tag (label) archives. There is a special tag for
6161
protecting archives against delete/prune/recreate.
6262

6363
Matching can be done on archive (series) name, tags, user, host, and archive ID.
6464

65+
- packs
66+
67+
- a pack contains multiple chunks - less latency impact, less storage space overhead
68+
- packs are assembled client-side, then stored into the repository, enabling
69+
efficient usage of cloud storage (and other high-latency storages)
70+
- optionally, BORG_STORE_CACHE can be used to enable borgstore caching
71+
6572
- new repository and locking implementation based on the borgstore project
6673

6774
- borgstore is a key/value store in Python, currently supporting file:, REST
68-
(https/http talking to the REST server that comes with borgstore also),
69-
sftp:, rclone:, and s3:/b2: backends.
75+
(talking to the REST server that comes with borgstore also, either via a TCP
76+
connection to a reachable IP:port or via stdio over an ssh tunnel), sftp:,
77+
rclone:, and s3:/b2: backends.
7078
Borgstore backends are easy to implement, so there might be even more in
7179
the future.
72-
- Borg uses these to implement file: and ssh: repositories and (new) sftp: and
73-
rclone: repositories. Via rclone, Borg can use cloud repositories now!
74-
- In addition to ssh: repositories, we also have socket: repositories now.
80+
- Borg uses these to implement file:, rest:, https:, sftp:, s3: / b2: and
81+
rclone: repositories. Via rclone, all sorts of cloud repositories can be used!
82+
- Remote repositories (ssh flavour) are implemented as REST-over-stdio-over-ssh,
83+
so we can get rid of the old RPC-over-stdio-over-ssh method.
7584
- Concurrent parallel access to a repository is now possible for most Borg
7685
commands (except check and compact).
77-
- A "repository index" is no longer needed because objects are directly
78-
found by their ID. The memory requirements of this index were proportional to
79-
the object count in the repository. Thus, Borg now needs less RAM.
86+
- The "chunks index" now lives in the repository, so all clients can share it.
87+
No more expensive re-syncing the chunks index.
8088
- Stale repository locks get auto-removed if they don't get refreshed or if
8189
their owner process is known dead.
82-
- Borg compact does much less I/O because it does not need to compact large
83-
"segment files" to free space; each repository object is now stored separately
84-
and thus can also be deleted individually.
8590
- Borg delete and prune are much faster now.
8691
- The repository works very differently now:
8792

8893
- borg 1.x: transaction-based (commit or roll back), log-like, append-only
8994
segment files, precise refcounting, repo index needed, exclusive lock
9095
needed, checkpointing and .part files needed.
9196
- borg 2: convergence, write order, separate objects, no refcounting,
92-
garbage collection, no repo index needed, simplicity, mostly works with
93-
a shared lock, no need for checkpointing or .part files.
97+
garbage collection, mostly works with a shared lock, no need for
98+
archive creation checkpointing or .part files.
9499

95100
- uses a new hashtable (used for indexes, caches) based on the borghash project
96101

@@ -126,14 +131,19 @@ Major new features
126131
- Using session keys: more secure and easier to manage, especially in multi-
127132
client or multi-repo contexts. By doing this, we could get rid of problematic
128133
long-term nonce/counter management.
134+
- borg keys:
135+
136+
- locate the key automatically in the key directory or in the repository
137+
- support multiple borg keys per repository
138+
- The super-fast blake3 algorithm replaces blake2b for new repos.
129139
- The old crypto code will be removed in Borg 2.1 (currently we still need
130140
it to read from your old Borg 1.x repositories). Removing AES-CTR, PBKDF2,
131-
encrypt-and-mac, counter/nonce management will make Borg more secure,
141+
blake2b, encrypt-and-mac, counter/nonce management will make Borg more secure,
132142
easier to use and develop.
133143

134144
- chunker improvements
135145

136-
- New and improved "buzhash64" chunker
146+
- New and improved "buzhash64" and "fastcdc" chunkers.
137147
- All chunker code is now in Cython (the buzhash chunker used to be a big,
138148
hard-to-maintain piece of C code that included file reading and buffer
139149
management). The file reading and buffer management code has been moved
@@ -153,11 +163,13 @@ Major new features
153163
- remote repository URLs default to relative paths, using an absolute path
154164
is possible.
155165
- no longer supports SCP-style repo parameters (parsing ambiguity issues; no
156-
:port possible); just use ssh://user@host:port/path.
166+
:port possible); just use rest://user@host:port/path.
157167
- Separated repo and archive; no "::" anymore
158168
- Split some commands that worked on archives and repositories into two separate
159169
commands (makes the code/docs/help easier).
160170
- Renamed Borg init to Borg repo-create for better consistency
171+
- Separate ``borg repo-create`` options to specify encryption, key location
172+
and ID algorithm.
161173
- BORG_EXIT_CODES=modern is the default now to get more specific process
162174
exit codes
163175
- Use jsonargparse as CLI argument/option parser, also supporting YAML configs
@@ -170,9 +182,10 @@ Major new features
170182

171183
- identical, regex, or glob/shell-style matching on the archive name
172184
- matching on archive tags, user, host, and ID (prefix)
185+
- matching on the archive creation timestamp
173186
- giving the option multiple times (logical AND)
174187
- extract --continue: continue a previously interrupted extraction
175-
- new borg repo-compress command can do a repo-wide efficient recompression.
188+
176189
- borg analyze: list changed chunks' sizes per directory.
177190
- borg key change-location: usable for repokey <-> keyfile location change
178191
- borg benchmark cpu (so you can actually see what's fastest for your CPU)
@@ -185,7 +198,10 @@ Major new features
185198
- borg repo-space: optionally, you can allocate some reserved space in the
186199
repo to free in "file system full" conditions.
187200
- borg version: show local/remote Borg version
188-
- borg prune: add quarterly pruning strategies (3M and 13W)
201+
- borg prune:
202+
203+
- add quarterly pruning strategies (3M and 13W)
204+
- add optional interval support for all prune retention flags
189205
- borg delete: it now SOFT-deletes archives and there is "borg undelete"
190206
to undo that. "borg compact" will free all space in the repository that
191207
belongs to soft-deleted archives, thus undelete only works for soft-deleted
@@ -198,10 +214,9 @@ Major new features
198214
e.g., -a 'PREFIX*'
199215
- borg upgrade (was only relevant for Attic/old Borg)
200216
- removed deprecated CLI options
201-
- Remove recreate --recompress option; the repo-wide "repo-compress" is
202-
more efficient.
217+
- Remove recreate --recompress option.
203218
- Remove borg config command (it only worked locally anyway)
204-
- repository storage quota limit
219+
- repository quota (was replaced by borgstore posixfs backend quota support)
205220
- repository append-only mode (was replaced by borgstore posixfs backend
206221
permissions [all, read-only, write-only, no-delete])
207222

@@ -231,7 +246,6 @@ Other changes
231246
- make user/group/uid/gid optional in archived files
232247
- make sure archive name/comment and other data that get into JSON are valid
233248
UTF-8 (no surrogate escapes)
234-
- new remote and progress logging (tunneled through the RPC result channel)
235249
- internal data format/processing changes
236250

237251
- Using msgpack spec 2.0 now, cleanly differentiating between text and
@@ -270,7 +284,7 @@ Other changes
270284

271285
- python, packaging and library changes
272286

273-
- minimum requirement: Python 3.10
287+
- minimum requirement: Python 3.11
274288
- we unbundled all third-party code and require the respective libraries to
275289
be available and installed. This makes packaging easier for distribution package
276290
maintainers.

0 commit comments

Comments
 (0)