borgbackup 1.4.0a1__tar.gz → 1.4.0b2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (419) hide show
  1. borgbackup-1.4.0b2/Brewfile +12 -0
  2. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/CHANGES.rst +116 -26
  3. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/LICENSE +1 -1
  4. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/PKG-INFO +2 -35
  5. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/changes.rst +116 -26
  6. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/conf.py +1 -1
  7. borgbackup-1.4.0b2/docs/deployment/non-root-user.rst +66 -0
  8. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/deployment.rst +1 -0
  9. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/development.rst +38 -3
  10. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/global.rst.inc +0 -1
  11. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/installation.rst +11 -10
  12. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/internals/frontends.rst +5 -1
  13. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-benchmark-crud.1 +1 -1
  14. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-benchmark.1 +1 -1
  15. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-break-lock.1 +1 -1
  16. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-check.1 +1 -1
  17. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-common.1 +1 -1
  18. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-compact.1 +1 -1
  19. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-compression.1 +1 -1
  20. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-config.1 +1 -1
  21. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-create.1 +23 -2
  22. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-delete.1 +1 -1
  23. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-diff.1 +1 -1
  24. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-export-tar.1 +1 -1
  25. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-extract.1 +1 -1
  26. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-import-tar.1 +1 -1
  27. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-info.1 +1 -1
  28. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-init.1 +1 -1
  29. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-key-change-passphrase.1 +1 -1
  30. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-key-export.1 +1 -1
  31. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-key-import.1 +1 -1
  32. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-key-migrate-to-repokey.1 +1 -1
  33. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-key.1 +1 -1
  34. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-list.1 +1 -1
  35. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-mount.1 +1 -1
  36. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-patterns.1 +1 -1
  37. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-placeholders.1 +1 -1
  38. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-prune.1 +1 -1
  39. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-recreate.1 +1 -1
  40. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-rename.1 +1 -1
  41. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-serve.1 +1 -1
  42. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-umount.1 +3 -4
  43. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-upgrade.1 +7 -1
  44. borgbackup-1.4.0b2/docs/man/borg-version.1 +83 -0
  45. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-with-lock.1 +12 -2
  46. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg.1 +1 -1
  47. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borgfs.1 +1 -1
  48. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/create.rst +3 -0
  49. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/create.rst.inc +23 -3
  50. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/mount.rst +2 -3
  51. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/upgrade.rst.inc +29 -23
  52. borgbackup-1.4.0b2/docs/usage/version.rst +1 -0
  53. borgbackup-1.4.0b2/docs/usage/version.rst.inc +66 -0
  54. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/with-lock.rst.inc +5 -1
  55. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage.rst +1 -0
  56. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/pyproject.toml +4 -5
  57. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/requirements.d/development.lock.txt +1 -1
  58. borgbackup-1.4.0b2/scripts/fetch-binaries +21 -0
  59. borgbackup-1.4.0a1/setup_docs.py → borgbackup-1.4.0b2/scripts/make.py +72 -42
  60. borgbackup-1.4.0b2/setup.py +230 -0
  61. borgbackup-1.4.0b2/src/borg/_version.py +1 -0
  62. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/algorithms/checksums.c +86 -67
  63. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/algorithms/checksums.pyx +1 -1
  64. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/archive.py +45 -16
  65. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/archiver.py +230 -115
  66. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/cache.py +4 -5
  67. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/chunker.c +84 -57
  68. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/chunker.pyx +1 -1
  69. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/compress.c +81 -62
  70. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/compress.pyx +3 -3
  71. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/crypto/key.py +17 -12
  72. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/crypto/keymanager.py +6 -7
  73. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/crypto/low_level.c +102 -84
  74. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/crypto/low_level.pyx +1 -1
  75. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/crypto/nonces.py +9 -3
  76. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/hashindex.c +92 -70
  77. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/hashindex.pyx +1 -1
  78. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/helpers/__init__.py +12 -0
  79. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/helpers/checks.py +6 -6
  80. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/helpers/fs.py +15 -0
  81. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/helpers/msgpack.py +18 -90
  82. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/helpers/parseformat.py +13 -2
  83. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/helpers/process.py +18 -4
  84. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/item.c +99 -65
  85. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/item.pyx +1 -1
  86. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/logger.py +37 -37
  87. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/platform/base.py +1 -1
  88. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/platform/darwin.c +1604 -941
  89. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/platform/darwin.pyx +14 -8
  90. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/platform/freebsd.c +2424 -934
  91. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/platform/freebsd.pyx +50 -25
  92. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/platform/linux.c +1747 -817
  93. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/platform/linux.pyx +45 -30
  94. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/platform/posix.c +61 -42
  95. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/platform/syncfilerange.c +49 -31
  96. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/platform/windows.c +61 -42
  97. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/remote.py +17 -3
  98. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/repository.py +31 -12
  99. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/archiver.py +36 -6
  100. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/checksums.py +2 -3
  101. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/chunker_slow.py +2 -2
  102. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/crypto.py +9 -10
  103. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/key.py +9 -10
  104. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/platform.py +75 -35
  105. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borgbackup.egg-info/PKG-INFO +2 -35
  106. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borgbackup.egg-info/SOURCES.txt +7 -91
  107. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borgbackup.egg-info/requires.txt +1 -1
  108. borgbackup-1.4.0a1/setup.py +0 -236
  109. borgbackup-1.4.0a1/setup_checksums.py +0 -42
  110. borgbackup-1.4.0a1/setup_compress.py +0 -135
  111. borgbackup-1.4.0a1/setup_crypto.py +0 -32
  112. borgbackup-1.4.0a1/src/borg/_version.py +0 -1
  113. borgbackup-1.4.0a1/src/borg/algorithms/lz4/lib/lz4.c +0 -2398
  114. borgbackup-1.4.0a1/src/borg/algorithms/lz4/lib/lz4.h +0 -764
  115. borgbackup-1.4.0a1/src/borg/algorithms/lz4-libselect.h +0 -5
  116. borgbackup-1.4.0a1/src/borg/algorithms/xxh64/xxhash.c +0 -43
  117. borgbackup-1.4.0a1/src/borg/algorithms/xxh64/xxhash.h +0 -5580
  118. borgbackup-1.4.0a1/src/borg/algorithms/xxhash-libselect.h +0 -5
  119. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/common/bitstream.h +0 -454
  120. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/common/compiler.h +0 -175
  121. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/common/cpu.h +0 -215
  122. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/common/debug.c +0 -24
  123. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/common/debug.h +0 -114
  124. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/common/entropy_common.c +0 -216
  125. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/common/error_private.c +0 -55
  126. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/common/error_private.h +0 -80
  127. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/common/fse.h +0 -688
  128. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/common/fse_decompress.c +0 -286
  129. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/common/huf.h +0 -340
  130. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/common/mem.h +0 -453
  131. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/common/pool.c +0 -344
  132. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/common/pool.h +0 -84
  133. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/common/threading.c +0 -121
  134. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/common/threading.h +0 -155
  135. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/common/xxhash.c +0 -864
  136. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/common/xxhash.h +0 -285
  137. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/common/zstd_common.c +0 -83
  138. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/common/zstd_errors.h +0 -94
  139. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/common/zstd_internal.h +0 -447
  140. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/compress/fse_compress.c +0 -698
  141. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/compress/hist.c +0 -183
  142. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/compress/hist.h +0 -75
  143. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/compress/huf_compress.c +0 -798
  144. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/compress/zstd_compress.c +0 -4278
  145. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/compress/zstd_compress_internal.h +0 -1125
  146. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/compress/zstd_compress_literals.c +0 -158
  147. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/compress/zstd_compress_literals.h +0 -29
  148. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/compress/zstd_compress_sequences.c +0 -419
  149. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/compress/zstd_compress_sequences.h +0 -54
  150. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/compress/zstd_compress_superblock.c +0 -845
  151. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/compress/zstd_compress_superblock.h +0 -32
  152. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/compress/zstd_cwksp.h +0 -525
  153. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/compress/zstd_double_fast.c +0 -521
  154. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/compress/zstd_double_fast.h +0 -38
  155. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/compress/zstd_fast.c +0 -496
  156. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/compress/zstd_fast.h +0 -37
  157. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/compress/zstd_lazy.c +0 -1138
  158. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/compress/zstd_lazy.h +0 -67
  159. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/compress/zstd_ldm.c +0 -619
  160. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/compress/zstd_ldm.h +0 -110
  161. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/compress/zstd_opt.c +0 -1200
  162. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/compress/zstd_opt.h +0 -56
  163. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/compress/zstdmt_compress.c +0 -2143
  164. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/compress/zstdmt_compress.h +0 -192
  165. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/decompress/huf_decompress.c +0 -1248
  166. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/decompress/zstd_ddict.c +0 -244
  167. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/decompress/zstd_ddict.h +0 -44
  168. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/decompress/zstd_decompress.c +0 -1885
  169. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/decompress/zstd_decompress_block.c +0 -1432
  170. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/decompress/zstd_decompress_block.h +0 -59
  171. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/decompress/zstd_decompress_internal.h +0 -189
  172. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/deprecated/zbuff.h +0 -214
  173. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/deprecated/zbuff_common.c +0 -26
  174. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/deprecated/zbuff_compress.c +0 -147
  175. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/deprecated/zbuff_decompress.c +0 -75
  176. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/dictBuilder/cover.c +0 -1236
  177. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/dictBuilder/cover.h +0 -157
  178. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/dictBuilder/divsufsort.c +0 -1913
  179. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/dictBuilder/divsufsort.h +0 -67
  180. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/dictBuilder/fastcover.c +0 -757
  181. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/dictBuilder/zdict.c +0 -1135
  182. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/dictBuilder/zdict.h +0 -305
  183. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/legacy/zstd_legacy.h +0 -415
  184. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/legacy/zstd_v01.c +0 -2158
  185. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/legacy/zstd_v01.h +0 -94
  186. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/legacy/zstd_v02.c +0 -3518
  187. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/legacy/zstd_v02.h +0 -93
  188. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/legacy/zstd_v03.c +0 -3160
  189. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/legacy/zstd_v03.h +0 -93
  190. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/legacy/zstd_v04.c +0 -3647
  191. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/legacy/zstd_v04.h +0 -142
  192. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/legacy/zstd_v05.c +0 -4050
  193. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/legacy/zstd_v05.h +0 -162
  194. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/legacy/zstd_v06.c +0 -4154
  195. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/legacy/zstd_v06.h +0 -172
  196. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/legacy/zstd_v07.c +0 -4541
  197. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/legacy/zstd_v07.h +0 -187
  198. borgbackup-1.4.0a1/src/borg/algorithms/zstd/lib/zstd.h +0 -2090
  199. borgbackup-1.4.0a1/src/borg/algorithms/zstd-libselect.h +0 -5
  200. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/.coveragerc +0 -0
  201. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/.pre-commit-config.yaml +0 -0
  202. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/.readthedocs.yaml +0 -0
  203. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/AUTHORS +0 -0
  204. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/MANIFEST.in +0 -0
  205. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/README.rst +0 -0
  206. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/README_WINDOWS.rst +0 -0
  207. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/SECURITY.md +0 -0
  208. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/3rd_party/README +0 -0
  209. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/3rd_party/lz4/LICENSE +0 -0
  210. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/3rd_party/zstd/LICENSE +0 -0
  211. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/Makefile +0 -0
  212. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/_static/Makefile +0 -0
  213. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/_static/favicon.ico +0 -0
  214. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/_static/logo.pdf +0 -0
  215. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/_static/logo.png +0 -0
  216. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/_static/logo.svg +0 -0
  217. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/_static/logo_font.txt +0 -0
  218. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/_templates/globaltoc.html +0 -0
  219. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/_templates/logo-text.html +0 -0
  220. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/authors.rst +0 -0
  221. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/book.rst +0 -0
  222. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/borg_theme/css/borg.css +0 -0
  223. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/deployment/automated-local.rst +0 -0
  224. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/deployment/central-backup-server.rst +0 -0
  225. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/deployment/hosting-repositories.rst +0 -0
  226. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/deployment/image-backup.rst +0 -0
  227. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/deployment/pull-backup.rst +0 -0
  228. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/faq.rst +0 -0
  229. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/index.rst +0 -0
  230. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/internals/compaction.png +0 -0
  231. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/internals/compaction.vsd +0 -0
  232. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/internals/data-structures.rst +0 -0
  233. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/internals/encryption.png +0 -0
  234. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/internals/encryption.vsd +0 -0
  235. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/internals/object-graph.png +0 -0
  236. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/internals/object-graph.vsd +0 -0
  237. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/internals/security.rst +0 -0
  238. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/internals/structure.png +0 -0
  239. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/internals/structure.vsd +0 -0
  240. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/internals.rst +0 -0
  241. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/introduction.rst +0 -0
  242. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man/borg-change-passphrase.1 +0 -0
  243. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/man_intro.rst +0 -0
  244. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/misc/asciinema/README +0 -0
  245. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/misc/asciinema/Vagrantfile +0 -0
  246. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/misc/asciinema/advanced.json +0 -0
  247. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/misc/asciinema/advanced.tcl +0 -0
  248. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/misc/asciinema/basic.json +0 -0
  249. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/misc/asciinema/basic.tcl +0 -0
  250. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/misc/asciinema/install.json +0 -0
  251. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/misc/asciinema/install.tcl +0 -0
  252. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/misc/asciinema/sample-wallpapers.txt +0 -0
  253. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/misc/benchmark-crud.txt +0 -0
  254. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/misc/borg-data-flow.png +0 -0
  255. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/misc/borg-data-flow.vsd +0 -0
  256. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/misc/create_chunker-params.txt +0 -0
  257. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/misc/internals-picture.txt +0 -0
  258. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/misc/logging.conf +0 -0
  259. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/misc/prune-example.txt +0 -0
  260. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/quickstart.rst +0 -0
  261. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/quickstart_example.rst.inc +0 -0
  262. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/support.rst +0 -0
  263. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/benchmark.rst +0 -0
  264. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/benchmark_crud.rst.inc +0 -0
  265. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/borgfs.rst +0 -0
  266. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/borgfs.rst.inc +0 -0
  267. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/break-lock.rst.inc +0 -0
  268. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/change-passphrase.rst.inc +0 -0
  269. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/check.rst +0 -0
  270. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/check.rst.inc +0 -0
  271. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/common-options.rst.inc +0 -0
  272. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/compact.rst +0 -0
  273. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/compact.rst.inc +0 -0
  274. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/config.rst +0 -0
  275. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/config.rst.inc +0 -0
  276. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/debug.rst +0 -0
  277. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/delete.rst +0 -0
  278. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/delete.rst.inc +0 -0
  279. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/diff.rst +0 -0
  280. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/diff.rst.inc +0 -0
  281. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/export-tar.rst.inc +0 -0
  282. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/extract.rst +0 -0
  283. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/extract.rst.inc +0 -0
  284. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/general/date-time.rst.inc +0 -0
  285. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/general/environment.rst.inc +0 -0
  286. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/general/file-metadata.rst.inc +0 -0
  287. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/general/file-systems.rst.inc +0 -0
  288. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/general/logging.rst.inc +0 -0
  289. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/general/positional-arguments.rst.inc +0 -0
  290. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/general/repository-locations.rst.inc +0 -0
  291. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/general/repository-urls.rst.inc +0 -0
  292. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/general/resources.rst.inc +0 -0
  293. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/general/return-codes.rst.inc +0 -0
  294. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/general/units.rst.inc +0 -0
  295. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/general.rst +0 -0
  296. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/help.rst +0 -0
  297. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/help.rst.inc +0 -0
  298. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/import-tar.rst.inc +0 -0
  299. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/info.rst +0 -0
  300. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/info.rst.inc +0 -0
  301. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/init.rst +0 -0
  302. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/init.rst.inc +0 -0
  303. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/key.rst +0 -0
  304. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/key_change-passphrase.rst.inc +0 -0
  305. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/key_export.rst.inc +0 -0
  306. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/key_import.rst.inc +0 -0
  307. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/key_migrate-to-repokey.rst.inc +0 -0
  308. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/list.rst +0 -0
  309. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/list.rst.inc +0 -0
  310. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/lock.rst +0 -0
  311. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/mount.rst.inc +0 -0
  312. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/notes.rst +0 -0
  313. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/prune.rst +0 -0
  314. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/prune.rst.inc +0 -0
  315. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/recreate.rst +0 -0
  316. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/recreate.rst.inc +0 -0
  317. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/rename.rst +0 -0
  318. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/rename.rst.inc +0 -0
  319. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/serve.rst +0 -0
  320. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/serve.rst.inc +0 -0
  321. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/tar.rst +0 -0
  322. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/umount.rst.inc +0 -0
  323. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/upgrade.rst +0 -0
  324. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage/usage_general.rst.inc +0 -0
  325. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/docs/usage_general.rst.inc +0 -0
  326. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/requirements.d/development.txt +0 -0
  327. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/requirements.d/docs.txt +0 -0
  328. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/scripts/borg.exe.spec +0 -0
  329. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/scripts/errorlist.py +0 -0
  330. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/scripts/fuzz-cache-sync/HOWTO +0 -0
  331. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/scripts/fuzz-cache-sync/main.c +0 -0
  332. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/scripts/fuzz-cache-sync/testcase_dir/test_simple +0 -0
  333. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/scripts/glibc_check.py +0 -0
  334. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/scripts/hash_sizes.py +0 -0
  335. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/scripts/msys2-build +0 -0
  336. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/scripts/msys2-install-deps +0 -0
  337. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/scripts/sdist-sign +0 -0
  338. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/scripts/shell_completions/bash/borg +0 -0
  339. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/scripts/shell_completions/fish/borg.fish +0 -0
  340. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/scripts/shell_completions/zsh/_borg +0 -0
  341. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/scripts/sign-binaries +0 -0
  342. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/scripts/upload-pypi +0 -0
  343. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/setup.cfg +0 -0
  344. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/__init__.py +0 -0
  345. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/__main__.py +0 -0
  346. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/_chunker.c +0 -0
  347. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/_endian.h +0 -0
  348. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/_hashindex.c +0 -0
  349. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/_item.c +0 -0
  350. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/algorithms/__init__.py +0 -0
  351. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/algorithms/crc32_clmul.c +0 -0
  352. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/algorithms/crc32_dispatch.c +0 -0
  353. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/algorithms/crc32_slice_by_8.c +0 -0
  354. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/cache_sync/cache_sync.c +0 -0
  355. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/cache_sync/sysdep.h +0 -0
  356. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/cache_sync/unpack.h +0 -0
  357. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/cache_sync/unpack_define.h +0 -0
  358. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/cache_sync/unpack_template.h +0 -0
  359. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/constants.py +0 -0
  360. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/crypto/__init__.py +0 -0
  361. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/crypto/_crypto_helpers.c +0 -0
  362. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/crypto/_crypto_helpers.h +0 -0
  363. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/crypto/file_integrity.py +0 -0
  364. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/fuse.py +0 -0
  365. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/fuse_impl.py +0 -0
  366. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/helpers/datastruct.py +0 -0
  367. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/helpers/errors.py +0 -0
  368. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/helpers/manifest.py +0 -0
  369. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/helpers/misc.py +0 -0
  370. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/helpers/progress.py +0 -0
  371. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/helpers/time.py +0 -0
  372. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/helpers/yes.py +0 -0
  373. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/locking.py +0 -0
  374. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/lrucache.py +0 -0
  375. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/nanorst.py +0 -0
  376. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/paperkey.html +0 -0
  377. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/patterns.py +0 -0
  378. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/platform/__init__.py +0 -0
  379. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/platform/posix.pyx +0 -0
  380. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/platform/syncfilerange.pyx +0 -0
  381. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/platform/windows.pyx +0 -0
  382. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/platform/xattr.py +0 -0
  383. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/platformflags.py +0 -0
  384. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/selftest.py +0 -0
  385. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/shellpattern.py +0 -0
  386. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/__init__.py +0 -0
  387. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/archive.py +0 -0
  388. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/attic.tar.gz +0 -0
  389. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/benchmark.py +0 -0
  390. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/cache.py +0 -0
  391. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/chunker.py +0 -0
  392. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/chunker_pytest.py +0 -0
  393. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/compress.py +0 -0
  394. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/conftest.py +0 -0
  395. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/efficient_collection_queue.py +0 -0
  396. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/file_integrity.py +0 -0
  397. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/hashindex.py +0 -0
  398. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/hashindex_stress.py +0 -0
  399. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/helpers.py +0 -0
  400. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/item.py +0 -0
  401. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/locking.py +0 -0
  402. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/logger.py +0 -0
  403. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/lrucache.py +0 -0
  404. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/nanorst.py +0 -0
  405. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/nonces.py +0 -0
  406. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/patterns.py +0 -0
  407. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/remote.py +0 -0
  408. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/repository.py +0 -0
  409. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/shellpattern.py +0 -0
  410. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/upgrader.py +0 -0
  411. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/version.py +0 -0
  412. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/testsuite/xattr.py +0 -0
  413. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/upgrader.py +0 -0
  414. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/version.py +0 -0
  415. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borg/xattr.py +0 -0
  416. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borgbackup.egg-info/dependency_links.txt +0 -0
  417. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borgbackup.egg-info/entry_points.txt +0 -0
  418. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/src/borgbackup.egg-info/top_level.txt +0 -0
  419. {borgbackup-1.4.0a1 → borgbackup-1.4.0b2}/tox.ini +0 -0
