mirror of
https://github.com/borgbackup/borg.git
synced 2024-12-25 01:06:50 +00:00
Merge pull request #4397 from ThomasWaldmann/update-changes-master
update changes (master)
This commit is contained in:
commit
1d61940cfa
1 changed files with 227 additions and 11 deletions
238
docs/changes.rst
238
docs/changes.rst
|
@ -6,6 +6,46 @@ Important notes
|
||||||
|
|
||||||
This section provides information about security and corruption issues.
|
This section provides information about security and corruption issues.
|
||||||
|
|
||||||
|
.. _broken_validator:
|
||||||
|
|
||||||
|
Pre-1.1.4 potential data corruption issue
|
||||||
|
-----------------------------------------
|
||||||
|
|
||||||
|
A data corruption bug was discovered in borg check --repair, see issue #3444.
|
||||||
|
|
||||||
|
This is a 1.1.x regression, releases < 1.1 (e.g. 1.0.x) are not affected.
|
||||||
|
|
||||||
|
To avoid data loss, you must not run borg check --repair using an unfixed version
|
||||||
|
of borg 1.1.x. The first official release that has the fix is 1.1.4.
|
||||||
|
|
||||||
|
Package maintainers may have applied the fix to updated packages of 1.1.x (x<4)
|
||||||
|
though, see the package maintainer's package changelog to make sure.
|
||||||
|
|
||||||
|
If you never had missing item metadata chunks, the bug has not affected you
|
||||||
|
even if you did run borg check --repair with an unfixed version.
|
||||||
|
|
||||||
|
When borg check --repair tried to repair corrupt archives that miss item metadata
|
||||||
|
chunks, the resync to valid metadata in still present item metadata chunks
|
||||||
|
malfunctioned. This was due to a broken validator that considered all (even valid)
|
||||||
|
item metadata as invalid. As they were considered invalid, borg discarded them.
|
||||||
|
Practically, that means the affected files, directories or other fs objects were
|
||||||
|
discarded from the archive.
|
||||||
|
|
||||||
|
Due to the malfunction, the process was extremely slow, but if you let it
|
||||||
|
complete, borg would have created a "repaired" archive that has lost a lot of items.
|
||||||
|
If you interrupted borg check --repair because it was so strangely slow (killing
|
||||||
|
borg somehow, e.g. Ctrl-C) the transaction was rolled back and no corruption occurred.
|
||||||
|
|
||||||
|
The log message indicating the precondition for the bug triggering looks like:
|
||||||
|
|
||||||
|
item metadata chunk missing [chunk: 001056_bdee87d...a3e50d]
|
||||||
|
|
||||||
|
If you never had that in your borg check --repair runs, you're not affected.
|
||||||
|
|
||||||
|
But if you're unsure or you actually have seen that, better check your archives.
|
||||||
|
By just using "borg list repo::archive" you can see if all expected filesystem
|
||||||
|
items are listed.
|
||||||
|
|
||||||
.. _tam_vuln:
|
.. _tam_vuln:
|
||||||
|
|
||||||
Pre-1.0.9 manifest spoofing vulnerability (CVE-2016-10099)
|
Pre-1.0.9 manifest spoofing vulnerability (CVE-2016-10099)
|
||||||
|
@ -131,14 +171,26 @@ The best check that everything is ok is to run a dry-run extraction::
|
||||||
Changelog
|
Changelog
|
||||||
=========
|
=========
|
||||||
|
|
||||||
Version 1.2.0dev0 (not released yet)
|
Version 1.2.0a2 and earlier (not released yet)
|
||||||
------------------------------------
|
----------------------------------------------
|
||||||
|
|
||||||
|
Please note:
|
||||||
|
|
||||||
|
This is code released for alpha testing (== helping us find bugs).
|
||||||
|
|
||||||
|
It is not suitable to run against your production backup repositories!
|
||||||
|
|
||||||
|
So, if you want to help testing, please run this code additionally to your
|
||||||
|
normal backup and use a separate, fresh repository for it.
|
||||||
|
|
||||||
|
See there for feedback: https://github.com/borgbackup/borg/issues/4360
|
||||||
|
|
||||||
Compatibility notes:
|
Compatibility notes:
|
||||||
|
|
||||||
- dropped support / testing for Python 3.4 and 3.5, minimum requirement is 3.6.
|
- dropped support / testing for Python 3.4, minimum requirement is 3.5.
|
||||||
In case your OS does not provide Python >= 3.6, consider using our binary,
|
In case your OS does not provide Python >= 3.5, consider using our binary,
|
||||||
which does not need an external Python interpreter.
|
which does not need an external Python interpreter.
|
||||||
|
Maybe this requirement will be raised to Python 3.6 later.
|
||||||
- freeing repository space only happens when "borg compact" is invoked.
|
- freeing repository space only happens when "borg compact" is invoked.
|
||||||
- list: corrected mix-up of "isomtime" and "mtime" formats. Previously,
|
- list: corrected mix-up of "isomtime" and "mtime" formats. Previously,
|
||||||
"isomtime" was the default but produced a verbose human format,
|
"isomtime" was the default but produced a verbose human format,
|
||||||
|
@ -166,16 +218,22 @@ New features:
|
||||||
more robustness.
|
more robustness.
|
||||||
See the docs about "borg compact" for more details.
|
See the docs about "borg compact" for more details.
|
||||||
- "borg compact --cleanup-commits" is to cleanup the tons of 17byte long
|
- "borg compact --cleanup-commits" is to cleanup the tons of 17byte long
|
||||||
commit-ony segment files caused by borg 1.1.x issue #2850.
|
commit-only segment files caused by borg 1.1.x issue #2850.
|
||||||
Invoke this once after upgrading (the server side) borg to 1.2.
|
Invoke this once after upgrading (the server side) borg to 1.2.
|
||||||
Compaction now automatically removes unneeded commit-only segment files.
|
Compaction now automatically removes unneeded commit-only segment files.
|
||||||
- prune: Show which rule was applied to keep archive, #2886
|
- prune: Show which rule was applied to keep archive, #2886
|
||||||
|
- add fixed blocksize chunker (see --chunker-params docs), #1086
|
||||||
|
|
||||||
Fixes:
|
Fixes:
|
||||||
|
|
||||||
- repository compaction now automatically removes unneeded 17byte commit-only
|
|
||||||
segments, #2850
|
|
||||||
- avoid stale filehandle issues, #3265
|
- avoid stale filehandle issues, #3265
|
||||||
|
- use more FDs, avoid race conditions on active fs, #906, #908, #1038
|
||||||
|
- add O_NOFOLLOW to base flags, #908
|
||||||
|
- compact:
|
||||||
|
|
||||||
|
- require >10% freeable space in a segment, #2985
|
||||||
|
- repository compaction now automatically removes unneeded 17byte
|
||||||
|
commit-only segments, #2850
|
||||||
- make swidth available on all posix platforms, #2667
|
- make swidth available on all posix platforms, #2667
|
||||||
|
|
||||||
Other changes:
|
Other changes:
|
||||||
|
@ -183,13 +241,21 @@ Other changes:
|
||||||
- repository: better speed and less stuff moving around by using separate
|
- repository: better speed and less stuff moving around by using separate
|
||||||
segment files for manifest DELETEs and PUTs, #3947
|
segment files for manifest DELETEs and PUTs, #3947
|
||||||
- use pyinstaller v3.3.1 to build binaries
|
- use pyinstaller v3.3.1 to build binaries
|
||||||
- msgpack: switch to recent "msgpack" pypi pkg name, #3890
|
- update bundled zstd code to 1.3.8, #4210
|
||||||
|
- update bundled lz4 code to 1.8.3, #4209
|
||||||
|
- msgpack:
|
||||||
|
|
||||||
|
- switch to recent "msgpack" pypi pkg name, #3890
|
||||||
|
- wrap msgpack to avoid future compat complications, #3632, #2738
|
||||||
|
- support msgpack 0.6.0 and 0.6.1, #4220, #4308
|
||||||
|
|
||||||
- llfuse: modernize / simplify llfuse version requirements
|
- llfuse: modernize / simplify llfuse version requirements
|
||||||
- code refactorings / internal improvements:
|
- code refactorings / internal improvements:
|
||||||
|
|
||||||
|
- include size/csize/nfiles[_parts] stats into archive, #3241
|
||||||
|
- calc_stats: use archive stats metadata, if available
|
||||||
- crypto: refactored crypto to use an AEAD style API
|
- crypto: refactored crypto to use an AEAD style API
|
||||||
- crypto: new AES-OCB, CHACHA20-POLY1305
|
- crypto: new AES-OCB, CHACHA20-POLY1305
|
||||||
- create: be less racy, use fd for xattrs, acls, bsdflags (not path), #906
|
|
||||||
- create: use less syscalls by not using a python file obj, #906, #3962
|
- create: use less syscalls by not using a python file obj, #906, #3962
|
||||||
- diff: refactor the diff functionality to new ItemDiff class, #2475
|
- diff: refactor the diff functionality to new ItemDiff class, #2475
|
||||||
- archive: create FilesystemObjectProcessors class
|
- archive: create FilesystemObjectProcessors class
|
||||||
|
@ -205,13 +271,13 @@ Other changes:
|
||||||
|
|
||||||
- item.to_optr(), Item.from_optr()
|
- item.to_optr(), Item.from_optr()
|
||||||
- fix chunker holding the GIL during blocking I/O
|
- fix chunker holding the GIL during blocking I/O
|
||||||
|
- C code portability / basic MSC compatibility, #4147, #2677
|
||||||
- testing:
|
- testing:
|
||||||
|
|
||||||
- vagrant: new VMs for linux/bsd/darwin, most with OpenSSL 1.1 and py36
|
- vagrant: new VMs for linux/bsd/darwin, most with OpenSSL 1.1 and py36
|
||||||
|
|
||||||
|
|
||||||
|
Version 1.1.9 (2019-02-10)
|
||||||
Version 1.1.6 (2018-06-11)
|
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
Compatibility notes:
|
Compatibility notes:
|
||||||
|
@ -230,6 +296,156 @@ Compatibility notes:
|
||||||
You can avoid the one-time slowdown by using the pre-1.1.0rc4-compatible
|
You can avoid the one-time slowdown by using the pre-1.1.0rc4-compatible
|
||||||
mode (but that is less safe for detecting changed files than the default).
|
mode (but that is less safe for detecting changed files than the default).
|
||||||
See the --files-cache docs for details.
|
See the --files-cache docs for details.
|
||||||
|
|
||||||
|
Fixes:
|
||||||
|
|
||||||
|
- security fix: configure FUSE with "default_permissions", #3903
|
||||||
|
"default_permissions" is now enforced by borg by default to let the
|
||||||
|
kernel check uid/gid/mode based permissions.
|
||||||
|
"ignore_permissions" can be given to not enforce "default_permissions".
|
||||||
|
- make "hostname" short, even on misconfigured systems, #4262
|
||||||
|
- fix free space calculation on macOS (and others?), #4289
|
||||||
|
- config: quit with error message when no key is provided, #4223
|
||||||
|
- recover_segment: handle too small segment files correctly, #4272
|
||||||
|
- correctly release memoryview, #4243
|
||||||
|
- avoid diaper pattern in configparser by opening files, #4263
|
||||||
|
- add "# cython: language_level=3" directive to .pyx files, #4214
|
||||||
|
- info: consider part files for "This archive" stats, #3522
|
||||||
|
- work around Microsoft WSL issue #645 (sync_file_range), #1961
|
||||||
|
|
||||||
|
New features:
|
||||||
|
|
||||||
|
- add --rsh command line option to complement BORG_RSH env var, #1701
|
||||||
|
- init: --make-parent-dirs parent1/parent2/repo_dir, #4235
|
||||||
|
|
||||||
|
Other:
|
||||||
|
|
||||||
|
- add archive name to check --repair output, #3447
|
||||||
|
- check for unsupported msgpack versions
|
||||||
|
- shell completions:
|
||||||
|
|
||||||
|
- new shell completions for borg 1.1.9
|
||||||
|
- more complete shell completions for borg mount -o
|
||||||
|
- added shell completions for borg help
|
||||||
|
- option arguments for zsh tab completion
|
||||||
|
- docs:
|
||||||
|
|
||||||
|
- add FAQ regarding free disk space check, #3905
|
||||||
|
- update BORG_PASSCOMMAND example and clarify variable expansion, #4249
|
||||||
|
- FAQ regarding change of compression settings, #4222
|
||||||
|
- add note about BSD flags to changelog, #4246
|
||||||
|
- improve logging in example automation script
|
||||||
|
- add note about files changing during backup, #4081
|
||||||
|
- work around the backslash issue, #4280
|
||||||
|
- update release workflow using twine (docs, scripts), #4213
|
||||||
|
- add warnings on repository copies to avoid future problems, #4272
|
||||||
|
- tests:
|
||||||
|
|
||||||
|
- fix the homebrew 1.9 issues on travis-ci, #4254
|
||||||
|
- fix duplicate test method name, #4311
|
||||||
|
|
||||||
|
|
||||||
|
Version 1.1.8 (2018-12-09)
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
Fixes:
|
||||||
|
|
||||||
|
- enforce storage quota if set by serve-command, #4093
|
||||||
|
- invalid locations: give err msg containing parsed location, #4179
|
||||||
|
- list repo: add placeholders for hostname and username, #4130
|
||||||
|
- on linux, symlinks can't have ACLs, so don't try to set any, #4044
|
||||||
|
|
||||||
|
New features:
|
||||||
|
|
||||||
|
- create: added PATH::archive output on INFO log level
|
||||||
|
- read a passphrase from a file descriptor specified in the
|
||||||
|
BORG_PASSPHRASE_FD environment variable.
|
||||||
|
|
||||||
|
Other:
|
||||||
|
|
||||||
|
- docs:
|
||||||
|
|
||||||
|
- option --format is required for some expensive-to-compute values for json
|
||||||
|
|
||||||
|
borg list by default does not compute expensive values except when
|
||||||
|
they are needed. whether they are needed is determined by the format,
|
||||||
|
in standard mode as well as in --json mode.
|
||||||
|
- tell that our binaries are x86/x64 amd/intel, bauerj has ARM
|
||||||
|
- fixed wrong archive name pattern in CRUD benchmark help
|
||||||
|
- fixed link to cachedir spec in docs, #4140
|
||||||
|
- tests:
|
||||||
|
|
||||||
|
- stop using fakeroot on travis, avoids sporadic EISDIR errors, #2482
|
||||||
|
- xattr key names must start with "user." on linux
|
||||||
|
- fix code so flake8 3.6 does not complain
|
||||||
|
- explicitly convert environment variable to str, #4136
|
||||||
|
- fix DeprecationWarning: Flags not at the start of the expression, #4137
|
||||||
|
- support pytest4, #4172
|
||||||
|
- vagrant:
|
||||||
|
|
||||||
|
- use python 3.5.6 for builds
|
||||||
|
|
||||||
|
|
||||||
|
Version 1.1.7 (2018-08-11)
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
Compatibility notes:
|
||||||
|
|
||||||
|
- added support for Python 3.7
|
||||||
|
|
||||||
|
Fixes:
|
||||||
|
|
||||||
|
- cache lock: use lock_wait everywhere to fix infinite wait, see #3968
|
||||||
|
- don't archive tagged dir when recursing an excluded dir, #3991
|
||||||
|
- py37 argparse: work around bad default in py 3.7.0a/b/rc, #3996
|
||||||
|
- py37 remove loggerDict.clear() from tearDown method, #3805
|
||||||
|
- some fixes for bugs which likely did not result in problems in practice:
|
||||||
|
|
||||||
|
- fixed logic bug in platform module API version check
|
||||||
|
- fixed xattr/acl function prototypes, added missing ones
|
||||||
|
|
||||||
|
New features:
|
||||||
|
|
||||||
|
- init: add warning to store both key and passphrase at safe place(s)
|
||||||
|
- BORG_HOST_ID env var to work around all-zero MAC address issue, #3985
|
||||||
|
- borg debug dump-repo-objs --ghost (dump everything from segment files,
|
||||||
|
including deleted or superceded objects or commit tags)
|
||||||
|
- borg debug search-repo-objs (search in repo objects for hex bytes or strings)
|
||||||
|
|
||||||
|
Other changes:
|
||||||
|
|
||||||
|
- add Python 3.7 support
|
||||||
|
- updated shell completions
|
||||||
|
- call socket.gethostname only once
|
||||||
|
- locking: better logging, add some asserts
|
||||||
|
- borg debug dump-repo-objs:
|
||||||
|
|
||||||
|
- filename layout improvements
|
||||||
|
- use repository.scan() to get on-disk order
|
||||||
|
- docs:
|
||||||
|
|
||||||
|
- update installation instructions for macOS
|
||||||
|
- added instructions to install fuse via homebrew
|
||||||
|
- improve diff docs
|
||||||
|
- added note that checkpoints inside files requires 1.1+
|
||||||
|
- add link to tempfile module
|
||||||
|
- remove row/column-spanning from docs source, #4000 #3990
|
||||||
|
- tests:
|
||||||
|
|
||||||
|
- fetch less data via os.urandom
|
||||||
|
- add py37 env for tox
|
||||||
|
- travis: add 3.7, remove 3.6-dev (we test with -dev in master)
|
||||||
|
- vagrant / binary builds:
|
||||||
|
|
||||||
|
- use osxfuse 3.8.2
|
||||||
|
- use own (uptodate) openindiana box
|
||||||
|
|
||||||
|
|
||||||
|
Version 1.1.6 (2018-06-11)
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
Compatibility notes:
|
||||||
|
|
||||||
- 1.1.6 changes:
|
- 1.1.6 changes:
|
||||||
|
|
||||||
- also allow msgpack-python 0.5.6.
|
- also allow msgpack-python 0.5.6.
|
||||||
|
|
Loading…
Reference in a new issue