AArch64 | |
ppc64le | |
s390x | |
x86-64 |
- Update to 1.1.18 (2022-06-05): Compatibility notes: * When upgrading from borg 1.0.x to 1.1.x, please note: * read all the compatibility notes for 1.1.0*, starting from 1.1.0b1. * borg upgrade: you do not need to and you also should not run it. * borg might ask some security-related questions once after upgrading. You can answer them either manually or via environment variable. One known case is if you use unencrypted repositories, then it will ask about a unknown unencrypted repository one time. * your first backup with 1.1.x might be significantly slower (it might completely read, chunk, hash a lot files) - this is due to the –files-cache mode change (and happens every time you change mode). 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). See the –files- cache docs for details. * 1.1.11 removes WSL autodetection (Windows 10 Subsystem for Linux). If WSL still has a problem with sync_file_range, you need to set BORG_WORKAROUNDS=basesyncfile in the borg process environment to work around the WSL issue. * 1.1.14 changes return codes due to a bug fix: In case you have scripts expecting rc == 2 for a signal exit, you need to update them to check for >= 128 (as documented since long). * 1.1.15 drops python 3.4 support, minimum requirement is 3.5 now. * 1.1.17 install_requires the “packaging” pypi package now. New features: * check --repair: significantly speed up search for next valid object in segment, #6022 * create: add retry_erofs workaround for O_NOATIME issue on volume shadow copies in WSL1, #6024 * key export: display key if path is '-' or not given, #6092 * list --format: add command_line to format keys, #6108 Fixes: * check: improve error handling for corrupt archive metadata block, make robust_iterator more robust, #4777 * diff: support presence change for blkdev, chrdev and fifo items, #6483 * diff: reduce memory consumption, fix is_hardlink_master * init: disallow overwriting of existing keyfiles * info: fix authenticated mode repo to show "Encrypted: No", [#6462] * info: emit repo info even if repo has 0 archives, #6120 * list: remove placeholders for shake_* hashes, #6082 * mount -o versions: give clear error msg instead of crashing * show_progress: add finished=true/false to archive_progress json, #6570 * fix hardlinkable file type check, #6037 * do not show archive name in error msgs referring to the repository, #6023 * prettier error msg (no stacktrace) if exclude file is missing, [#5734] * do not require BORG_CONFIG_DIR if BORG_{SECURITY,KEYS}_DIR are set, #5979 * atomically create the CACHE_TAG file, #6028 * deal with the SaveFile/SyncFile race, docs, see #6176 5c5b59bc9 * avoid expanding path into LHS of formatting operation + tests, [#6064] #6063 * repository: quota / compactable computation fixes, #6119. This is mainly to keep the repo code in sync with borg 1.2. As borg 1.1 compacts immediately, there was not really an issue with this in 1.1. * fix transaction rollback: use files cache filename as found in txn.active, #6353 * do not load files cache for commands not using it, fixes #5673 * fix scp repo url parsing for ip v6 addrs, #6526 * repo::archive location placeholder expansion fixes, #5826, [#5998] - use expanded location for log output - support placeholder expansion for BORG_REPO env var * respect umask for created directory and file modes, #6400 * safer truncate_and_unlink implementation Other changes: * upgrade bundled xxhash code to 0.8.1 * fix xxh64 related build (setup.py and post-0.8.1 patch for static_assert). The patch was required to build the bundled xxhash code on FreeBSD, see Cyan4973/xxHash#670 * msgpack build: remove endianness macro, #6105 * update and fix shell completions * fuse: remove unneeded version check and compat code * delete --force: do not ask when deleting a repo, #5941 * delete: don't commit if nothing was deleted, avoid cache sync, [#6060] * delete: add repository id and location to prompt * compact segments: improve freeable / freed space log output, [#5679] * if ensure_dir() fails, give more informative error message, [#5952] * load_key: no key is same as empty key, #6441 * better error msg for defect or unsupported repo configs, #6566 * use hmac.compare_digest instead of ==, #6470 * implement more standard hashindex.setdefault behaviour * remove stray punctuation from secure-erase message * add development.lock.txt, use a real python 3.5 to generate frozen reqs * setuptools 60.7.0 breaks pyinstaller, #6246 * setup.py clean2 was added to work around some setuptools customizability limitation. * allow extra compiler flags for every extension build * C code: make switch fallthrough explicit * Cython code: fix "useless trailing comma" cython warnings * requirements.lock.txt: use the latest cython 0.29.30 * fix compilation warnings: ‘PyUnicode_AsUnicode’ is deprecated * docs: - ~/.config/borg/keys is not used for repokey keys, #6107 - excluded parent dir's metadata can't restore, #6062 - permissions note rewritten to make it less confusing, #5490 - add note about grandfather-father-son backup retention policy / rotation scheme - clarify who starts the remote agent (borg serve) - test/improve pull backup docs, #5903 - document the socat pull mode described in #900 #515ß - borg serve: improve ssh forced commands docs, #6083 - improve docs for borg list --format, #6080 - fix the broken link to .nix file - clarify pattern usage with commands, #5176 - clarify user_id vs uid for fuse, #5723 - fix binary build freebsd/macOS version, #5942 - FAQ: fix manifest-timestamp path, #6016 - remove duplicate faq entries, #5926 - fix sphinx warnings, #5919 - virtualisation speed tips - fix values of TAG bytes, #6515 - recommend umask for passphrase file perms - update link to ubuntu packages, #6485 - clarify on-disk order and size of log entry fields, #6357 - do not transform --/--- to unicode dashes - improve linking inside docs, link to borg_placeholders, link to borg_patterns - use same phrasing in misc. help texts - borg init: explain the encryption modes better - explain the difference between a path that ends with or without a slash, #6297 - clarify usage of patternfile roots, #6242 - borg key export: add examples - updates about features not experimental any more: FUSE "versions" view, --pattern*, #6134 - fix/update cygwin package requirements - impact of deleting path/to/repo/nonce, #5858 - warn about tampered server nonce - mention BORG_FILES_CACHE_SUFFIX as alternative to BORG_FILES_CACHE_TTL, #5602 - add a troubleshooting note about "is not a valid repository" to the FAQ
- Update to 1.1.17 (2021-07-12): Compatibility notes: * When upgrading from borg 1.0.x to 1.1.x, please note: * read all the compatibility notes for 1.1.0*, starting from 1.1.0b1. * borg upgrade: you do not need to and you also should not run it. * borg might ask some security-related questions once after upgrading. You can answer them either manually or via environment variable. One known case is if you use unencrypted repositories, then it will ask about a unknown unencrypted repository one time. * your first backup with 1.1.x might be significantly slower (it might completely read, chunk, hash a lot files) - this is due to the –files-cache mode change (and happens every time you change mode). 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). See the –files- cache docs for details. * 1.1.11 removes WSL autodetection (Windows 10 Subsystem for Linux). If WSL still has a problem with sync_file_range, you need to set BORG_WORKAROUNDS=basesyncfile in the borg process environment to work around the WSL issue. * 1.1.14 changes return codes due to a bug fix: In case you have scripts expecting rc == 2 for a signal exit, you need to update them to check for >= 128 (as documented since long). * 1.1.15 drops python 3.4 support, minimum requirement is 3.5 now. * 1.1.17 install_requires the “packaging” pypi package now. Fixes: * pyinstaller dir-mode: fix pyi detection / LIBPATH treatment, [#5897] * handle crash due to kill stale lock race, #5828 * fix BORG_CACHE_DIR crashing borg if empty, #5216 * create –dry-run: fix display of kept tagfile, #5834 * fix missing parameter in “did not consistently fail” msg, [#5822] * missing / healed chunks: always tell chunk ID, #5704 * benchmark: make sure cleanup happens even on exceptions, #5630 New features: * implement BORG_SELFTEST env variable, #5871. this can be used to accelerate borg startup a bit. not recommended for normal usage, but borg mass hosters with a lot of borg invocations can save some resources with this. on my laptop, this saved ~100ms cpu time (sys+user) per borg command invocation. * implement BORG_LIBC env variable to give the libc filename, [#5870]. you can use this if a borg does not find your libc. * check: add progress indicator for archive check. * allow –files-cache=size (not recommended, make sure you know what you do) Other changes: * Python 3.10 now officially supported! we test on py310-dev on github CI since a while and now also on the vagrant machines, so it should work ok. * github CI: test on py310 (again) * get rid of distutils, use packaging and setuptools. distutils is deprecated and gives warnings on py 3.10. * setup.py: rename “clean” to “clean2” to avoid shadowing the “clean” command. * remove libc filename fallback for the BSDs (there is no “usual” name) * cleanup flake8 checks, fix some pep8 violations. * docs building: replace deprecated function “.add_stylesheet()” for Sphinx 4 compatibility * docs: * add a hint on sleeping computer and ssh connections, #5301 * update the documentation on hacked backup client, #5480 * improve docs/FAQ about append-only remote repos, #5497 * complement the documentation for pattern files and exclude files, #5520 * “filename with spaces” example added to exclude file, #5236 note: no whitespace escaping needed, processed by borg. * add info on renaming repositories, #5240 * clarify borg check –verify-data, #5808 * add notice about defective hardware to check documentation, [#5753] * add paragraph added in #5855 to utility documentation source * add missing leading slashes in help patterns, #5857 * clarify “you will need key and passphrase” borg init warning, [#4622] * pull mode: add some warnings, #5827 * mention tar –compare (compare archive to fs files), #5880 * fix typos, backport of #5597 * vagrant: * add py3.7.11 for binary build, also add 3.10-dev. * use latest Cython 0.29.23 for py310 compat fixes. * more RAM for openindiana upgrade plan resolver, it just hangs (swaps?) if there is too little RAM. * fix install_pyenv to adapt to recent changes in pyenv (same as in master now). * use generic/netbsd9 box, copied from master branch. - Reformatted Paolos last changelog - Revert logic of borgbackup-1.1.16-fix-sphinx-api.patch: borgbackup-1.1.17-old-sphinx-api.patch - Allow to use old version of xxhash library (might crash on ARM), but an update is in enqueued
- Fix documentation generation with borgbackup-1.1.16-fix-sphinx-api.patch for Leap >= 15.3
- Remove the version from recommends pyfuse3, because it doesn't work in suse.
- Use recommends pyfuse3 instead of llfuse for Tumbleweed. Upstream says use primary pyfuse3 and secondary llfuse.
- Update to 1.1.16: Fixes: * setup.py: add special openssl prefix for Apple M1 compatibility * do not recurse into duplicate roots, #5603 * remove empty shadowed_segments lists, #5275, #5614 * fix libpython load error when borg fat binary / dir-based binary is invoked via a symlink by upgrading pyinstaller to v4.2, #5688 * config: accept non-int value (like 500M or 100G) for max_segment_size or storage_quota, #5639. please note: when setting a non-int value for this in a repo config, using the repo will require borg >= 1.1.16. New features: * bundled msgpack: drop support for old buffer protocol to support Python 3.10 * verbose files cache logging via --debug-topic=files_cache, [#5659]. Use this if you suspect that borg does not detect unmodified files as expected. * create/extract: add --noxattrs and --noacls option, #3955. when given with borg create, borg will not get xattrs / ACLs from input files (and thus, it will not archive xattrs / ACLs). when given with borg extract, borg will not read xattrs / ACLs from archive and will not set xattrs / ACLs on extracted files. * diff: add --json-lines option, #3765 Other changes: * Tab completion support for additional archives for 'borg delete' * repository: deduplicate code of put and delete, no functional change Docs updates
- Update to 1.1.15: * drops python 3.4 support, minimum requirement is 3.5 now. Fixes: * extract: + improve exception handling when setting xattrs, #5092. + emit a warning message giving the path, xattr key and error message. + continue trying to restore other xattrs and bsdflags of the same file after an exception with xattr-setting happened. * export-tar: + set tar format to GNU_FORMAT explicitly, #5274 + fix memory leak with ssh: remote repository, #5568 + fix potential memory leak with ssh: remote repository with partial extraction * create: fix --dry-run and --stats coexistence, #5415 * use --timestamp for {utcnow} and {now} if given, #5189 New features: * create: implement --stdin-mode, --stdin-user and --stdin-group, [#5333] * allow appending the files cache filename with BORG_FILES_CACHE_SUFFIX env var Other changes: * drop python 3.4 support, minimum requirement is 3.5 now. * enable using libxxhash instead of bundled xxh64 code * update llfuse requirements (1.3.8) * set cython language_level in some files to fix warnings * allow EIO with warning when trying to hardlink * PropDict: fail early if internal_dict is not a dict * update shell completions * tests / CI + add a test for the hashindex corruption bug, #5531 #4829 + fix spurious failure in test_cache_files, #5438 + added a github ci workflow + reduce testing on travis, no macOS, no py3x-dev, #5467 + travis: use newer dists, native py on dist * vagrant: + remove jessie and trusty boxes, #5348 #5383 + pyinstaller 4.0, build on py379 + binary build on stretch64, #5348 + remove easy_install based pip installation * docs: + clarify '--one-file-system' for btrfs, #5391 + add example for excluding content using the --pattern cmd line arg + complement the documentation for pattern files and exclude files, #5524 + made ansible playbook more generic, use package instead of pacman. also change state from "latest" to "present". + complete documentation on append-only remote repos, #5497 + internals: rather talk about target size than statistics, [#5336] + new compression algorithm policy, #1633 #5505 + faq: add a hint on sleeping computer, #5301 + note requirements for full disk access on macOS Catalina, [#5303] + fix/improve description of borg upgrade hardlink usage, [#5518] * modernize 1.1 code: + drop code/workarounds only needed to support Python 3.4 + remove workaround for pre-release py37 argparse bug + removed some outdated comments/docstrings + requirements: remove some restrictions, lock on current versions
- Update to 1.1.14: Compatibility notes: * changes return codes due to a bug fix: In case you have scripts \ expecting rc == 2 for a signal exit, you need to update them to check for >= 128 (as documented since long). Fixes: * check --repair: fix potential data loss when interrupting it, #5325 * exit with 128 + signal number (as documented) when borg is killed by a signal, #5161 * fix hardlinked CACHEDIR.TAG processing, #4911 * create --read-special: .part files also should be regular files, #5217 Other changes: * upgrade bundled xxhash to 0.7.4 * prettier error message when archive gets too big * check/recreate are not "experimental" any more (but still potentially dangerous) * use "allow/deny list" instead of "white/black list" wording * update docs
- Update to 1.1.13: * rebuilt using a current Cython version, compatible with python 3.8, #5214 - Update to 1.1.12: Fixes: * fix preload-related memory leak, #5202. * mount / borgfs (FUSE filesystem): + fix FUSE low linear read speed on large files, #5067 + fix crash on old llfuse without birthtime attrs, #5064 - accidentally we required llfuse >= 1.3. Now also old llfuse works again. + set f_namemax in statfs result, #2684 * update precedence of env vars to set config and cache paths, #4894 * correctly calculate compression ratio, taking header size into account, too New features: * --bypass-lock option to bypass locking with read-only repositories Other changes: * upgrade bundled zstd to 1.4.5 * travis: adding comments and explanations to Travis config/install script, improve macOS builds. * tests: test_delete_force: avoid sporadic test setup issues, #5196 * misc. vagrant fixes * the binary for macOS is now built on macOS 10.12 * the binaries for Linux are now built on Debian 8 "Jessie", #3761 * docs: + PlaceholderError not printed as JSON, #4073 + "How important is Borg config?", #4941 + make Sphinx warnings break docs build, #4587 + some markup / warning fixes + add "updating borgbackup.org/releases" to release checklist, #4999 + add "rendering docs" to release checklist, #5000 + clarify borg init's encryption modes + add note about patterns and stored paths, #4160 + add upgrade of tools to pip installation how-to + document one cause of orphaned chunks in check command, #2295 + linked recommended restrictions to ssh public keys on borg servers in faq, #4946 - Remove patch already included in 1.1.12: * 0001-rename-local-preload-function-to-not-overwrite-keyword-argument.patch
- Add patch to fix a memory issue that in some cases might make borg use more than 32 GB of memory for an operation that shouldn't consume any memory at all, thus forcing the kernel to kill the process: * 0001-rename-local-preload-function-to-not-overwrite-keyword-argument.patch
- Add libb2 dependency, where appropriate (avoids bundling libb2) - Remove outdated build fixes from spec - Provide proper compile flags - Install all available man files - Disable 2 progress related tests, that fail for TW
- Add fdupes build dependency - break overlong lines in changelog
- Update to 1.1.11 Fixes: * fixed potential index corruption / data loss issue due to bug in hashindex_set, #4829 Please read and follow the more detailled notes close to the top of this document. * upgrade bundled xxhash to 0.7.3, #4891 0.7.2 is the minimum requirement for correct operations on ARMv6 in non-fixup mode, where unaligned memory accesses cause bus errors. 0.7.3 adds some speedups and libxxhash 0.7.3 even has a pkg-config file now. * upgrade bundled lz4 to 1.9.2 * upgrade bundled zstd to 1.4.4 * fix crash when upgrading erroneous hints file, #4922 * extract: - fix KeyError for "partial" extraction, #4607 - fix "partial" extract for hardlinked contentless file types, #4725 - fix preloading for old (0.xx) remote servers, #4652 - fix confusing output of borg extract --list --strip-components, #4934 * delete: after double-force delete, warn about necessary repair, #4704 * create: give invalid repo error msg if repo config not found, #4411 * mount: fix FUSE mount missing st_birthtime, #4763 #4767 * check: do not stumble over invalid item key, #4845 * info: if the archive doesn't exist, print a pretty message, #4793 * SecurityManager.known(): check all files, #4614 * Repository.open: use stat() to check for repo dir, #4695 * Repository.check_can_create_repository: use stat() to check, #4695 * fix invalid archive error message * fix optional/non-optional location arg, #4541 * commit-time free space calc: ignore bad compact map entries, #4796 * ignore EACCES (errno 13) when hardlinking the old config, #4730 * --prefix / -P: fix processing, avoid argparse issue, #4769 New features: * enable placeholder usage in all extra archive arguments * new BORG_WORKAROUNDS mechanism, basesyncfile, #4710 * recreate: support --timestamp option, #4745 * support platforms without os.link (e.g. Android with Termux), #4901 if we don't have os.link, we just extract another copy instead of making a hardlink. * support linux platforms without sync_file_range (e.g. Android 7 with Termux), #4905 Other: * ignore --stats when given with --dry-run, but continue, #4373 * add some ProgressIndicator msgids to code / fix docs, #4935 * elaborate on "Calculating size" message * argparser: always use REPOSITORY in metavar, also use more consistent help phrasing. * check: improve error output for matching index size, see #4829
- fix building with python3
- Update to version 1.1.10 (2019-05-16) + Compatibility notes: * When upgrading from borg 1.0.x to 1.1.x, please note: * read all the compatibility notes for 1.1.0*, starting from 1.1.0b1. * borg upgrade: you do not need to and you also should not run it. * borg might ask some security-related questions once after upgrading. You can answer them either manually or via environment variable. One known case is if you use unencrypted repositories, then it will ask about a unknown unencrypted repository one time. * your first backup with 1.1.x might be significantly slower (it might completely read, chunk, hash a lot files) - this is due to the --files-cache mode change (and happens every time you change mode). 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). See the - -files-cache docs for details. + Fixes: * extract: hang on partial extraction with ssh: repo, when hardlink master is not matched/extracted and borg hangs on related slave hardlink, #4350 * lrucache: regularly remove old FDs, #4427 * avoid stale filehandle issues, #3265 * freebsd: make xattr platform code api compatible with linux, [#3952] * use whitelist approach for borg serve, #4097 * borg command shall terminate with rc 2 for ImportErrors, [#4424] * create: only run stat_simple_attrs() once, this increases backup with lots of unchanged files performance by ~ 5%. * prune: fix incorrect borg prune --stats output with --dry- run, #4373 * key export: emit user-friendly error if repo key is exported to a directory, #4348 + New features: * bundle latest supported msgpack-python release (0.5.6), remove msgpack-python from setup.py install_requires - by default we use the bundled code now. optionally, we still support using an external msgpack (see hints in setup.py), but this requires solid requirements management within distributions and is not recommended. borgbackup will break if you upgrade msgpack to an unsupported version. * display msgpack version as part of sysinfo (e.g. in tracebacks) * timestamp for borg delete --info added, #4359 * enable placeholder usage in --comment and --glob-archives, [#4559], #4495 + Other: * serve: do not check python/libc for borg serve, #4483 * shell completions: borg diff second archive * release scripts: signing binaries with Qubes OS support * testing: * vagrant: upgrade openbsd box to 6.4 * travis-ci: lock test env to py 3.4 compatible versions, #4343 * get rid of confusing coverage warning, #2069 * rename test_mount_hardlinks to test_fuse_mount_hardlinks, so both can be excluded by "not test_fuse". * pure-py msgpack warning shall not make a lot of tests fail, [#4558] * docs: * add "SSH Configuration" section to "borg serve", #3988, #636, [#4485] * README: new URL for funding options * add a sample logging.conf in docs/misc, #4380 * elaborate on append-only mode docs, #3504 * installation: added Alpine Linux to distribution list, #4415 * usage.html: only modify window.location when redirecting, [#4133] * add msgpack license to docs/3rd_party/msgpack * vagrant / binary builds: * use python 3.5.7 for builds * use osxfuse 3.8.3 - remove msgpack patch fix-msgpack-requirement.patch and borg_msgpack build conditional, since msgpack is bundled now (yeah!)