@@ -0,0 +1,12 @@
1
+ brew 'pkg-config'
2
+ brew 'zstd'
3
+ brew 'lz4'
4
+ brew 'xxhash'
5
+ brew 'openssl@3.0'
6
+
7
+ # osxfuse (aka macFUSE) is only required for "borg mount",
8
+ # but won't work on github actions' workers.
9
+ # it requires installing a kernel extension, so some users
10
+ # may want it and some won't.
11
+
12
+ #cask 'osxfuse'
@@ -29,49 +29,63 @@ places. Borg now considers archives without TAM as garbage or an attack.
29
29
 
30
30
  We are not aware of others having discovered, disclosed or exploited this vulnerability.
31
31
 
32
- Below, if we speak of borg 1.2.6, we mean a borg version >= 1.2.6 **or** a
33
- borg version that has the relevant security patches for this vulnerability applied
32
+ Below, if we speak of borg 1.2.8, we mean a borg version >= 1.2.8 **or** a
33
+ borg version that has the relevant patches for this vulnerability applied
34
34
  (could be also an older version in that case).
35
35
 
36
36
  Steps you must take to upgrade a repository (this applies to all kinds of repos
37
37
  no matter what encryption mode they use, including "none"):
38
38
 
39
- 1. Upgrade all clients using this repository to borg 1.2.6.
39
+ 1. Upgrade all clients using this repository to borg 1.2.8.
40
40
  Note: it is not required to upgrade a server, except if the server-side borg
41
41
  is also used as a client (and not just for "borg serve").
42
42
 
43
- Do **not** run ``borg check`` with borg 1.2.6 before completing the upgrade steps:
43
+ Do **not** run ``borg check`` with borg > 1.2.4 before completing the upgrade steps:
44
44
 
45
45
  - ``borg check`` would complain about archives without a valid archive TAM.
46
46
  - ``borg check --repair`` would remove such archives!
47
- 2. Run: ``BORG_WORKAROUNDS=ignore_invalid_archive_tam borg info --debug <repo> 2>&1 | grep TAM | grep -i manifest``
47
+ 2. Do this step on every client using this repo: ``borg upgrade --show-rc --check-tam <repo>``
48
48
 
49
- a) If you get "TAM-verified manifest", continue with 3.
50
- b) If you get "Manifest TAM not found and not required", run
51
- ``borg upgrade --tam --force <repository>`` *on every client*.
49
+ This will check the manifest TAM authentication setup in the repo and on this client.
50
+ The command will exit with rc=0 if all is OK, otherwise with rc=1.
52
51
 
53
- 3. Run: ``BORG_WORKAROUNDS=ignore_invalid_archive_tam borg list --consider-checkpoints --format='{name} {time} tam:{tam}{NL}' <repo>``
52
+ a) If you get "Manifest authentication setup OK for this client and this repository."
53
+ and rc=0, continue with 3.
54
+ b) If you get some warnings and rc=1, run:
55
+ ``borg upgrade --tam --force <repository>``
54
56
 
55
- "tam:verified" means that the archive has a valid TAM authentication.
56
- "tam:none" is expected as output for archives created by borg <1.0.9.
57
- "tam:none" is also expected for archives resulting from a borg rename
58
- or borg recreate operation (see #7791).
59
- "tam:none" could also come from archives created by an attacker.
60
- You should verify that "tam:none" archives are authentic and not malicious
57
+ 3. Run: ``borg upgrade --show-rc --check-archives-tam <repo>``
58
+
59
+ This will create a report about the TAM status for all archives.
60
+ In the last line(s) of the report, it will also report the overall status.
61
+ The command will exit with rc=0 if all archives are TAM authenticated or with rc=1
62
+ if there are some archives with TAM issues.
63
+
64
+ If there are no issues and all archives are TAM authenticated, continue with 5.
65
+
66
+ Archive TAM issues are expected for:
67
+
68
+ - archives created by borg <1.0.9.
69
+ - archives resulting from a borg rename or borg recreate operation (see #7791)
70
+
71
+ But, important, archive TAM issues could also come from archives created by an attacker.
72
+ You should verify that archives with TAM issues are authentic and not malicious
61
73
  (== have good content, have correct timestamp, can be extracted successfully).
62
74
  In case you find crappy/malicious archives, you must delete them before proceeding.
75
+
63
76
  In low-risk, trusted environments, you may decide on your own risk to skip step 3
64
77
  and just trust in everything being OK.
65
78
 
66
- 4. If there are no tam:none archives left at this point, you can skip this step.
67
- Run ``BORG_WORKAROUNDS=ignore_invalid_archive_tam borg upgrade --archives-tam <repo>``.
79
+ 4. If there are no archives with TAM issues left at this point, you can skip this step.
80
+
81
+ Run ``borg upgrade --archives-tam <repo>``.
82
+
68
83
  This will unconditionally add a correct archive TAM to all archives not having one.
69
84
  ``borg check`` would consider TAM-less or invalid-TAM archives as garbage or a potential attack.
70
- To see that all archives now are "tam:verified" run: ``borg list --consider-checkpoints --format='{name} {time} tam:{tam}{NL}' <repo>``
71
85
 
72
- 5. Please note that you should never use BORG_WORKAROUNDS=ignore_invalid_archive_tam
73
- for normal production operations - it is only needed once to get the archives in a
74
- repository into a good state. All archives have a valid TAM now.
86
+ To see that all archives are OK now, you can optionally repeat the command from step 3.
87
+
88
+ 5. Done. Manifest and archives are TAM authenticated now.
75
89
 
76
90
  Vulnerability time line:
77
91
 
@@ -305,10 +319,13 @@ Compatibility notes:
305
319
  By default, borg 1.4 will behave quite similar to borg 1.2 (it was forked off
306
320
  from 1.2-maint branch at 1.2.7).
307
321
 
308
- For better error handling in your scripts, wrappers or GUI frontends, you may
309
- want to use BORG_EXIT_CODES=modern - in that case you of course will need to
310
- make sure these deal with the new error and warning exit codes, see
311
- internals/frontends docs.
322
+ - the slashdot hack: be careful not to accidentally give paths containing /./
323
+ to "borg create" if you do not want to trigger this feature (which strips the
324
+ left part of the path from archived items).
325
+ - BORG_EXIT_CODES=modern is a feature that borg script, wrapper and GUI authors
326
+ may want to use to get more specific error and warning return codes from borg.
327
+ In that case, of course they will need to make sure to correctly deal with these
328
+ new codes, see the internals/frontends docs.
312
329
 
313
330
  borg 1.1.x to 1.2.x
314
331
  -------------------
@@ -394,12 +411,85 @@ Compatibility notes:
394
411
  Change Log
395
412
  ==========
396
413
 
397
- Version 1.4.0a1 (2024-01-01)
414
+
415
+ Version 1.4.0b2 (2024-03-31)
398
416
  ----------------------------
399
417
 
400
418
  For upgrade and compatibility hints, please also read the section "Upgrade Notes"
401
419
  above.
402
420
 
421
+ Fixes:
422
+
423
+ - check: fix return code for index entry value discrepancies
424
+ - benchmark: inherit options --rsh --remote-path, #8099
425
+ - sdist: dynamically compute readme (long_description)
426
+ - create: deal with EBUSY, #8123
427
+ - No need to use OpenSSL 3.0 on OpenBSD, use LibreSSL.
428
+ - fix Ctrl-C / SIGINT behaviour for pyinstaller-made binaries, #8155
429
+
430
+ New features:
431
+
432
+ - create: add the slashdot hack, update docs, #4685
433
+ - upgrade --check-tam: check manifest TAM auth, exit with rc=1 if there are issues.
434
+ - upgrade --check-archives-tam: check archives TAM auth, exit with rc=1 if there are issues.
435
+
436
+ Other changes:
437
+
438
+ - improve acl_get / acl_set error handling, improved/added tests, #8125
439
+ - remove bundled lz4/zstd/xxhash code (require the respective libs/headers),
440
+ simplify setup.py, remove support for all BORG_USE_BUNDLED_*=YES, #8094
441
+ - require Cython 3.0.3 at least (fixes py312 memory leak), #8133
442
+ - allow msgpack 1.0.8, #8133
443
+ - init: better borg key export instructions
444
+ - init: remove compatibility warning for borg <=1.0.8
445
+ The warning refers to a compatibility issue not relevant any
446
+ more since borg 1.0.9 (released 2016-12).
447
+ - locate libacl via pkgconfig
448
+ - scripts/make.py: move clean, build_man, build_usage to there,
449
+ so we do not need to invoke setup.py directly, update docs
450
+ - docs:
451
+
452
+ - how to run the testsuite using the dist package
453
+ - add non-root deployment strategy (systemd / capabilities)
454
+ - simplify TAM-related upgrade docs using the new commands
455
+ - vagrant:
456
+
457
+ - use python 3.11.8
458
+ - use pyinstaller 6.5.0
459
+ - add xxhash for macOS, add libxxhash-dev for debianoid systems
460
+ - use openindiana/hipster box
461
+
462
+
463
+ Version 1.4.0b1 (2024-01-21)
464
+ ----------------------------
465
+
466
+ Fixes:
467
+
468
+ - fix CommandError args, #8029
469
+
470
+ New features:
471
+
472
+ - implement "borg version" (shows client and server version), #7829
473
+
474
+ Other changes:
475
+
476
+ - better error msg for corrupted key data, #8016
477
+ - repository: give clean error msg for invalid nonce file, #7967
478
+ - check_can_create_repository: deal with PermissionErrors, #7016
479
+ - add ConnectionBrokenWithHint for BrokenPipeErrors and similar, #7016
480
+
481
+ - with-lock: catch exception, print error msg, #8022
482
+ - use cython 3.0.8
483
+ - modernize msgpack wrapper
484
+ - docs:
485
+
486
+ - add brew bundle instructions (macOS)
487
+ - improve docs for borg with-lock, #8022
488
+
489
+
490
+ Version 1.4.0a1 (2024-01-01)
491
+ ----------------------------
492
+
403
493
  New features:
404
494
 
405
495
  - BORG_EXIT_CODES=modern: optional more specific return codes (for errors and warnings).
@@ -1,4 +1,4 @@
1
- Copyright (C) 2015-2023 The Borg Collective (see AUTHORS file)
1
+ Copyright (C) 2015-2024 The Borg Collective (see AUTHORS file)
2
2
  Copyright (C) 2010-2014 Jonas Borgström <jonas@borgstrom.se>
3
3
  All rights reserved.
4
4
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: borgbackup
3
- Version: 1.4.0a1
3
+ Version: 1.4.0b2
4
4
  Summary: Deduplicated, encrypted, authenticated and compressed backups
5
5
  Author: The Borg Collective (see AUTHORS file)
6
6
  Maintainer-email: Thomas Waldmann <tw@waldmann-edv.de>
@@ -29,10 +29,9 @@ Classifier: Programming Language :: Python :: 3.12
29
29
  Classifier: Topic :: Security :: Cryptography
30
30
  Classifier: Topic :: System :: Archiving :: Backup
31
31
  Requires-Python: >=3.9
32
- Description-Content-Type: text/x-rst
33
32
  License-File: LICENSE
34
33
  License-File: AUTHORS
35
- Requires-Dist: msgpack<=1.0.7,>=1.0.3
34
+ Requires-Dist: msgpack<=1.0.8,>=1.0.3
36
35
  Requires-Dist: packaging
37
36
  Provides-Extra: llfuse
38
37
  Requires-Dist: llfuse>=1.3.8; extra == "llfuse"
@@ -40,9 +39,6 @@ Provides-Extra: pyfuse3
40
39
  Requires-Dist: pyfuse3>=3.1.1; extra == "pyfuse3"
41
40
  Provides-Extra: nofuse
42
41
 
43
- |screencast_basic|
44
-
45
- More screencasts: `installation`_, `advanced usage`_
46
42
 
47
43
  What is BorgBackup?
48
44
  -------------------
@@ -211,33 +207,4 @@ THIS IS SOFTWARE IN DEVELOPMENT, DECIDE YOURSELF WHETHER IT FITS YOUR NEEDS.
211
207
  Security issues should be reported to the `Security contact`_ (or
212
208
  see ``docs/support.rst`` in the source distribution).
213
209
 
214
- .. start-badges
215
-
216
- |doc| |build| |coverage| |bestpractices|
217
-
218
- .. |doc| image:: https://readthedocs.org/projects/borgbackup/badge/?version=stable
219
- :alt: Documentation
220
- :target: https://borgbackup.readthedocs.org/en/stable/
221
-
222
- .. |build| image:: https://github.com/borgbackup/borg/workflows/CI/badge.svg?branch=master
223
- :alt: Build Status (master)
224
- :target: https://github.com/borgbackup/borg/actions
225
-
226
- .. |coverage| image:: https://codecov.io/github/borgbackup/borg/coverage.svg?branch=master
227
- :alt: Test Coverage
228
- :target: https://codecov.io/github/borgbackup/borg?branch=master
229
-
230
- .. |screencast_basic| image:: https://asciinema.org/a/133292.png
231
- :alt: BorgBackup Basic Usage
232
- :target: https://asciinema.org/a/133292?autoplay=1&speed=1
233
- :width: 100%
234
-
235
- .. _installation: https://asciinema.org/a/133291?autoplay=1&speed=1
236
-
237
- .. _advanced usage: https://asciinema.org/a/133293?autoplay=1&speed=1
238
-
239
- .. |bestpractices| image:: https://bestpractices.coreinfrastructure.org/projects/271/badge
240
- :alt: Best Practices Score
241
- :target: https://bestpractices.coreinfrastructure.org/projects/271
242
210
 
243
- .. end-badges
@@ -29,49 +29,63 @@ places. Borg now considers archives without TAM as garbage or an attack.
29
29
 
30
30
  We are not aware of others having discovered, disclosed or exploited this vulnerability.
31
31
 
32
- Below, if we speak of borg 1.2.6, we mean a borg version >= 1.2.6 **or** a
33
- borg version that has the relevant security patches for this vulnerability applied
32
+ Below, if we speak of borg 1.2.8, we mean a borg version >= 1.2.8 **or** a
33
+ borg version that has the relevant patches for this vulnerability applied
34
34
  (could be also an older version in that case).
35
35
 
36
36
  Steps you must take to upgrade a repository (this applies to all kinds of repos
37
37
  no matter what encryption mode they use, including "none"):
38
38
 
39
- 1. Upgrade all clients using this repository to borg 1.2.6.
39
+ 1. Upgrade all clients using this repository to borg 1.2.8.
40
40
  Note: it is not required to upgrade a server, except if the server-side borg
41
41
  is also used as a client (and not just for "borg serve").
42
42
 
43
- Do **not** run ``borg check`` with borg 1.2.6 before completing the upgrade steps:
43
+ Do **not** run ``borg check`` with borg > 1.2.4 before completing the upgrade steps:
44
44
 
45
45
  - ``borg check`` would complain about archives without a valid archive TAM.
46
46
  - ``borg check --repair`` would remove such archives!
47
- 2. Run: ``BORG_WORKAROUNDS=ignore_invalid_archive_tam borg info --debug <repo> 2>&1 | grep TAM | grep -i manifest``
47
+ 2. Do this step on every client using this repo: ``borg upgrade --show-rc --check-tam <repo>``
48
48
 
49
- a) If you get "TAM-verified manifest", continue with 3.
50
- b) If you get "Manifest TAM not found and not required", run
51
- ``borg upgrade --tam --force <repository>`` *on every client*.
49
+ This will check the manifest TAM authentication setup in the repo and on this client.
50
+ The command will exit with rc=0 if all is OK, otherwise with rc=1.
52
51
 
53
- 3. Run: ``BORG_WORKAROUNDS=ignore_invalid_archive_tam borg list --consider-checkpoints --format='{name} {time} tam:{tam}{NL}' <repo>``
52
+ a) If you get "Manifest authentication setup OK for this client and this repository."
53
+ and rc=0, continue with 3.
54
+ b) If you get some warnings and rc=1, run:
55
+ ``borg upgrade --tam --force <repository>``
54
56
 
55
- "tam:verified" means that the archive has a valid TAM authentication.
56
- "tam:none" is expected as output for archives created by borg <1.0.9.
57
- "tam:none" is also expected for archives resulting from a borg rename
58
- or borg recreate operation (see #7791).
59
- "tam:none" could also come from archives created by an attacker.
60
- You should verify that "tam:none" archives are authentic and not malicious
57
+ 3. Run: ``borg upgrade --show-rc --check-archives-tam <repo>``
58
+
59
+ This will create a report about the TAM status for all archives.
60
+ In the last line(s) of the report, it will also report the overall status.
61
+ The command will exit with rc=0 if all archives are TAM authenticated or with rc=1
62
+ if there are some archives with TAM issues.
63
+
64
+ If there are no issues and all archives are TAM authenticated, continue with 5.
65
+
66
+ Archive TAM issues are expected for:
67
+
68
+ - archives created by borg <1.0.9.
69
+ - archives resulting from a borg rename or borg recreate operation (see #7791)
70
+
71
+ But, important, archive TAM issues could also come from archives created by an attacker.
72
+ You should verify that archives with TAM issues are authentic and not malicious
61
73
  (== have good content, have correct timestamp, can be extracted successfully).
62
74
  In case you find crappy/malicious archives, you must delete them before proceeding.
75
+
63
76
  In low-risk, trusted environments, you may decide on your own risk to skip step 3
64
77
  and just trust in everything being OK.
65
78
 
66
- 4. If there are no tam:none archives left at this point, you can skip this step.
67
- Run ``BORG_WORKAROUNDS=ignore_invalid_archive_tam borg upgrade --archives-tam <repo>``.
79
+ 4. If there are no archives with TAM issues left at this point, you can skip this step.
80
+
81
+ Run ``borg upgrade --archives-tam <repo>``.
82
+
68
83
  This will unconditionally add a correct archive TAM to all archives not having one.
69
84
  ``borg check`` would consider TAM-less or invalid-TAM archives as garbage or a potential attack.
70
- To see that all archives now are "tam:verified" run: ``borg list --consider-checkpoints --format='{name} {time} tam:{tam}{NL}' <repo>``
71
85
 
72
- 5. Please note that you should never use BORG_WORKAROUNDS=ignore_invalid_archive_tam
73
- for normal production operations - it is only needed once to get the archives in a
74
- repository into a good state. All archives have a valid TAM now.
86
+ To see that all archives are OK now, you can optionally repeat the command from step 3.
87
+
88
+ 5. Done. Manifest and archives are TAM authenticated now.
75
89
 
76
90
  Vulnerability time line:
77
91
 
@@ -305,10 +319,13 @@ Compatibility notes:
305
319
  By default, borg 1.4 will behave quite similar to borg 1.2 (it was forked off
306
320
  from 1.2-maint branch at 1.2.7).
307
321
 
308
- For better error handling in your scripts, wrappers or GUI frontends, you may
309
- want to use BORG_EXIT_CODES=modern - in that case you of course will need to
310
- make sure these deal with the new error and warning exit codes, see
311
- internals/frontends docs.
322
+ - the slashdot hack: be careful not to accidentally give paths containing /./
323
+ to "borg create" if you do not want to trigger this feature (which strips the
324
+ left part of the path from archived items).
325
+ - BORG_EXIT_CODES=modern is a feature that borg script, wrapper and GUI authors
326
+ may want to use to get more specific error and warning return codes from borg.
327
+ In that case, of course they will need to make sure to correctly deal with these
328
+ new codes, see the internals/frontends docs.
312
329
 
313
330
  borg 1.1.x to 1.2.x
314
331
  -------------------
@@ -394,12 +411,85 @@ Compatibility notes:
394
411
  Change Log
395
412
  ==========
396
413
 
397
- Version 1.4.0a1 (2024-01-01)
414
+
415
+ Version 1.4.0b2 (2024-03-31)
398
416
  ----------------------------
399
417
 
400
418
  For upgrade and compatibility hints, please also read the section "Upgrade Notes"
401
419
  above.
402
420
 
421
+ Fixes:
422
+
423
+ - check: fix return code for index entry value discrepancies
424
+ - benchmark: inherit options --rsh --remote-path, #8099
425
+ - sdist: dynamically compute readme (long_description)
426
+ - create: deal with EBUSY, #8123
427
+ - No need to use OpenSSL 3.0 on OpenBSD, use LibreSSL.
428
+ - fix Ctrl-C / SIGINT behaviour for pyinstaller-made binaries, #8155
429
+
430
+ New features:
431
+
432
+ - create: add the slashdot hack, update docs, #4685
433
+ - upgrade --check-tam: check manifest TAM auth, exit with rc=1 if there are issues.
434
+ - upgrade --check-archives-tam: check archives TAM auth, exit with rc=1 if there are issues.
435
+
436
+ Other changes:
437
+
438
+ - improve acl_get / acl_set error handling, improved/added tests, #8125
439
+ - remove bundled lz4/zstd/xxhash code (require the respective libs/headers),
440
+ simplify setup.py, remove support for all BORG_USE_BUNDLED_*=YES, #8094
441
+ - require Cython 3.0.3 at least (fixes py312 memory leak), #8133
442
+ - allow msgpack 1.0.8, #8133
443
+ - init: better borg key export instructions
444
+ - init: remove compatibility warning for borg <=1.0.8
445
+ The warning refers to a compatibility issue not relevant any
446
+ more since borg 1.0.9 (released 2016-12).
447
+ - locate libacl via pkgconfig
448
+ - scripts/make.py: move clean, build_man, build_usage to there,
449
+ so we do not need to invoke setup.py directly, update docs
450
+ - docs:
451
+
452
+ - how to run the testsuite using the dist package
453
+ - add non-root deployment strategy (systemd / capabilities)
454
+ - simplify TAM-related upgrade docs using the new commands
455
+ - vagrant:
456
+
457
+ - use python 3.11.8
458
+ - use pyinstaller 6.5.0
459
+ - add xxhash for macOS, add libxxhash-dev for debianoid systems
460
+ - use openindiana/hipster box
461
+
462
+
463
+ Version 1.4.0b1 (2024-01-21)
464
+ ----------------------------
465
+
466
+ Fixes:
467
+
468
+ - fix CommandError args, #8029
469
+
470
+ New features:
471
+
472
+ - implement "borg version" (shows client and server version), #7829
473
+
474
+ Other changes:
475
+
476
+ - better error msg for corrupted key data, #8016
477
+ - repository: give clean error msg for invalid nonce file, #7967
478
+ - check_can_create_repository: deal with PermissionErrors, #7016
479
+ - add ConnectionBrokenWithHint for BrokenPipeErrors and similar, #7016
480
+
481
+ - with-lock: catch exception, print error msg, #8022
482
+ - use cython 3.0.8
483
+ - modernize msgpack wrapper
484
+ - docs:
485
+
486
+ - add brew bundle instructions (macOS)
487
+ - improve docs for borg with-lock, #8022
488
+
489
+
490
+ Version 1.4.0a1 (2024-01-01)
491
+ ----------------------------
492
+
403
493
  New features:
404
494
 
405
495
  - BORG_EXIT_CODES=modern: optional more specific return codes (for errors and warnings).
@@ -42,7 +42,7 @@ master_doc = 'index'
42
42
 
43
43
  # General information about the project.
44
44
  project = 'Borg - Deduplicating Archiver'
45
- copyright = '2010-2014 Jonas Borgström, 2015-2023 The Borg Collective (see AUTHORS file)'
45
+ copyright = '2010-2014 Jonas Borgström, 2015-2024 The Borg Collective (see AUTHORS file)'
46
46
 
47
47
  # The version info for the project you're documenting, acts as replacement for
48
48
  # |version| and |release|, also used in various other places throughout the
@@ -0,0 +1,66 @@
1
+ .. include:: ../global.rst.inc
2
+ .. highlight:: none
3
+ .. _non_root_user:
4
+
5
+ ================================
6
+ Backing up using a non-root user
7
+ ================================
8
+
9
+ This section describes how to run borg as a non-root user and still be able to
10
+ backup every file on the system.
11
+
12
+ Normally borg is run as the root user to bypass all filesystem permissions and
13
+ be able to read all files. But in theory this also allows borg to modify or
14
+ delete files on your system, in case of a bug for example.
15
+
16
+ To eliminate this possibility, we can run borg as a non-root user and give it read-only
17
+ permissions to all files on the system.
18
+
19
+
20
+ Using Linux capabilities inside a systemd service
21
+ =================================================
22
+
23
+ One way to do so, is to use linux `capabilities
24
+ <https://man7.org/linux/man-pages/man7/capabilities.7.html>`_ within a systemd
25
+ service.
26
+
27
+ Linux capabilities allow us to give parts of the privileges the root user has to
28
+ a non-root user. This works on a per-thread level and does not give the permission
29
+ to the non-root user as a whole.
30
+
31
+ For this we need to run our backup script from a systemd service and use the `AmbientCapabilities
32
+ <https://www.freedesktop.org/software/systemd/man/latest/systemd.exec.html#AmbientCapabilities=>`_
33
+ option added in systemd 229.
34
+
35
+ A very basic unit file would look like this:
36
+
37
+ ::
38
+
39
+ [Unit]
40
+ Description=Borg Backup
41
+
42
+ [Service]
43
+ Type=oneshot
44
+ User=borg
45
+ ExecStart=/usr/local/sbin/backup.sh
46
+
47
+ AmbientCapabilities=CAP_DAC_READ_SEARCH
48
+
49
+ The ``CAP_DAC_READ_SEARCH`` capability gives borg read-only access to all files and directories on the system.
50
+
51
+ This service can then be started manually using ``systemctl start``, a systemd timer or other methods.
52
+
53
+ Restore considerations
54
+ ======================
55
+
56
+ When restoring files, the root user should be used. When using the non-root user, borg extract will
57
+ change all files to be owned by the non-root user. Using borg mount will not allow the non-root user
58
+ to access files that it would not have access to on the system itself.
59
+
60
+ Other than that, the same restore process, that would be used when running the backup as root, can be used.
61
+
62
+ .. warning::
63
+
64
+ When using a local repo and running borg commands as root, make sure to only use commands that do not
65
+ modify the repo itself, like extract or mount. Modifying the repo using the root user will break
66
+ the repo for the non-root user, since some files inside the repo will now be owned by root.
@@ -14,3 +14,4 @@ This chapter details deployment strategies for the following scenarios.
14
14
  deployment/automated-local
15
15
  deployment/image-backup
16
16
  deployment/pull-backup
17
+ deployment/non-root-user
@@ -199,6 +199,37 @@ Important notes:
199
199
  - When using ``--`` to give options to py.test, you MUST also give ``borg.testsuite[.module]``.
200
200
 
201
201
 
202
+ Running the tests (using the pypi package)
203
+ ------------------------------------------
204
+
205
+ Since borg 1.4, it is also possible to run the tests without a development
206
+ environment, using the borgbackup dist package (downloaded from pypi.org or
207
+ github releases page)::
208
+
209
+ # optional: create and use a virtual env:
210
+ python3 -m venv env
211
+ . env/bin/activate
212
+
213
+ # install packages
214
+ pip install borgbackup
215
+ pip install pytest pytest-benchmark
216
+
217
+ # method A: use a pytest.ini
218
+
219
+ cat >pytest.ini <<<EOF
220
+ [pytest]
221
+ python_files = testsuite/*.py
222
+ markers = allow_cache_wipe
223
+ addopts = -rs --benchmark-skip
224
+ EOF
225
+
226
+ pytest --pyargs borg.testsuite
227
+
228
+ # method B: give the options via the cmdline (each time you invoke the tests):
229
+
230
+ pytest -rs --benchmark-skip -o 'python_files=testsuite/*.py' -o 'markers=allow_cache_wipe' --pyargs borg.testsuite
231
+
232
+
202
233
  Adding a compression algorithm
203
234
  ------------------------------
204
235
 
@@ -220,8 +251,8 @@ for easier use by packagers downstream.
220
251
  When a command is added, a command line flag changed, added or removed,
221
252
  the usage docs need to be rebuilt as well::
222
253
 
223
- python setup.py build_usage
224
- python setup.py build_man
254
+ python scripts/make.py build_usage
255
+ python scripts/make.py build_man
225
256
 
226
257
  However, we prefer to do this as part of our :ref:`releasing`
227
258
  preparations, so it is generally not necessary to update these when
@@ -311,7 +342,11 @@ Checklist:
311
342
  - Check version number of upcoming release in ``CHANGES.rst``.
312
343
  - Render ``CHANGES.rst`` via ``make html`` and check for markup errors.
313
344
  - Verify that ``MANIFEST.in``, ``pyproject.toml`` and ``setup.py`` are complete.
314
- - ``python setup.py build_usage ; python setup.py build_man`` and commit.
345
+ - Run these commands and commit::
346
+
347
+ python scripts/make.py build_usage
348
+ python scripts/make.py build_man
349
+
315
350
  - Tag the release::
316
351
 
317
352
  git tag -s -m "tagged/signed release X.Y.Z" X.Y.Z
@@ -15,7 +15,6 @@
15
15
  .. _libattr: https://savannah.nongnu.org/projects/attr/
16
16
  .. _liblz4: https://github.com/Cyan4973/lz4
17
17
  .. _libzstd: https://github.com/facebook/zstd
18
- .. _libb2: https://github.com/BLAKE2/libb2
19
18
  .. _OpenSSL: https://www.openssl.org/
20
19
  .. _`Python 3`: https://www.python.org/
21
20
  .. _Buzhash: https://en.wikipedia.org/wiki/Buzhash
@@ -180,7 +180,7 @@ following dependencies first:
180
180
 
181
181
  - Either pyfuse3_ (preferably, newer and maintained) or llfuse_ (older,
182
182
  unmaintained now). See also the BORG_FUSE_IMPL env variable.
183
- - See setup.py about the version requirements.
183
+ - See pyproject.toml about the version requirements.
184
184
 
185
185
  If you have troubles finding the right package names, have a look at the
186
186
  distribution specific sections below or the Vagrantfile in the git repository,
@@ -247,16 +247,10 @@ Alternatively, you can enumerate all build dependencies in the command line::
247
247
  macOS
248
248
  +++++
249
249
 
250
- When installing via Homebrew_, dependencies are installed automatically. To install
251
- dependencies manually::
250
+ When installing borgbackup via Homebrew_, the basic dependencies are installed automatically.
252
251
 
253
- brew install python3 openssl zstd lz4 xxhash
254
- brew install pkg-config
255
- pip3 install virtualenv pkgconfig
256
-
257
- For FUSE support to mount the backup archives, you need at least version 3.0 of
258
- macFUSE, which is available via `github
259
- <https://github.com/osxfuse/osxfuse/releases/latest>`__, or Homebrew::
252
+ For FUSE support to mount the backup archives, you need macFUSE, which is available
253
+ via `github <https://github.com/osxfuse/osxfuse/releases/latest>`__, or Homebrew::
260
254
 
261
255
  brew install --cask macfuse
262
256
 
@@ -266,6 +260,13 @@ the installed ``openssl`` formula, point pkg-config to the correct path::
266
260
 
267
261
  PKG_CONFIG_PATH="/usr/local/opt/openssl@1.1/lib/pkgconfig" pip install borgbackup[llfuse]
268
262
 
263
+ When working from a borg git repo workdir, you can install dependencies using the
264
+ Brewfile::
265
+
266
+ brew install python@3.11 # can be any supported python3 version
267
+ brew bundle install # install requirements from borg repo's ./Brewfile
268
+ pip3 install virtualenv pkgconfig
269
+
269
270
  Be aware that for all recent macOS releases you must authorize full disk access.
270
271
  It is no longer sufficient to run borg backups as root. If you have not yet
271
272
  granted full disk access, and you run Borg backup from cron, you will see