Compare commits
1,252 commits
| Author | SHA1 | Date | |
|---|---|---|---|
| fdb353d358 | |||
| 3b99f7c75a | |||
| 8b9abc6cf8 | |||
| da034c316a | |||
| 08d01d8bcd | |||
| eef69e23ee | |||
| 26bb54a9dd | |||
| 715e2ac127 | |||
| f39cea4abf | |||
| 22101bdd49 | |||
| 13cf863d89 | |||
| dcf25fa041 | |||
| 12b75f9075 | |||
|
9baf06a2f7 |
|||
|
|
56302e22cd |
||
| 6cc93c4eb9 | |||
| 2da43239f6 | |||
| 4beef36d3c | |||
| eacfbd742b | |||
| 82a85986b6 | |||
| ef448e2dd1 | |||
| c3efe1b90e | |||
| d85c1ee216 | |||
| b47088067c | |||
| c5732aa4fc | |||
| a0323d9d6c | |||
| 8ad7b473f1 | |||
| 895a0ccb3c | |||
| 257ab77bea | |||
|
dccaa4014b |
|||
|
|
2f3c0bec5b | ||
| 487d8ffd32 | |||
| 30523a7c89 | |||
| 77b1907d03 | |||
| 09594c85bf | |||
| e07efdf68f | |||
| 1fed44f905 | |||
| c687dafdd2 | |||
| 3eff2c4248 | |||
| d94fdb6faf | |||
| a83282faf0 | |||
| e7169f6fb2 | |||
| 9587fc2366 | |||
| 5f06884d5a | |||
| f011431463 | |||
| 9e14f209f1 | |||
| 9d34d2eec5 | |||
| 7a9625cd44 | |||
| 4763c323d0 | |||
| eaa22be3db | |||
| a587e207f9 | |||
| db8079b699 | |||
| 5a989826a1 | |||
| 21f4266273 | |||
| e7252c7545 | |||
| 86011c8418 | |||
| f3295ccb4a | |||
| cacb81f086 | |||
| 06c2154e6a | |||
| ac1e1a9407 | |||
| 10933fd55b | |||
| af422ad705 | |||
| d9d35491fb | |||
| b540e63c0e | |||
| 5a56208922 | |||
| 5912769273 | |||
| bac2aabe66 | |||
| 9f3328781b | |||
| 0205748db8 | |||
| d0a8251ad2 | |||
| 32019ea8f3 | |||
| fa9a061033 | |||
| b3d2560563 | |||
| 4b4f56da42 | |||
| b96d1898f7 | |||
| 099a712e53 | |||
| 9e2674ea5a | |||
| 7e419ec995 | |||
| a3edf757ee | |||
| e576403b64 | |||
| 7313430178 | |||
| 962daaa8b9 | |||
| cd51e9c1ea | |||
| 6dca7c1c15 | |||
| fd8c56c6be | |||
|
065057c966 |
|||
| c04517f843 | |||
| 5d80c366fb | |||
| 193dd93de2 | |||
| 8a94b9e2f1 | |||
| 3c8f6040e2 | |||
| 14e2a6b89d | |||
| e607de7df1 | |||
| e9bd5f4e1d | |||
| 175003ff9b | |||
| b8d349d048 | |||
| f6f06551f0 | |||
| 69771fe7ce | |||
| c5c3e2e0ce | |||
|
8491b2c416 |
|||
| 962267b3c5 | |||
| 562f4a281b | |||
| 6b09ca8022 | |||
| f2ce2f387f | |||
| 782a9bb70a | |||
|
88adb5b3de |
|||
|
59465b256d |
|||
| adfb89ee65 | |||
| c11dcdef0a | |||
| 8a2514915c | |||
| 4d7a2876a5 | |||
| 309f67e860 | |||
| 0ad7b4f408 | |||
| 1f415a24b8 | |||
| 5c941600a6 | |||
| 5e0283b391 | |||
| ac0b23901b | |||
| cde50a75e9 | |||
| 521c0eb600 | |||
| bc5dc2253c | |||
| 973ab01afb | |||
| 9413a19eca | |||
| 0055de08a4 | |||
| 04fb351a11 | |||
| e913cddcd1 | |||
| da78929415 | |||
| 18b3b569d0 | |||
| 054bd52482 | |||
| 2453ecad42 | |||
| cedf562a7e | |||
| 5b991b88dd | |||
| d2fa205476 | |||
| ecd9e62147 | |||
| 003d4eac93 | |||
| e8dbca9d68 | |||
| bd9d592560 | |||
| 196a226a7e | |||
| a3f47a6418 | |||
| d29667ca3c | |||
| 7d18f59079 | |||
| ab351548d2 | |||
| 48b6a1679a | |||
| 9cafc16052 | |||
| fbbfc684ce | |||
| 13a37a1d9b | |||
| 9cf27fa4ba | |||
| e2c95327fb | |||
| f60e97d5bf | |||
| 44f9ab95f9 | |||
| bb6004fc4f | |||
| b242078f54 | |||
| c3004c6090 | |||
| b9a11e860d | |||
| 37a0a0c421 | |||
| 325b561296 | |||
| b62017be4b | |||
| 8debcbeaba | |||
| 35a11559ac | |||
| e4e455ee45 | |||
| 23809e9060 | |||
| bb0dd14f69 | |||
| 308c96aeb5 | |||
| 62a2f5a1d0 | |||
| e8c862659c | |||
| 69611681e2 | |||
| 9e0df595c8 | |||
|
68d90e1e40 |
|||
| 248500c7be | |||
| 3addb60fb8 | |||
| 01fffab898 | |||
| bc93401a70 | |||
| 1b90da5bf1 | |||
| 803fc25848 | |||
| 248f82d6f6 | |||
| 87c6e5b349 | |||
| 147516ae3f | |||
| b10aee3070 | |||
| 6098005f5d | |||
| 7b8be800a4 | |||
| 1a21eb03cd | |||
| e2d82e9bba | |||
| 384182172a | |||
| 9016dcc418 | |||
| e53dd3da87 | |||
| 6c87608548 | |||
| ee2ebb79b8 | |||
| 89602d1614 | |||
| c294e78715 | |||
| 9152fed249 | |||
| 8389851f2f | |||
| bbc7f0596c | |||
| 82d851d891 | |||
| 62b6f13299 | |||
| b7423c488e | |||
| 1d7c7eaaa7 | |||
| a9386b7a87 | |||
| 205e5b1524 | |||
| 67f4d43aec | |||
| e15bec30e6 | |||
| 230cf6adc4 | |||
| 8e8e64d920 | |||
| f558cb3156 | |||
| 41924f2400 | |||
| 670bdffb3c | |||
| 691d4f887a | |||
| beb899d6fb | |||
| 0f9756e739 | |||
| d84f1ec616 | |||
|
ef409ad23c |
|||
| d370ff958d | |||
| 197920d9ef | |||
| 425f260a22 | |||
| 3315555d06 | |||
| 6475345a8f | |||
| f90d30e0e1 | |||
| 8384eaefb1 | |||
| dcb90bba50 | |||
| dc56fd33a0 | |||
| 2d761dd86b | |||
| f82631e3bb | |||
| 4b024daae0 | |||
| 6a1d1a2e59 | |||
| 206a9c9607 | |||
| a6425b8867 | |||
| b5d9398910 | |||
| a185eb73b0 | |||
| e80f27f922 | |||
| 1a5b3c9e4e | |||
| b3f70434df | |||
| c61d63b235 | |||
| ba0899660d | |||
| 15cabb93ca | |||
| ce6daff12f | |||
| caf654366c | |||
| bb60b25399 | |||
| 74aa28e027 | |||
| 4f49b345af | |||
| 1784ca5910 | |||
| 8f4cce5fa5 | |||
| 518aeabb2a | |||
| 341bd4118d | |||
| b222f6a60b | |||
| c0aaba6891 | |||
| a7f81d538d | |||
| 4c60bf84d7 | |||
| dbb778a4d6 | |||
|
f4a169fdf3 |
|||
| 3d41ed3a34 | |||
| 0283f9ae2a | |||
| d556a23f97 | |||
| f98d07e8d8 | |||
| 09f59ad97d | |||
| 24be6272ed | |||
| 5a9bb4b97f | |||
| 6a2eb1f157 | |||
| 99473c30a8 | |||
| f512d1e460 | |||
| 96adee444b | |||
| 8b7996dfda | |||
| 2241de11c0 | |||
| 84c21b062f | |||
| 76138faaf3 | |||
| 9299841a5b | |||
| 35b5c62ca6 | |||
| 05b989347c | |||
| 00e9bb011a | |||
| 833796d1c4 | |||
| ee32b076eb | |||
| e3425f48be | |||
| 79b094d035 | |||
| b45e45f161 | |||
| b10148844b | |||
| ba845d4008 | |||
| 645d29b040 | |||
| 49b4d371ce | |||
| 1bc7bb4971 | |||
| e66e449c3b | |||
| 8eb05b840a | |||
| f0fc638284 | |||
| c6126a9226 | |||
| 62b11ba16b | |||
| 403ae0f698 | |||
| 92a2230a07 | |||
| b3b08ee6d7 | |||
| 15ef37d89f | |||
| e84bac29e5 | |||
| 1a956e8b05 | |||
|
4aae7968b8 |
|||
|
66964f613c |
|||
|
614c1bf2e4 |
|||
|
aa770b98f9 |
|||
|
453b78c852 |
|||
|
0657106893 |
|||
|
43c532bc57 |
|||
|
efb81fc2c1 |
|||
|
c8f4344f89 |
|||
|
a047f856a1 |
|||
|
d732059979 |
|||
|
ccfdd6806f |
|||
|
aa564ac5fe |
|||
|
77dbb5c499 |
|||
|
e623f401b9 |
|||
|
372622fbb1 |
|||
|
469e0ccace |
|||
|
59a6ce1462 |
|||
|
5a7a1747f2 |
|||
|
b557d635fd |
|||
|
d59b9b817f |
|||
|
16ac4824a5 |
|||
|
3592ec3ddf |
|||
|
8f3039be23 |
|||
|
b4a38d8be9 |
|||
|
d962376a9d |
|||
|
193731a017 |
|||
|
bbc3e9d717 |
|||
|
639e88262e |
|||
|
f12a10d888 |
|||
|
28efc85660 |
|||
|
f1fd2e88dd |
|||
|
700f8e9d9c |
|||
|
f04036e4a7 |
|||
|
062453af51 |
|||
|
b7fe2a5031 |
|||
|
ca689505e5 |
|||
|
9ff5ea5240 |
|||
| 359afe5318 | |||
| 0b397a5bf9 | |||
| a60d7fd173 | |||
|
f7e4024fca |
|||
|
98e3a81fcf |
|||
|
9c77ebb016 |
|||
|
23f478ce74 |
|||
|
d265b6ed6f |
|||
| 77c3161c77 | |||
|
2e658cfa56 |
|||
|
412d18f218 |
|||
|
8060586d8b |
|||
|
25b3db72a0 |
|||
|
5678f3a96e |
|||
|
28b152aedd |
|||
|
0009471f67 |
|||
| a62ac42cca | |||
| 68ee9687f5 | |||
| 32395e47f9 | |||
| 8aaba9bb0a | |||
| 96aca4f446 | |||
| 22b84a2fea | |||
| 5962fd473e | |||
| 7e64f415ba | |||
| ae12ccd8e6 | |||
| 3cefeaa229 | |||
| 71b75800cd | |||
| 9ca31530a0 | |||
| b555fcb956 | |||
| 5829196b70 | |||
| a14870ce48 | |||
| ee5c25f3bd | |||
| da0f5a34f2 | |||
| 065be1d9d4 | |||
| f2f6fb537a | |||
| 7ff994a964 | |||
| 08edecacae | |||
| 1e03046d9a | |||
| c9bf52ee45 | |||
| f947525fca | |||
| 7f7b89d79c | |||
| 499e42df35 | |||
| 4302a07c9b | |||
| 1721c05d2e | |||
| 8a31c27078 | |||
| d6e1cef356 | |||
| f82bf619ff | |||
| 02eeca1fc2 | |||
| 4e78cf1b95 | |||
| 9e9a7c50e5 | |||
| 51bc53e5ca | |||
| b85538c54c | |||
| bb5028e484 | |||
| 53ee0fcfad | |||
| 5f8c79dd16 | |||
| 0a6f5452f4 | |||
| 269fac074b | |||
| 3b21ce4ce8 | |||
| 8bb7631f50 | |||
| 9f5769f87b | |||
| 991e08f16d | |||
| 1ee56805f1 | |||
| 25506b8d2c | |||
| 28e62d824b | |||
| 7ee37a890e | |||
| 8cb5a42a9e | |||
| 5dbb71709c | |||
| 1c67db5d62 | |||
| 96d4a8ee45 | |||
|
81e167959b |
|||
| f273e82d74 | |||
| 17f122bfe5 | |||
| f0f43174c6 | |||
| dfccc1b94a | |||
| 195024e505 | |||
| 19a00371f5 | |||
| 874fba7672 | |||
| 50b0a9ce38 | |||
| 8802f6888e | |||
| ebe5c5e839 | |||
| 613f6c602c | |||
| 4a94c2c9bf | |||
| 08843d51d9 | |||
| ea9213cb03 | |||
| 1ea4433aa9 | |||
| 2fea429d78 | |||
| 264cebd2b1 | |||
| 4c0e2cab78 | |||
| 31a2ac914a | |||
| d6ef0df50d | |||
| cc60a71210 | |||
| 4cd7556a34 | |||
|
b4b1fa939d |
|||
| 16d7131fb7 | |||
| 091d60c226 | |||
| 0fbdf8d860 | |||
| 192bfe46a9 | |||
| 080c3afa0d | |||
| 9bc2322f9a | |||
| a9a65ebe54 | |||
| 616eb6b6da | |||
| 00d1dea94e | |||
|
127ad1dd1f |
|||
| fc58ba5763 | |||
| 7e6bee84b0 | |||
| 01811e03ba | |||
| 9712d00680 | |||
| 275e99d0b9 | |||
| b9328e6d42 | |||
| 2934d0902c | |||
|
1ad43ad4b5 |
|||
| 32ab17fa46 | |||
| 6054ced931 | |||
|
1412038ed3 |
|||
|
|
fa8bc285c8 | ||
| f256908b27 | |||
| 3f78ac4085 | |||
| 5f595f7ac3 | |||
| b27e625a77 | |||
| fc2c181b74 | |||
| 010b82d6d8 | |||
| aaf3462d17 | |||
| f709125110 | |||
| 3512191f3e | |||
| 06b5d81baa | |||
|
9d71bf916e |
|||
| 59fe01b56d | |||
| 08e358e27f | |||
| ce22d2d302 | |||
| 2d08a63e60 | |||
| 98c6aa6443 | |||
| edd79ed86c | |||
| d96f2239c1 | |||
| 67a349ae44 | |||
| dcefded0fa | |||
| 1bcdebd1cc | |||
| 7a8e0e89dd | |||
| 489ae080e5 | |||
| 0e3da7be63 | |||
| c5ffb76dfa | |||
| 61c7b8f13c | |||
|
3e8e38011b |
|||
| 4fa4fccab7 | |||
| d0d3a39833 | |||
| 8bef1c698b | |||
| acbbd6670a | |||
| b336b9bedf | |||
| ec9def4e71 | |||
| a136fda92d | |||
| b511e679ae | |||
| f56fdab7a9 | |||
| ff1f4dc09c | |||
| 141474ff07 | |||
| 8c0eea7229 | |||
| 19e95628c3 | |||
|
4d01e53414 |
|||
| a082cb87cb | |||
|
1c51a8e229 |
|||
| d14a8df71a | |||
| 739a58fe47 | |||
|
af3431d6ae |
|||
| 9851abc2e1 | |||
| 61ce6f0473 | |||
| 78e8bb6c8c | |||
| af95134cd2 | |||
| d6dfb8753a | |||
| 1bc003560a | |||
| aeaf69f49e | |||
| e83ad9e1e4 | |||
| f42890430c | |||
| 6f300b0079 | |||
|
9bec029b4f |
|||
| 08afad5d81 | |||
| a01dc62468 | |||
|
8b61225b13 |
|||
| 66d2f49f18 | |||
| 0a72c67c6c | |||
|
ab64b7ef67 |
|||
| 1e3a3bf1e7 | |||
| 7a2f287918 | |||
| 8a63c49498 | |||
| 3b5ede8044 | |||
| bd235f0426 | |||
| 09183464cd | |||
| ca6fd6b061 | |||
|
dd9a64f4b6 |
|||
| 23e7f27ee4 | |||
| f9ef52f9a5 | |||
| 3f17c355ca | |||
|
c83fae5e5b |
|||
| 39ad8f64c4 | |||
| e86d223bbf | |||
| 86587ab2dc | |||
| 58c95d8015 | |||
| 6351747da5 | |||
| 55c153409e | |||
| b115fb2fbe | |||
|
31d04d9ee3 |
|||
| f803836416 | |||
| 997f60b3e6 | |||
| c84b26499b | |||
| 214ae81cbb | |||
| d17b2c74db | |||
| fb9677230b | |||
| 0db137efdf | |||
| e6605c868d | |||
| bdfe4b61eb | |||
| ca4461820d | |||
| 7605838bfe | |||
| 7a784b8eba | |||
|
|
3e22414613 | ||
|
|
5f87ea3ec5 | ||
|
|
a8aeace5b5 | ||
|
|
480addd7ce | ||
|
|
ce0ce4cd1c | ||
|
|
7de9260b0d | ||
|
|
cdbe6cdf3a | ||
| 95dcc20d5f | |||
| 49e0494924 | |||
|
|
5fad2bd408 | ||
| c6829782a3 | |||
| 8cec7c74d8 | |||
| d3086788eb | |||
|
8d860ea02c |
|||
| b343363bb8 | |||
| 9db31bd1e9 | |||
| d88bcc8be9 | |||
| 332f7c4bb6 | |||
| 5d19d86e4a | |||
| 044ae7869a | |||
| 62ae82f2c0 | |||
| 66194b7304 | |||
| 98e429594e | |||
| 4fcfddbe08 | |||
| f442aeae9c | |||
| e211863cba | |||
| 45256ae33f | |||
| 1573d68fe2 | |||
| 69f6695253 | |||
|
a7c055264d |
|||
| db18364a73 | |||
| 22498ebd4c | |||
| e1f02d9fa5 | |||
|
9ec220c600 |
|||
| cf0275a3ed | |||
| c71eb60cd2 | |||
| 675e54ba9f | |||
| 1793ad74bd | |||
| 767a7d900b | |||
| 903507bd03 | |||
| b6cf7d2adc | |||
| a071e02d20 | |||
| 3aa88085ed | |||
| af1cc27988 | |||
| dbf8301c19 | |||
| 2a306bef12 | |||
| 2a36a2a312 | |||
| d7a07f0428 | |||
| da321e180d | |||
| c6582e1171 | |||
| 9b83afe491 | |||
| 2814ac3642 | |||
| 8a9d5d93f5 | |||
| 783a6d3b45 | |||
| 95575c3450 | |||
| 9b071ff92f | |||
| d80e716822 | |||
| 418ebc8843 | |||
| f5a448c7c2 | |||
| 37ac542b31 | |||
|
|
8c7d7e3e41 | ||
| b811f125b2 | |||
| 061f3e7917 | |||
| 6055918907 | |||
| 4a90e090ad | |||
| 301b29ee11 | |||
| c1eb210253 | |||
| 30cca62d09 | |||
| 113c0e7616 | |||
| 0e6b2c6773 | |||
| 22c750b949 | |||
| 504cce39a1 | |||
| 6c4abb6803 | |||
|
|
fd7ad86daa |
||
| 6f3b23c79d | |||
| 4838f5e810 | |||
| 116f1ab989 | |||
| 5e15c9f2bc | |||
| 442641f9f6 | |||
| f67c544be6 | |||
| 437fd4dbae | |||
| 36873252d6 | |||
| 1ef82a27fa | |||
| 6837dcbf42 | |||
| c657764367 | |||
| f79286fc91 | |||
| 694d376d15 | |||
| ab4c08019c | |||
| fd39f54df7 | |||
|
ca7e18bb29 |
|||
| 6975a5b155 | |||
| b627d00595 | |||
| 9bd8f1a6df | |||
|
|
faf682ca35 | ||
| 6aeb74550d | |||
| 89500df429 | |||
| 82b072d0b7 | |||
| 018c0296fd | |||
| 9c42e7e817 | |||
| 953277a066 | |||
| e2002b5488 | |||
| c9742e1d04 | |||
| 906da838ef | |||
| d7f1c10c8c | |||
| e8e4d17168 | |||
| a31ce337e9 | |||
| 902730df46 | |||
| c969c822ee | |||
| c31702d092 | |||
| ba8fbe7a44 | |||
| 2774c2e4c0 | |||
| ae036aebd7 | |||
|
|
2e9f70d496 | ||
| 90be5b84b1 | |||
| 80e95f20a3 | |||
| ac7c7d4036 | |||
| 858b0b9fbe | |||
| 9cc043f60e | |||
| 276a27d485 | |||
| 679bb839d7 | |||
| 9e64d847ef | |||
| 61fb275896 | |||
| ca0c79c93c | |||
| 87c97b7568 | |||
| 80b8c25bba | |||
| d1837cd1d3 | |||
| c46f2b8508 | |||
| a274c0dbf7 | |||
| ef7e95e22a | |||
| 3be99de5b1 | |||
| e7b7560477 | |||
| 317dc7fbce | |||
| 97fad15009 | |||
| 462326406e | |||
| bbdf4893d1 | |||
|
ef6617cfe6 |
|||
|
dbef0a440f |
|||
| 22628ba5d4 | |||
| 8576ac86b9 | |||
| 540f9f6b72 | |||
| f9d7faf884 | |||
| 7dee6194a2 | |||
| 68f9c1b950 | |||
| 43d711463c | |||
| 00255a2437 | |||
| b40e9b7da2 | |||
| 89d201c8ff | |||
| f47c98c4a5 | |||
| 3b6ed06686 | |||
| 57009e22b5 | |||
| 3ab7a3b64a | |||
| 596dd49cf5 | |||
| 28d847b8b1 | |||
| 2a1c6b1477 | |||
| 30abd0e3de | |||
| f36e38ec20 | |||
| d807ce095e | |||
| 7626fe1189 | |||
| cc04bf57df | |||
| cce6d56661 | |||
| a05d0f378e | |||
| 94321aec7a | |||
| 4a55749bd2 | |||
| 2898e63166 | |||
| c7176bd00a | |||
| 647ecdac29 | |||
| e7a8acfb96 | |||
| 622caa0c21 | |||
| 22149c6401 | |||
| 9aece3936a | |||
| c7e4e6f6c9 | |||
|
bcad0de1a4 |
|||
|
|
5c6407047f | ||
| 6ddae20fa1 | |||
| 23feac2f4c | |||
| 16066942e3 | |||
|
|
3720f22234 |
||
|
|
f7c8e89a9f |
||
|
|
ba377952fd |
||
|
|
1fdec480d6 |
||
| e85d551eac | |||
| 2b23a63a08 | |||
| c0f48e1071 | |||
| 6005426684 | |||
| 673ed1a2d3 | |||
| 992f62edd2 | |||
| f1ffa1da1d | |||
| 457ed80744 | |||
| 1fc028ffae | |||
| 10723efc68 | |||
| 2e0b2a308f | |||
| bd4d109009 | |||
| ae25386336 | |||
| d929313d45 | |||
| d372a86fe6 | |||
| e306f03e1d | |||
| 8336165f23 | |||
| c664c6b17b | |||
| b63c854509 | |||
| aa013af25e | |||
| cc32f0018b | |||
| dfc4db1860 | |||
| 35706604ea | |||
| 6d76e8e5cb | |||
| aecb6fcd74 | |||
| ea45f6c4c8 | |||
| 97b5cd089d | |||
| f2c2f3139e | |||
| dc4e7093e5 | |||
| b6f1025ecb | |||
| 65b2fe86c6 | |||
| 0e90a80680 | |||
| 7648bcff39 | |||
|
a8b8d507b6 |
|||
| 3561c93d74 | |||
| 331a503a25 | |||
| 9aefb5179f | |||
| d14f22e121 | |||
| b6893f6455 | |||
| 80ec3e7d97 | |||
| cd834311eb | |||
| d751cceeb0 | |||
| ce78b07e4b | |||
| 87f3c50931 | |||
| 8e9e06afe6 | |||
| 2bc91ac3d2 | |||
| 5b615d51a4 | |||
| c7f5d5fd0b | |||
| 6ef7538eb0 | |||
| 8fa90053cf | |||
| b3682b61d1 | |||
| ad0e2e0d7c | |||
| 6629f40cab | |||
| e76bfa555f | |||
| 8ddb7268eb | |||
| cb5fe02ebd | |||
| 77b84f8a48 | |||
| 691ec96909 | |||
| 29b4666205 | |||
| 316a22701f | |||
| be59a3e574 | |||
| 37327379bc | |||
| 22c2f13611 | |||
| 8708ca07f4 | |||
| 634d9e4946 | |||
| 54933ebef5 | |||
| 157e59ac88 | |||
| 666f0dd751 | |||
| 8b179e4647 | |||
| 865eff7d98 | |||
| b9741f4d0b | |||
| 02781662f8 | |||
| 32a1043468 | |||
| 3e4aeec649 | |||
| b98b827594 | |||
| 255cc6ec23 | |||
| 51fc37d57a | |||
| 1921f55a9d | |||
| fbd381fcc1 | |||
| cd88f9f2ea | |||
| 788281cfb9 | |||
| cd234b689d | |||
| 92354a77ee | |||
| 48ff3e70d1 | |||
| 7e9adfb899 | |||
|
e238e256f7 |
|||
|
|
3ecb92a8d2 |
||
| d58d450628 | |||
| dee9c6e293 | |||
| 897c4487de | |||
| 48b50b5209 | |||
| 13bae8c23b | |||
| 4a48e6aa04 | |||
| 525266ede6 | |||
| d045eb55ac | |||
| 0e6b425ac5 | |||
| bdc26f2117 | |||
| ed7fe5c6d0 | |||
| cbce6707f4 | |||
| e40e726687 | |||
| 0c027a3050 | |||
| 9f44bbad65 | |||
| 413a079f51 | |||
| 6f3accf691 | |||
| 5b3cfc542d | |||
| c838c1d11b | |||
| 4d1d8d7409 | |||
| db7499db82 | |||
| 6b500c2a8b | |||
| 95c518e59b | |||
| 976516d0e1 | |||
| 574eb91921 | |||
| 28fef3264b | |||
| 9161dbcb7d | |||
| 4b3027e4fc | |||
| 0eb2634f9b | |||
| 7c5b68c98f | |||
| 9317cbaaf0 | |||
| 1b5f04b79f | |||
| 948c86f62c | |||
| 7e7209322a | |||
| 00a57fd947 | |||
| 6bf6ac310b | |||
| 4b5af2770d | |||
| b525e70e1c | |||
| 4498671233 | |||
| 9997aa9a92 | |||
| cbf7284f64 | |||
| ee466f870d | |||
| e3f4bf0293 | |||
| 46688f10b1 | |||
| 48f44d2f3d | |||
| bff1347ba3 | |||
| 9582324c88 | |||
| bb0716421d | |||
| bec73245e9 | |||
| dcead12e86 | |||
| 0119514c11 | |||
| b39f08694d | |||
| 80bdf1430b | |||
| 2ee75546f5 | |||
| 07d7ae60d5 | |||
| 87001337b4 | |||
| 2e9964c200 | |||
| 3ec3d8d045 | |||
| 96384d5ee1 | |||
| 8ed5467435 | |||
| 7c6ce9399c | |||
| 6b7653484b | |||
|
|
85e0334826 | ||
|
|
2a80e48a92 | ||
|
|
5821c6782e | ||
|
|
f15498f6d9 | ||
| a1673d1fa1 | |||
| 2e99a1898c | |||
| 7a086d8430 | |||
| 0e8e9ced64 | |||
| f34951c088 | |||
| c6f47d4d56 | |||
|
c3e76585fc |
|||
| 0014b149f8 | |||
| 091c07bbe2 | |||
| 240547102f | |||
|
2bbd53e25a |
|||
|
58f2f63977 |
|||
|
7df6a78c30 |
|||
| c646edf2c7 | |||
| bcc820d646 | |||
|
3729ba5ca3 |
|||
| 9c19591768 | |||
| 38ebfd2969 | |||
| 180018fd81 | |||
| 794ae94ac4 | |||
| 4eb6359ed3 | |||
|
|
976a877a25 | ||
|
|
b4117916b8 | ||
|
|
19cad89978 | ||
| 6b182c9d2d | |||
| 4d6ed27f73 | |||
| 745a8f9b8a | |||
| 6299d8115d | |||
| 717cfd2d37 | |||
| 7881327004 | |||
| 549aa9a25f | |||
| 1c6890492b | |||
| a7c8e7c823 | |||
| c8fcf6b336 | |||
| 449896f661 | |||
| 1004500d65 | |||
|
0a8d4e5dfb |
|||
| 38e35bdb12 | |||
| 65503e38b6 | |||
| d0c5bf6f6f | |||
| f129e4c301 | |||
| fbbb096cec | |||
| 77980511c6 | |||
| 4ba206f8f4 | |||
| ecc849dd07 | |||
| 7ff6066d47 | |||
| 2bb1fc9826 | |||
|
|
6df6176f3a |
||
| acb2ca79d9 | |||
| c9211320e1 | |||
| 760286abe1 | |||
| 5890a1cb48 | |||
| b3f5a9d18f | |||
| 80b33fbf8a | |||
|
5389ff6160 |
|||
|
|
e8b8d86592 | ||
| 92d729a9dd | |||
| c63219936e | |||
| 0aff497430 | |||
| 1f3907a6a5 | |||
| 2a8692c64f | |||
| 1709f57ff0 | |||
|
|
89baf757cf | ||
|
|
4f36fe2b9f | ||
|
|
510449ce65 | ||
|
|
4cc4b8d484 | ||
| 9c972cb0e5 | |||
| 9b1779065e | |||
| 057ec3e59b | |||
| bc2e611a74 | |||
| b6d3a1e02f | |||
| 54d57e1349 | |||
| af0b3da8ed | |||
| 27d37b606b | |||
| 77a860cc62 | |||
| 7bd6374751 | |||
| cf8882f2bc | |||
| b37dd1a79e | |||
| fd59776f91 | |||
| 9fd28d2eed | |||
| f5c61c8013 | |||
| 88cb49dcc4 | |||
| 73235e59be | |||
| 7076a7ff86 | |||
| d6e376d32d | |||
| 9016f4be43 | |||
|
d1c403999f |
|||
| d543109ef4 | |||
| 7085a45649 | |||
| cf4c603f1d | |||
|
d2533313bc |
|||
| c43b50b6e6 | |||
| c072678936 | |||
| 631da1465e | |||
|
f29519a5cd |
|||
|
|
5d82b42ab8 |
||
| 4897a78fd3 | |||
| a1d986d952 | |||
| 717c90a7d0 | |||
| 8fde19a7dc | |||
| ad7198ba66 | |||
| eb4b4cc92b | |||
| 41bf520585 | |||
| c0ae01f5d5 | |||
| 8b8f92d717 | |||
| ccd1627175 | |||
| b8a7e23f46 | |||
| 1f4f28b4dc | |||
| ea6cd53067 | |||
| 267138776d | |||
| 604b3d5e17 | |||
| 667e1e5b15 | |||
| 9b819f32f8 | |||
| b619bde037 | |||
| 97af16bd86 | |||
| fa75f89acc | |||
| 222b61b577 | |||
| e77757f0fd | |||
| ebac02f118 | |||
| 1c9ae81987 | |||
| 7b1fb68c18 | |||
| 8aa7830f0d | |||
|
79bee755ee |
|||
|
|
cde0ee96ff |
||
| 1ea04aedf0 | |||
|
446a2bc15a |
|||
|
|
2d10e758e0 | ||
| 0e978299cf | |||
| d06c1f2943 | |||
| d768b50b97 | |||
|
034ade48f2 |
|||
| d1e9f74087 | |||
| f262f77dbd | |||
| a3387953a9 | |||
|
|
7cad5a8608 | ||
| 9b83fcbf06 | |||
| 32a93ce8a2 | |||
| e428329c03 | |||
| e844bbee15 | |||
| 631c3068a9 | |||
| 79d4888e22 | |||
| de61fdef48 | |||
| 93caeba200 | |||
| 3c723e8d99 | |||
| c5776447b9 | |||
| 5356f487a5 | |||
| 72bd96c656 | |||
| f611fe7be3 | |||
| dd6ea40a36 | |||
| ea1274d1c6 | |||
|
8526468975 |
|||
|
|
95c415f416 |
||
| 06dc336481 | |||
| 893fca2816 | |||
| 99590cb6b6 | |||
| b3fd1be5f6 | |||
| a23083f737 | |||
| 8306b758e8 | |||
| 218cbd5289 | |||
| 2ac58670d5 | |||
| 6f82c9979b | |||
| 0a659a397f | |||
| 2781873faf | |||
| 3aaa89fb08 | |||
| 35d542a676 | |||
| d0b9c436b1 | |||
| 37cc229749 | |||
| 17c2d109e5 | |||
| c8d5de2179 | |||
| 32e15dc905 | |||
| f5ebca4907 | |||
| 01db676d68 | |||
| d2d92b1f1a | |||
| 27cbe9dfc0 | |||
| 8fb830099f | |||
| 463a133a63 | |||
| a16fed8887 | |||
| 33113890f5 | |||
| abd47fc14e | |||
| 7fb4061759 | |||
| b320e74ad5 | |||
| 0ed8f67b9d | |||
| a12a1121b6 | |||
| 795e18773b | |||
| aa14449857 | |||
| ed7b1cd3d7 | |||
| a155eefa23 | |||
| 398665be9e | |||
| 6db232d4ac | |||
| d7277893fb | |||
| 00033bf0a8 | |||
| adda33dc4e | |||
| 097a09578a | |||
| 65472c8de2 | |||
| 602ad9e7ee | |||
| 96df52ec50 | |||
| 244dc35bae | |||
| d9c9d7d2ee | |||
| 89cb5eb76d | |||
| 6d3802335e | |||
| c1d6232b79 | |||
| 048a9ebb52 | |||
| de478f6ff7 | |||
| 3e5a19d95a | |||
| 2ddf38f99c | |||
| d88f321cef | |||
| 74adac6c70 | |||
| 15ea70a71b | |||
| 8b91c01a4c | |||
| 3bcef72050 | |||
| 695c764a01 | |||
| f7c93ea2e8 | |||
| 1ea047dd94 | |||
| 4b523f9e2c | |||
| 6a61070d85 | |||
| f36082938e | |||
| 1ba996ad93 | |||
| a23fdf946d | |||
| 12cf6913ef | |||
| a4eef383c3 | |||
| ac124612ad | |||
| 95a479a86e | |||
| e4eff0e3dc | |||
|
dce1928dc4 |
|||
|
|
3c8dc4929f | ||
| e511014a28 | |||
| bae5f88824 | |||
| 41ad98653a | |||
| 6a138aeb6e | |||
| f0ce37801b | |||
| 35f6aba365 | |||
|
|
f6407bafcb | ||
|
|
d5e9f67cec | ||
|
|
b14f371c05 | ||
| 31a5d1b9c4 | |||
| fb4305a953 | |||
| eab872823c | |||
| 3332750243 | |||
| 4942b7ce4d | |||
| a2af77f363 | |||
| a7490b56d1 | |||
| 66eb18d5ea | |||
| 46486138b6 | |||
| d6562c4b1e | |||
| 1ddde0910c | |||
| 79f3b84ca2 | |||
| 55141bda67 | |||
| bc02c123e6 | |||
| e76d5ad988 | |||
| 8ad8a9c422 | |||
| b15c9b7dab | |||
| 2405e97c38 | |||
| fdbb2ee905 | |||
| 94b9ef56be | |||
| 952168ce25 | |||
| 5273037a94 | |||
| 53e6ff9524 | |||
| f66fd1caaa | |||
| d93fdbc5ad | |||
| 58e0439daf | |||
|
|
75b5e7254e | ||
| 39550a7fe9 | |||
|
|
5f0c084bee | ||
| 88f06f7921 | |||
| 8d12079386 | |||
| 7824a034ca | |||
|
8ef0ba2fae |
|||
| cc384f4324 | |||
| 8a91c79fb0 | |||
| ac1d63bb0d | |||
|
|
83632448be | ||
|
|
e108526bab | ||
|
|
e27ba0d08a | ||
| 5afe0e3d63 | |||
| c52f82f9ce | |||
| d0c533555e | |||
| 1995c80e60 | |||
| 24e1516ec5 | |||
| 5b1beda82b | |||
| e4f1094569 | |||
| 911668f0c8 | |||
| 6bfa0783b9 | |||
| d64bcd5e83 | |||
| ed2ca9f476 | |||
| f787dfe809 | |||
| afaabd14a8 | |||
| e009bfeaa2 | |||
| f1358d52aa | |||
|
b04b333466 |
|||
|
|
dd16504329 | ||
| c6cb21a748 | |||
| 78aa4626fa | |||
| d2df224da8 | |||
| 464ff2fe96 | |||
| 0cc711173a | |||
| 14e5cfc8f8 | |||
| b8b888090d | |||
| 68281339b7 | |||
| 2e5be3d3f1 | |||
| abd31a94fb | |||
| 01e2cf08d1 | |||
| 9f821862b7 | |||
| 8660af745e | |||
| 826e4352d1 | |||
| b94999bba4 | |||
| 65cc4c9429 | |||
| df2be9620b | |||
| 2ab9daaa0f | |||
| 0c6c61a272 | |||
| 00f62ca023 | |||
| 9b2ca15de6 | |||
| c4aa34bf5c | |||
| 4385f2a36a | |||
|
ed6a9dadf8 |
|||
| d978a2d190 | |||
| 375036e409 | |||
|
|
99168c1035 | ||
| f4a231420f | |||
| 55ebfdda39 | |||
| e63e2e0852 | |||
| edc4b9e60e | |||
| 78ff734e6c | |||
| 2cc743cf47 | |||
| d99e6d1994 | |||
| 50f62d73b7 | |||
| 26a89de790 | |||
| c2276b18c5 | |||
| 693434f8aa | |||
| 1e8edc05e9 | |||
| 1f166a47e9 | |||
| 9ee6151999 | |||
| 6cdc92bd0c | |||
| 612e1fea67 | |||
| 0a9f4e8708 | |||
| 781fac3266 | |||
| 4c38810a32 | |||
| bf0d38ff2a | |||
| 04e5b42606 | |||
| 30525c43bf | |||
| ebeb5efe05 | |||
| a3e939f34b | |||
| 2a771161e7 | |||
| ded042d8cc | |||
| 4ed43ae4dc | |||
| 9d29ecf304 | |||
| 427b57e2a9 | |||
| e4f0a336c2 | |||
| 68459c6795 | |||
| 17fda7281a | |||
| ac777965d0 | |||
| 31d3bc9bd8 | |||
| 2115eeb6a2 | |||
| 08f017bc3e | |||
| 7bc9482970 | |||
| 57ffad4e04 | |||
| 5422d14f93 | |||
| e6d8c736d0 | |||
|
|
18d3542fbc | ||
| 93f453cecf | |||
| 505bb778fa | |||
| b09d464162 | |||
| a9104ed090 | |||
| 06f134cc71 | |||
|
|
584359b6c0 | ||
|
|
26a1a3d1e0 | ||
|
|
6da05cbe2d | ||
| f48f52079d | |||
| 76c569cf84 | |||
|
|
b121290c0f | ||
| 8fd46b8c70 | |||
| 603f525352 | |||
|
|
8c8640d0ab | ||
| e3dd545345 | |||
| 589fc30fc8 | |||
| bd3c51fc5a | |||
| 2c46f53ef6 | |||
| 939f4d4e3d | |||
| 3006db0cae | |||
|
|
22640a9ca0 | ||
| ca23c3b8b3 | |||
| 74607fdd43 | |||
| b53684a8f0 | |||
| f055f5dea8 | |||
| 4dc4fe0b8d |
275 changed files with 36508 additions and 5012 deletions
122
.drone.yml
122
.drone.yml
|
|
@ -1,57 +1,95 @@
|
|||
---
|
||||
kind: pipeline
|
||||
name: python-3-5-alpine-3-10
|
||||
name: python-3-8-alpine-3-13
|
||||
|
||||
services:
|
||||
- name: postgresql
|
||||
image: docker.io/postgres:13.1-alpine
|
||||
environment:
|
||||
POSTGRES_PASSWORD: test
|
||||
POSTGRES_DB: test
|
||||
- name: postgresql2
|
||||
image: docker.io/postgres:13.1-alpine
|
||||
environment:
|
||||
POSTGRES_PASSWORD: test2
|
||||
POSTGRES_DB: test
|
||||
commands:
|
||||
- docker-entrypoint.sh -p 5433
|
||||
- name: mariadb
|
||||
image: docker.io/mariadb:10.11.4
|
||||
environment:
|
||||
MARIADB_ROOT_PASSWORD: test
|
||||
MARIADB_DATABASE: test
|
||||
- name: mariadb2
|
||||
image: docker.io/mariadb:10.11.4
|
||||
environment:
|
||||
MARIADB_ROOT_PASSWORD: test2
|
||||
MARIADB_DATABASE: test
|
||||
commands:
|
||||
- docker-entrypoint.sh --port=3307
|
||||
- name: not-actually-mysql
|
||||
image: docker.io/mariadb:10.11.4
|
||||
environment:
|
||||
MARIADB_ROOT_PASSWORD: test
|
||||
MARIADB_DATABASE: test
|
||||
- name: not-actually-mysql2
|
||||
image: docker.io/mariadb:10.11.4
|
||||
environment:
|
||||
MARIADB_ROOT_PASSWORD: test2
|
||||
MARIADB_DATABASE: test
|
||||
commands:
|
||||
- docker-entrypoint.sh --port=3307
|
||||
- name: mongodb
|
||||
image: docker.io/mongo:5.0.5
|
||||
environment:
|
||||
MONGO_INITDB_ROOT_USERNAME: root
|
||||
MONGO_INITDB_ROOT_PASSWORD: test
|
||||
- name: mongodb2
|
||||
image: docker.io/mongo:5.0.5
|
||||
environment:
|
||||
MONGO_INITDB_ROOT_USERNAME: root2
|
||||
MONGO_INITDB_ROOT_PASSWORD: test2
|
||||
commands:
|
||||
- docker-entrypoint.sh --port=27018
|
||||
|
||||
clone:
|
||||
skip_verify: true
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
image: python:3.5-alpine3.10
|
||||
image: docker.io/alpine:3.13
|
||||
environment:
|
||||
TEST_CONTAINER: true
|
||||
pull: always
|
||||
commands:
|
||||
- scripts/run-tests
|
||||
---
|
||||
kind: pipeline
|
||||
name: python-3-6-alpine-3-10
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
image: python:3.6-alpine3.10
|
||||
pull: always
|
||||
commands:
|
||||
- scripts/run-tests
|
||||
---
|
||||
kind: pipeline
|
||||
name: python-3-7-alpine-3-10
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
image: python:3.7-alpine3.10
|
||||
pull: always
|
||||
commands:
|
||||
- scripts/run-tests
|
||||
---
|
||||
kind: pipeline
|
||||
name: python-3-7-alpine-3-7
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
image: python:3.7-alpine3.7
|
||||
pull: always
|
||||
commands:
|
||||
- scripts/run-tests
|
||||
- scripts/run-full-tests
|
||||
---
|
||||
kind: pipeline
|
||||
name: documentation
|
||||
type: exec
|
||||
|
||||
platform:
|
||||
os: linux
|
||||
arch: amd64
|
||||
|
||||
clone:
|
||||
skip_verify: true
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
image: plugins/docker
|
||||
settings:
|
||||
username:
|
||||
environment:
|
||||
USERNAME:
|
||||
from_secret: docker_username
|
||||
password:
|
||||
PASSWORD:
|
||||
from_secret: docker_password
|
||||
repo: witten/borgmatic-docs
|
||||
dockerfile: docs/Dockerfile
|
||||
when:
|
||||
branch:
|
||||
- master
|
||||
IMAGE_NAME: projects.torsion.org/borgmatic-collective/borgmatic:docs
|
||||
commands:
|
||||
- podman login --username "$USERNAME" --password "$PASSWORD" projects.torsion.org
|
||||
- podman build --tag "$IMAGE_NAME" --file docs/Dockerfile --storage-opt "overlay.mount_program=/usr/bin/fuse-overlayfs" .
|
||||
- podman push "$IMAGE_NAME"
|
||||
|
||||
trigger:
|
||||
repo:
|
||||
- borgmatic-collective/borgmatic
|
||||
branch:
|
||||
- main
|
||||
|
|
|
|||
12
.eleventy.js
12
.eleventy.js
|
|
@ -1,9 +1,13 @@
|
|||
const pluginSyntaxHighlight = require("@11ty/eleventy-plugin-syntaxhighlight");
|
||||
const codeClipboard = require("eleventy-plugin-code-clipboard");
|
||||
const inclusiveLangPlugin = require("@11ty/eleventy-plugin-inclusive-language");
|
||||
const navigationPlugin = require("@11ty/eleventy-navigation");
|
||||
|
||||
module.exports = function(eleventyConfig) {
|
||||
eleventyConfig.addPlugin(pluginSyntaxHighlight);
|
||||
eleventyConfig.addPlugin(inclusiveLangPlugin);
|
||||
eleventyConfig.addPlugin(navigationPlugin);
|
||||
eleventyConfig.addPlugin(codeClipboard);
|
||||
|
||||
let markdownIt = require("markdown-it");
|
||||
let markdownItAnchor = require("markdown-it-anchor");
|
||||
|
|
@ -21,8 +25,7 @@ module.exports = function(eleventyConfig) {
|
|||
}
|
||||
};
|
||||
let markdownItAnchorOptions = {
|
||||
permalink: true,
|
||||
permalinkClass: "direct-link"
|
||||
permalink: markdownItAnchor.permalink.headerLink()
|
||||
};
|
||||
|
||||
eleventyConfig.setLibrary(
|
||||
|
|
@ -30,8 +33,13 @@ module.exports = function(eleventyConfig) {
|
|||
markdownIt(markdownItOptions)
|
||||
.use(markdownItAnchor, markdownItAnchorOptions)
|
||||
.use(markdownItReplaceLink)
|
||||
.use(codeClipboard.markdownItCopyButton)
|
||||
);
|
||||
|
||||
eleventyConfig.addPassthroughCopy({"docs/static": "static"});
|
||||
|
||||
eleventyConfig.setLiquidOptions({dynamicPartials: false});
|
||||
|
||||
return {
|
||||
templateFormats: [
|
||||
"md",
|
||||
|
|
|
|||
1
.flake8
Normal file
1
.flake8
Normal file
|
|
@ -0,0 +1 @@
|
|||
select = Q0
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
#### What I'm trying to do and why
|
||||
|
||||
#### Steps to reproduce (if a bug)
|
||||
|
||||
Include (sanitized) borgmatic configuration files if applicable.
|
||||
|
||||
#### Actual behavior (if a bug)
|
||||
|
||||
Include (sanitized) `--verbosity 2` output if applicable.
|
||||
|
||||
#### Expected behavior (if a bug)
|
||||
|
||||
#### Other notes / implementation ideas
|
||||
|
||||
#### Environment
|
||||
|
||||
**borgmatic version:** [version here]
|
||||
|
||||
Use `sudo borgmatic --version` or `sudo pip show borgmatic | grep ^Version`
|
||||
|
||||
**borgmatic installation method:** [e.g., Debian package, Docker container, etc.]
|
||||
|
||||
**Borg version:** [version here]
|
||||
|
||||
Use `sudo borg --version`
|
||||
|
||||
**Python version:** [version here]
|
||||
|
||||
Use `python3 --version`
|
||||
|
||||
**operating system and version:** [OS here]
|
||||
77
.gitea/issue_template/bug_template.yaml
Normal file
77
.gitea/issue_template/bug_template.yaml
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
name: "Bug or question/support"
|
||||
about: "For filing a bug or getting support"
|
||||
body:
|
||||
- type: textarea
|
||||
id: problem
|
||||
attributes:
|
||||
label: What I'm trying to do and why
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: repro_steps
|
||||
attributes:
|
||||
label: Steps to reproduce
|
||||
description: Include (sanitized) borgmatic configuration files if applicable.
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
id: actual_behavior
|
||||
attributes:
|
||||
label: Actual behavior
|
||||
description: Include (sanitized) `--verbosity 2` output if applicable.
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
id: expected_behavior
|
||||
attributes:
|
||||
label: Expected behavior
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
id: notes
|
||||
attributes:
|
||||
label: Other notes / implementation ideas
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
id: borgmatic_version
|
||||
attributes:
|
||||
label: borgmatic version
|
||||
description: Use `sudo borgmatic --version` or `sudo pip show borgmatic | grep ^Version`
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
id: borgmatic_install_method
|
||||
attributes:
|
||||
label: borgmatic installation method
|
||||
description: e.g., pip install, Debian package, container, etc.
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
id: borg_version
|
||||
attributes:
|
||||
label: Borg version
|
||||
description: Use `sudo borg --version`
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
id: python_version
|
||||
attributes:
|
||||
label: Python version
|
||||
description: Use `python3 --version`
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
id: database_version
|
||||
attributes:
|
||||
label: Database version (if applicable)
|
||||
description: Use `psql --version` / `mysql --version` / `mongodump --version` / `sqlite3 --version`
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
id: operating_system_version
|
||||
attributes:
|
||||
label: Operating system and version
|
||||
description: On Linux, use `cat /etc/os-release`
|
||||
validations:
|
||||
required: false
|
||||
1
.gitea/issue_template/config.yaml
Normal file
1
.gitea/issue_template/config.yaml
Normal file
|
|
@ -0,0 +1 @@
|
|||
blank_issues_enabled: true
|
||||
15
.gitea/issue_template/feature_template.yaml
Normal file
15
.gitea/issue_template/feature_template.yaml
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
name: "Feature"
|
||||
about: "For filing a feature request or idea"
|
||||
body:
|
||||
- type: textarea
|
||||
id: request
|
||||
attributes:
|
||||
label: What I'd like to do and why
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: notes
|
||||
attributes:
|
||||
label: Other notes / implementation ideas
|
||||
validations:
|
||||
required: false
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -2,7 +2,7 @@
|
|||
*.pyc
|
||||
*.swp
|
||||
.cache
|
||||
.coverage
|
||||
.coverage*
|
||||
.pytest_cache
|
||||
.tox
|
||||
__pycache__
|
||||
|
|
|
|||
2
AUTHORS
2
AUTHORS
|
|
@ -10,3 +10,5 @@ newtonne: Read encryption password from external file
|
|||
Robin `ypid` Schneider: Support additional options of Borg and add validate-borgmatic-config command
|
||||
Scott Squires: Custom archive names
|
||||
Thomas LÉVEIL: Support for a keep_minutely prune option. Support for the --json option
|
||||
|
||||
And many others! See the output of "git log".
|
||||
|
|
|
|||
783
NEWS
783
NEWS
|
|
@ -1,3 +1,782 @@
|
|||
1.8.5
|
||||
* #701: Add a "skip_actions" option to skip running particular actions, handy for append-only or
|
||||
checkless configurations. See the documentation for more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/set-up-backups/#skipping-actions
|
||||
* #701: Deprecate the "disabled" value for the "checks" option in favor of the new "skip_actions"
|
||||
option.
|
||||
* #745: Constants now apply to included configuration, not just the file doing the includes. As a
|
||||
side effect of this change, constants no longer apply to option names and only substitute into
|
||||
configuration values.
|
||||
* #779: Add a "--match-archives" flag to the "check" action for selecting the archives to check,
|
||||
overriding the existing "archive_name_format" and "match_archives" options in configuration.
|
||||
* #779: Only parse "--override" values as complex data types when they're for options of those
|
||||
types.
|
||||
* #782: Fix environment variable interpolation within configured repository paths.
|
||||
* #782: Add configuration constant overriding via the existing "--override" flag.
|
||||
* #783: Upgrade ruamel.yaml dependency to support version 0.18.x.
|
||||
* #784: Drop support for Python 3.7, which has been end-of-lifed.
|
||||
|
||||
1.8.4
|
||||
* #715: Add a monitoring hook for sending backup status to a variety of monitoring services via the
|
||||
Apprise library. See the documentation for more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/#apprise-hook
|
||||
* #748: When an archive filter causes no matching archives for the "rlist" or "info"
|
||||
actions, warn the user and suggest how to remove the filter.
|
||||
* #768: Fix a traceback when an invalid command-line flag or action is used.
|
||||
* #771: Fix normalization of deprecated sections ("location:", "storage:", "hooks:", etc.) to
|
||||
support empty sections without erroring.
|
||||
* #774: Disallow the "--dry-run" flag with the "borg" action, as borgmatic can't guarantee the Borg
|
||||
command won't have side effects.
|
||||
|
||||
1.8.3
|
||||
* #665: BREAKING: Simplify logging logic as follows: Syslog verbosity is now disabled by
|
||||
default, but setting the "--syslog-verbosity" flag enables it regardless of whether you're at an
|
||||
interactive console. Additionally, "--log-file-verbosity" and "--monitoring-verbosity" now
|
||||
default to 1 (info about steps borgmatic is taking) instead of 0. And both syslog logging and
|
||||
file logging can be enabled simultaneously.
|
||||
* #743: Add a monitoring hook for sending backup status and logs to Grafana Loki. See the
|
||||
documentation for more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/#loki-hook
|
||||
* #753: When "archive_name_format" is not set, filter archives using the default archive name
|
||||
format.
|
||||
* #754: Fix error handling to log command output as one record per line instead of truncating
|
||||
too-long output and swallowing the end of some Borg error messages.
|
||||
* #757: Update documentation so "sudo borgmatic" works for pipx borgmatic installations.
|
||||
* #761: Fix for borgmatic not stopping Borg immediately when the user presses ctrl-C.
|
||||
* Update documentation to recommend installing/upgrading borgmatic with pipx instead of pip. See the
|
||||
documentation for more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/set-up-backups/#installation
|
||||
https://torsion.org/borgmatic/docs/how-to/upgrade/#upgrading-borgmatic
|
||||
|
||||
1.8.2
|
||||
* #345: Add "key export" action to export a copy of the repository key for safekeeping in case
|
||||
the original goes missing or gets damaged.
|
||||
* #727: Add a MariaDB database hook that uses native MariaDB commands instead of the deprecated
|
||||
MySQL ones. Be aware though that any existing backups made with the "mysql_databases:" hook are
|
||||
only restorable with a "mysql_databases:" configuration.
|
||||
* #738: Fix for potential data loss (data not getting restored) in which the database "restore"
|
||||
action didn't actually restore anything and indicated success anyway.
|
||||
* Remove the deprecated use of the MongoDB hook's "--db" flag for database restoration.
|
||||
* Add source code reference documentation for getting oriented with the borgmatic code as a
|
||||
developer: https://torsion.org/borgmatic/docs/reference/source-code/
|
||||
|
||||
1.8.1
|
||||
* #326: Add documentation for restoring a database to an alternate host:
|
||||
https://torsion.org/borgmatic/docs/how-to/backup-your-databases/#restore-to-an-alternate-host
|
||||
* #697: Add documentation for "bootstrap" action:
|
||||
https://torsion.org/borgmatic/docs/how-to/extract-a-backup/#extract-the-configuration-files-used-to-create-an-archive
|
||||
* #725: Add "store_config_files" option for disabling the automatic backup of configuration files
|
||||
used by the "config bootstrap" action.
|
||||
* #728: Fix for "prune" action error when using the "keep_exclude_tags" option.
|
||||
* #730: Fix for Borg's interactive prompt on the "check --repair" action automatically getting
|
||||
answered "NO" even when the "check_i_know_what_i_am_doing" option isn't set.
|
||||
* #732: Include multiple configuration files with a single "!include". See the documentation for
|
||||
more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/make-per-application-backups/#multiple-merge-includes
|
||||
* #734: Omit "--glob-archives" or "--match-archives" Borg flag when its value would be "*" (meaning
|
||||
all archives).
|
||||
|
||||
1.8.0
|
||||
* #575: BREAKING: For the "borgmatic borg" action, instead of implicitly injecting
|
||||
repository/archive into the resulting Borg command-line, pass repository to Borg via an
|
||||
environment variable and make archive available for explicit use in your commands. See the
|
||||
documentation for more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/run-arbitrary-borg-commands/
|
||||
* #719: Fix an error when running "borg key export" through borgmatic.
|
||||
* #720: Fix an error when dumping a database and the "exclude_nodump" option is set.
|
||||
* #724: Add "check_i_know_what_i_am_doing" option to bypass Borg confirmation prompt when running
|
||||
"check --repair".
|
||||
* When merging two configuration files, error gracefully if the two files do not adhere to the same
|
||||
format.
|
||||
* #721: Remove configuration sections ("location:", "storage:", "hooks:", etc.), while still
|
||||
keeping deprecated support for them. Now, all options are at the same level, and you don't need
|
||||
to worry about commenting/uncommenting section headers when you change an option (if you remove
|
||||
your sections first).
|
||||
* #721: BREAKING: The retention prefix and the consistency prefix can no longer have different
|
||||
values (unless one is not set).
|
||||
* #721: BREAKING: The storage umask and the hooks umask can no longer have different values (unless
|
||||
one is not set).
|
||||
* BREAKING: Flags like "--config" that previously took multiple values now need to be given once
|
||||
per value, e.g. "--config first.yaml --config second.yaml" instead of "--config first.yaml
|
||||
second.yaml". This prevents argument parsing errors on ambiguous commands.
|
||||
* BREAKING: Remove the deprecated (and silently ignored) "--successful" flag on the "list" action,
|
||||
as newer versions of Borg list successful (non-checkpoint) archives by default.
|
||||
* All deprecated configuration option values now generate warning logs.
|
||||
* Remove the deprecated (and non-functional) "--excludes" flag in favor of excludes within
|
||||
configuration.
|
||||
* Fix an error when logging too-long command output during error handling. Now, long command output
|
||||
is truncated before logging.
|
||||
|
||||
1.7.15
|
||||
* #326: Add configuration options and command-line flags for backing up a database from one
|
||||
location while restoring it somewhere else.
|
||||
* #399: Add a documentation troubleshooting note for MySQL/MariaDB authentication errors.
|
||||
* #529: Remove upgrade-borgmatic-config command for upgrading borgmatic 1.1.0 INI-style
|
||||
configuration.
|
||||
* #529: Deprecate generate-borgmatic-config in favor of new "config generate" action.
|
||||
* #529: Deprecate validate-borgmatic-config in favor of new "config validate" action.
|
||||
* #697, #712, #716: Extract borgmatic configuration from backup via new "config bootstrap"
|
||||
action—even when borgmatic has no configuration yet!
|
||||
* #669: Add sample systemd user service for running borgmatic as a non-root user.
|
||||
* #711, #713: Fix an error when "data" check time files are accessed without getting upgraded
|
||||
first.
|
||||
|
||||
1.7.14
|
||||
* #484: Add a new verbosity level (-2) to disable output entirely (for console, syslog, log file,
|
||||
or monitoring), so not even errors are shown.
|
||||
* #688: Tweak archive check probing logic to use the newest timestamp found when multiple exist.
|
||||
* #659: Add Borg 2 date-based matching flags to various actions for archive selection.
|
||||
* #703: Fix an error when loading the configuration schema on Fedora Linux.
|
||||
* #704: Fix "check" action error when repository and archive checks are configured but the archive
|
||||
check gets skipped due to the configured frequency.
|
||||
* #706: Fix "--archive latest" on "list" and "info" actions that only worked on the first of
|
||||
multiple configured repositories.
|
||||
|
||||
1.7.13
|
||||
* #375: Restore particular PostgreSQL schemas from a database dump via "borgmatic restore --schema"
|
||||
flag. See the documentation for more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/backup-your-databases/#restore-particular-schemas
|
||||
* #678: Fix error from PostgreSQL when dumping a database with a "format" of "plain".
|
||||
* #678: Fix PostgreSQL hook to support "psql_command" and "pg_restore_command" options containing
|
||||
commands with arguments.
|
||||
* #678: Fix calls to psql in PostgreSQL hook to ignore "~/.psqlrc", whose settings can break
|
||||
database dumping.
|
||||
* #680: Add support for logging each log line as a JSON object via global "--log-json" flag.
|
||||
* #682: Fix "source_directories_must_exist" option to expand globs and tildes in source directories.
|
||||
* #684: Rename "master" development branch to "main" to use more inclusive language. You'll need to
|
||||
update your development checkouts accordingly.
|
||||
* #686: Add fish shell completion script so you can tab-complete on the borgmatic command-line. See
|
||||
the documentation for more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/set-up-backups/#shell-completion
|
||||
* #687: Fix borgmatic error when not finding the configuration schema for certain "pip install
|
||||
--editable" development installs.
|
||||
* #688: Fix archive checks being skipped even when particular archives haven't been checked
|
||||
recently. This occurred when using multiple borgmatic configuration files with different
|
||||
"archive_name_format"s, for instance.
|
||||
* #691: Fix error in "borgmatic restore" action when the configured repository path is relative
|
||||
instead of absolute.
|
||||
* #694: Run "borgmatic borg" action without capturing output so interactive prompts and flags like
|
||||
"--progress" still work.
|
||||
|
||||
1.7.12
|
||||
* #413: Add "log_file" context to command hooks so your scripts can consume the borgmatic log file.
|
||||
See the documentation for more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/add-preparation-and-cleanup-steps-to-backups/
|
||||
* #666, #670: Fix error when running the "info" action with the "--match-archives" or "--archive"
|
||||
flags. Also fix the "--match-archives"/"--archive" flags to correctly override the
|
||||
"match_archives" configuration option for the "transfer", "list", "rlist", and "info" actions.
|
||||
* #668: Fix error when running the "prune" action with both "archive_name_format" and "prefix"
|
||||
options set.
|
||||
* #672: Selectively shallow merge certain mappings or sequences when including configuration files.
|
||||
See the documentation for more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/make-per-application-backups/#shallow-merge
|
||||
* #672: Selectively omit list values when including configuration files. See the documentation for
|
||||
more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/make-per-application-backups/#list-merge
|
||||
* #673: View the results of configuration file merging via "validate-borgmatic-config --show" flag.
|
||||
See the documentation for more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/make-per-application-backups/#debugging-includes
|
||||
* Add optional support for running end-to-end tests and building documentation with rootless Podman
|
||||
instead of Docker.
|
||||
|
||||
1.7.11
|
||||
* #479, #588: BREAKING: Automatically use the "archive_name_format" option to filter which archives
|
||||
get used for borgmatic actions that operate on multiple archives. Override this behavior with the
|
||||
new "match_archives" option in the storage section. This change is "breaking" in that it silently
|
||||
changes which archives get considered for "rlist", "prune", "check", etc. See the documentation
|
||||
for more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/make-per-application-backups/#archive-naming
|
||||
* #479, #588: The "prefix" options have been deprecated in favor of the new "archive_name_format"
|
||||
auto-matching behavior and the "match_archives" option.
|
||||
* #658: Add "--log-file-format" flag for customizing the log message format. See the documentation
|
||||
for more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/inspect-your-backups/#logging-to-file
|
||||
* #662: Fix regression in which the "check_repositories" option failed to match repositories.
|
||||
* #663: Fix regression in which the "transfer" action produced a traceback.
|
||||
* Add spellchecking of source code during test runs.
|
||||
|
||||
1.7.10
|
||||
* #396: When a database command errors, display and log the error message instead of swallowing it.
|
||||
* #501: Optionally error if a source directory does not exist via "source_directories_must_exist"
|
||||
option in borgmatic's location configuration.
|
||||
* #576: Add support for "file://" paths within "repositories" option.
|
||||
* #612: Define and use custom constants in borgmatic configuration files. See the documentation for
|
||||
more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/make-per-application-backups/#constant-interpolation
|
||||
* #618: Add support for BORG_FILES_CACHE_TTL environment variable via "borg_files_cache_ttl" option
|
||||
in borgmatic's storage configuration.
|
||||
* #623: Fix confusing message when an error occurs running actions for a configuration file.
|
||||
* #635: Add optional repository labels so you can select a repository via "--repository yourlabel"
|
||||
at the command-line. See the configuration reference for more information:
|
||||
https://torsion.org/borgmatic/docs/reference/configuration/
|
||||
* #649: Add documentation on backing up a database running in a container:
|
||||
https://torsion.org/borgmatic/docs/how-to/backup-your-databases/#containers
|
||||
* #655: Fix error when databases are configured and a source directory doesn't exist.
|
||||
* Add code style plugins to enforce use of Python f-strings and prevent single-letter variables.
|
||||
To join in the pedantry, refresh your test environment with "tox --recreate".
|
||||
* Rename scripts/run-full-dev-tests to scripts/run-end-to-end-dev-tests and make it run end-to-end
|
||||
tests only. Continue using tox to run unit and integration tests.
|
||||
|
||||
1.7.9
|
||||
* #295: Add a SQLite database dump/restore hook.
|
||||
* #304: Change the default action order when no actions are specified on the command-line to:
|
||||
"create", "prune", "compact", "check". If you'd like to retain the old ordering ("prune" and
|
||||
"compact" first), then specify actions explicitly on the command-line.
|
||||
* #304: Run any command-line actions in the order specified instead of using a fixed ordering.
|
||||
* #564: Add "--repository" flag to all actions where it makes sense, so you can run borgmatic on
|
||||
a single configured repository instead of all of them.
|
||||
* #628: Add a Healthchecks "log" state to send borgmatic logs to Healthchecks without signalling
|
||||
success or failure.
|
||||
* #647: Add "--strip-components all" feature on the "extract" action to remove leading path
|
||||
components of files you extract. Must be used with the "--path" flag.
|
||||
* Add support for Python 3.11.
|
||||
|
||||
1.7.8
|
||||
* #620: With the "create" action and the "--list" ("--files") flag, only show excluded files at
|
||||
verbosity 2.
|
||||
* #621: Add optional authentication to the ntfy monitoring hook.
|
||||
* With the "create" action, only one of "--list" ("--files") and "--progress" flags can be used.
|
||||
This lines up with the new behavior in Borg 2.0.0b5.
|
||||
* Internally support new Borg 2.0.0b5 "--filter" status characters / item flags for the "create"
|
||||
action.
|
||||
* Fix the "create" action with the "--dry-run" flag querying for databases when a PostgreSQL/MySQL
|
||||
"all" database is configured. Now, these queries are skipped due to the dry run.
|
||||
* Add "--repository" flag to the "rcreate" action to optionally select one configured repository to
|
||||
create.
|
||||
* Add "--progress" flag to the "transfer" action, new in Borg 2.0.0b5.
|
||||
* Add "checkpoint_volume" configuration option to creates checkpoints every specified number of
|
||||
bytes during a long-running backup, new in Borg 2.0.0b5.
|
||||
|
||||
1.7.7
|
||||
* #642: Add MySQL database hook "add_drop_database" configuration option to control whether dumped
|
||||
MySQL databases get dropped right before restore.
|
||||
* #643: Fix for potential data loss (data not getting backed up) when dumping large "directory"
|
||||
format PostgreSQL/MongoDB databases. Prior to the fix, these dumps would not finish writing to
|
||||
disk before Borg consumed them. Now, the dumping process completes before Borg starts. This only
|
||||
applies to "directory" format databases; other formats still stream to Borg without using
|
||||
temporary disk space.
|
||||
* Fix MongoDB "directory" format to work with mongodump/mongorestore without error. Prior to this
|
||||
fix, only the "archive" format worked.
|
||||
|
||||
1.7.6
|
||||
* #393, #438, #560: Optionally dump "all" PostgreSQL/MySQL databases to separate files instead of
|
||||
one combined dump file, allowing more convenient restores of individual databases. You can enable
|
||||
this by specifying the database dump "format" option when the database is named "all".
|
||||
* #602: Fix logs that interfere with JSON output by making warnings go to stderr instead of stdout.
|
||||
* #622: Fix traceback when include merging configuration files on ARM64.
|
||||
* #629: Skip warning about excluded special files when no special files have been excluded.
|
||||
* #630: Add configuration options for database command customization: "list_options",
|
||||
"restore_options", and "analyze_options" for PostgreSQL, "restore_options" for MySQL, and
|
||||
"restore_options" for MongoDB.
|
||||
|
||||
1.7.5
|
||||
* #311: Override PostgreSQL dump/restore commands via configuration options.
|
||||
* #604: Fix traceback when a configuration section is present but lacking any options.
|
||||
* #607: Clarify documentation examples for include merging and deep merging.
|
||||
* #611: Fix "data" consistency check to support "check_last" and consistency "prefix" options.
|
||||
* #613: Clarify documentation about multiple repositories and separate configuration files.
|
||||
|
||||
1.7.4
|
||||
* #596: Fix special file detection erroring when broken symlinks are encountered.
|
||||
* #597, #598: Fix regression in which "check" action errored on certain systems ("Cannot determine
|
||||
Borg repository ID").
|
||||
|
||||
1.7.3
|
||||
* #357: Add "break-lock" action for removing any repository and cache locks leftover from Borg
|
||||
aborting.
|
||||
* #360: To prevent Borg hangs, unconditionally delete stale named pipes before dumping databases.
|
||||
* #587: When database hooks are enabled, auto-exclude special files from a "create" action to
|
||||
prevent Borg from hanging. You can override/prevent this behavior by explicitly setting the
|
||||
"read_special" option to true.
|
||||
* #587: Warn when ignoring a configured "read_special" value of false, as true is needed when
|
||||
database hooks are enabled.
|
||||
* #589: Update sample systemd service file to allow system "idle" (e.g. a video monitor turning
|
||||
off) while borgmatic is running.
|
||||
* #590: Fix for potential data loss (data not getting backed up) when the "patterns_from" option
|
||||
was used with "source_directories" (or the "~/.borgmatic" path existed, which got injected into
|
||||
"source_directories" implicitly). The fix is for borgmatic to convert "source_directories" into
|
||||
patterns whenever "patterns_from" is used, working around a Borg bug:
|
||||
https://github.com/borgbackup/borg/issues/6994
|
||||
* #590: In "borgmatic create --list" output, display which files get excluded from the backup due
|
||||
to patterns or excludes.
|
||||
* #591: Add support for Borg 2's "--match-archives" flag. This replaces "--glob-archives", which
|
||||
borgmatic now treats as an alias for "--match-archives". But note that the two flags have
|
||||
slightly different syntax. See the Borg 2 changelog for more information:
|
||||
https://borgbackup.readthedocs.io/en/2.0.0b3/changes.html#version-2-0-0b3-2022-10-02
|
||||
* Fix for "borgmatic --archive latest" not finding the latest archive when a verbosity is set.
|
||||
|
||||
1.7.2
|
||||
* #577: Fix regression in which "borgmatic info --archive ..." showed repository info instead of
|
||||
archive info with Borg 1.
|
||||
* #582: Fix hang when database hooks are enabled and "patterns" contains a parent directory of
|
||||
"~/.borgmatic".
|
||||
|
||||
1.7.1
|
||||
* #542: Make the "source_directories" option optional. This is useful for "check"-only setups or
|
||||
using "patterns" exclusively.
|
||||
* #574: Fix for potential data loss (data not getting backed up) when the "patterns" option was
|
||||
used with "source_directories" (or the "~/.borgmatic" path existed, which got injected into
|
||||
"source_directories" implicitly). The fix is for borgmatic to convert "source_directories" into
|
||||
patterns whenever "patterns" is used, working around a Borg bug:
|
||||
https://github.com/borgbackup/borg/issues/6994
|
||||
|
||||
1.7.0
|
||||
* #463: Add "before_actions" and "after_actions" command hooks that run before/after all the
|
||||
actions for each repository. These new hooks are a good place to run per-repository steps like
|
||||
mounting/unmounting a remote filesystem.
|
||||
* #463: Update documentation to cover per-repository configurations:
|
||||
https://torsion.org/borgmatic/docs/how-to/make-per-application-backups/
|
||||
* #557: Support for Borg 2 while still working with Borg 1. This includes new borgmatic actions
|
||||
like "rcreate" (replaces "init"), "rlist" (list archives in repository), "rinfo" (show repository
|
||||
info), and "transfer" (for upgrading Borg repositories). For the most part, borgmatic tries to
|
||||
smooth over differences between Borg 1 and 2 to make your upgrade process easier. However, there
|
||||
are still a few cases where Borg made breaking changes. See the Borg 2.0 changelog for more
|
||||
information: https://www.borgbackup.org/releases/borg-2.0.html
|
||||
* #557: If you install Borg 2, you'll need to manually upgrade your existing Borg 1 repositories
|
||||
before use. Note that Borg 2 stable is not yet released as of this borgmatic release, so don't
|
||||
use Borg 2 for production until it is! See the documentation for more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/upgrade/#upgrading-borg
|
||||
* #557: Rename several configuration options to match Borg 2: "remote_rate_limit" is now
|
||||
"upload_rate_limit", "numeric_owner" is "numeric_ids", and "bsd_flags" is "flags". borgmatic
|
||||
still works with the old options.
|
||||
* #557: Remote repository paths without the "ssh://" syntax are deprecated but still supported for
|
||||
now. Remote repository paths containing "~" are deprecated in borgmatic and no longer work in
|
||||
Borg 2.
|
||||
* #557: Omitting the "--archive" flag on the "list" action is deprecated when using Borg 2. Use
|
||||
the new "rlist" action instead.
|
||||
* #557: The "--dry-run" flag can now be used with the "rcreate"/"init" action.
|
||||
* #565: Fix handling of "repository" and "data" consistency checks to prevent invalid Borg flags.
|
||||
* #566: Modify "mount" and "extract" actions to require the "--repository" flag when multiple
|
||||
repositories are configured.
|
||||
* #571: BREAKING: Remove old-style command-line action flags like "--create, "--list", etc. If
|
||||
you're already using actions like "create" and "list" instead, this change should not affect you.
|
||||
* #571: BREAKING: Rename "--files" flag on "prune" action to "--list", as it lists archives, not
|
||||
files.
|
||||
* #571: Add "--list" as alias for "--files" flag on "create" and "export-tar" actions.
|
||||
* Add support for disabling TLS verification in Healthchecks monitoring hook with "verify_tls"
|
||||
option.
|
||||
|
||||
1.6.6
|
||||
* #559: Update documentation about configuring multiple consistency checks or multiple databases.
|
||||
* #560: Fix all database hooks to error when the requested database to restore isn't present in the
|
||||
Borg archive.
|
||||
* #561: Fix command-line "--override" flag to continue supporting old configuration file formats.
|
||||
* #563: Fix traceback with "create" action and "--json" flag when a database hook is configured.
|
||||
|
||||
1.6.5
|
||||
* #553: Fix logging to include the full traceback when Borg experiences an internal error, not just
|
||||
the first few lines.
|
||||
* #554: Fix all monitoring hooks to warn if the server returns an HTTP 4xx error. This can happen
|
||||
with Healthchecks, for instance, when using an invalid ping URL.
|
||||
* #555: Fix environment variable plumbing so options like "encryption_passphrase" and
|
||||
"encryption_passcommand" in one configuration file aren't used for other configuration files.
|
||||
|
||||
1.6.4
|
||||
* #546, #382: Keep your repository passphrases and database passwords outside of borgmatic's
|
||||
configuration file with environment variable interpolation. See the documentation for more
|
||||
information: https://torsion.org/borgmatic/docs/how-to/provide-your-passwords/
|
||||
|
||||
1.6.3
|
||||
* #541: Add "borgmatic list --find" flag for searching for files across multiple archives, useful
|
||||
for hunting down that file you accidentally deleted so you can extract it. See the documentation
|
||||
for more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/inspect-your-backups/#searching-for-a-file
|
||||
* #543: Add a monitoring hook for sending push notifications via ntfy. See the documentation for
|
||||
more information: https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/#ntfy-hook
|
||||
* Fix Bash completion script to no longer alter your shell's settings (complain about unset
|
||||
variables or error on pipe failures).
|
||||
* Deprecate "borgmatic list --successful" flag, as listing only non-checkpoint (successful)
|
||||
archives is now the default in newer versions of Borg.
|
||||
|
||||
1.6.2
|
||||
* #523: Reduce the default consistency check frequency and support configuring the frequency
|
||||
independently for each check. Also add "borgmatic check --force" flag to ignore configured
|
||||
frequencies. See the documentation for more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/deal-with-very-large-backups/#check-frequency
|
||||
* #536: Fix generate-borgmatic-config to support more complex schema changes like the new
|
||||
Healthchecks configuration options when the "--source" flag is used.
|
||||
* #538: Add support for "borgmatic borg debug" command.
|
||||
* #539: Add "generate-borgmatic-config --overwrite" flag to replace an existing destination file.
|
||||
* Add Bash completion script so you can tab-complete the borgmatic command-line. See the
|
||||
documentation for more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/set-up-backups/#shell-completion
|
||||
|
||||
1.6.1
|
||||
* #294: Add Healthchecks monitoring hook "ping_body_limit" option to configure how many bytes of
|
||||
logs to send to the Healthchecks server.
|
||||
* #402: Remove the error when "archive_name_format" is specified but a retention prefix isn't.
|
||||
* #420: Warn when an unsupported variable is used in a hook command.
|
||||
* #439: Change connection failures for monitoring hooks (Healthchecks, Cronitor, PagerDuty, and
|
||||
Cronhub) to be warnings instead of errors. This way, the monitoring system failing does not block
|
||||
backups.
|
||||
* #460: Add Healthchecks monitoring hook "send_logs" option to enable/disable sending borgmatic
|
||||
logs to the Healthchecks server.
|
||||
* #525: Add Healthchecks monitoring hook "states" option to only enable pinging for particular
|
||||
monitoring states (start, finish, fail).
|
||||
* #528: Improve the error message when a configuration override contains an invalid value.
|
||||
* #531: BREAKING: When deep merging common configuration, merge colliding list values by appending
|
||||
them. Previously, one list replaced the other.
|
||||
* #532: When a configuration include is a relative path, load it from either the current working
|
||||
directory or from the directory containing the file doing the including. Previously, only the
|
||||
working directory was used.
|
||||
* Add a randomized delay to the sample systemd timer to spread out the load on a server.
|
||||
* Change the configuration format for borgmatic monitoring hooks (Healthchecks, Cronitor,
|
||||
PagerDuty, and Cronhub) to specify the ping URL / integration key as a named option. The intent
|
||||
is to support additional options (some in this release). This change is backwards-compatible.
|
||||
* Add emojis to documentation table of contents to make it easier to find particular how-to and
|
||||
reference guides at a glance.
|
||||
|
||||
1.6.0
|
||||
* #381: BREAKING: Greatly simplify configuration file reuse by deep merging when including common
|
||||
configuration. See the documentation for more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/make-per-application-backups/#include-merging
|
||||
* #473: BREAKING: Instead of executing "before" command hooks before all borgmatic actions run (and
|
||||
"after" hooks after), execute these hooks right before/after the corresponding action. E.g.,
|
||||
"before_check" now runs immediately before the "check" action. This better supports running
|
||||
timing-sensitive tasks like pausing containers. Side effect: before/after command hooks now run
|
||||
once for each configured repository instead of once per configuration file. Additionally, the
|
||||
"repositories" interpolated variable has been changed to "repository", containing the path to the
|
||||
current repository for the hook. See the documentation for more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/add-preparation-and-cleanup-steps-to-backups/
|
||||
* #513: Add mention of sudo's "secure_path" option to borgmatic installation documentation.
|
||||
* #515: Fix "borgmatic borg key ..." to pass parameters to Borg in the correct order.
|
||||
* #516: Fix handling of TERM signal to exit borgmatic, not just forward the signal to Borg.
|
||||
* #517: Fix borgmatic exit code (so it's zero) when initial Borg calls fail but later retries
|
||||
succeed.
|
||||
* Change Healthchecks logs truncation size from 10k bytes to 100k bytes, corresponding to that
|
||||
same change on Healthchecks.io.
|
||||
|
||||
1.5.24
|
||||
* #431: Add "working_directory" option to support source directories with relative paths.
|
||||
* #444: When loading a configuration file that is unreadable due to file permissions, warn instead
|
||||
of erroring. This supports running borgmatic as a non-root user with configuration in ~/.config
|
||||
even if there is an unreadable global configuration file in /etc.
|
||||
* #469: Add "repositories" context to "before_*" and "after_*" command action hooks. See the
|
||||
documentation for more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/add-preparation-and-cleanup-steps-to-backups/
|
||||
* #486: Fix handling of "patterns_from" and "exclude_from" options to error instead of warning when
|
||||
referencing unreadable files and "create" action is run.
|
||||
* #507: Fix Borg usage error in the "compact" action when running "borgmatic --dry-run". Now, skip
|
||||
"compact" entirely during a dry run.
|
||||
|
||||
1.5.23
|
||||
* #394: Compact repository segments and free space with new "borgmatic compact" action. Borg 1.2+
|
||||
only. Also run "compact" by default when no actions are specified, as "prune" in Borg 1.2 no
|
||||
longer frees up space unless "compact" is run.
|
||||
* #394: When using the "atime", "bsd_flags", "numeric_owner", or "remote_rate_limit" options,
|
||||
tailor the flags passed to Borg depending on the Borg version.
|
||||
* #480, #482: Fix traceback when a YAML validation error occurs.
|
||||
|
||||
1.5.22
|
||||
* #288: Add database dump hook for MongoDB.
|
||||
* #470: Move mysqldump options to the beginning of the command due to MySQL bug 30994.
|
||||
* #471: When command-line configuration override produces a parse error, error cleanly instead of
|
||||
tracebacking.
|
||||
* #476: Fix unicode error when restoring particular MySQL databases.
|
||||
* Drop support for Python 3.6, which has been end-of-lifed.
|
||||
* Add support for Python 3.10.
|
||||
|
||||
1.5.21
|
||||
* #28: Optionally retry failing backups via "retries" and "retry_wait" configuration options.
|
||||
* #306: Add "list_options" MySQL configuration option for passing additional arguments to MySQL
|
||||
list command.
|
||||
* #459: Add support for old version (2.x) of jsonschema library.
|
||||
|
||||
1.5.20
|
||||
* Re-release with correct version without dev0 tag.
|
||||
|
||||
1.5.19
|
||||
* #387: Fix error when configured source directories are not present on the filesystem at the time
|
||||
of backup. Now, Borg will complain, but the backup will still continue.
|
||||
* #455: Mention changing borgmatic path in cron documentation.
|
||||
* Update sample systemd service file with more granular read-only filesystem settings.
|
||||
* Move Gitea and GitHub hosting from a personal namespace to an organization for better
|
||||
collaboration with related projects.
|
||||
* 1k ★s on GitHub!
|
||||
|
||||
1.5.18
|
||||
* #389: Fix "message too long" error when logging to rsyslog.
|
||||
* #440: Fix traceback that can occur when dumping a database.
|
||||
|
||||
1.5.17
|
||||
* #437: Fix error when configuration file contains "umask" option.
|
||||
* Remove test dependency on vim and /dev/urandom.
|
||||
|
||||
1.5.16
|
||||
* #379: Suppress console output in sample crontab and systemd service files.
|
||||
* #407: Fix syslog logging on FreeBSD.
|
||||
* #430: Fix hang when restoring a PostgreSQL "tar" format database dump.
|
||||
* Better error messages! Switch the library used for validating configuration files (from pykwalify
|
||||
to jsonschema).
|
||||
* Link borgmatic Ansible role from installation documentation:
|
||||
https://torsion.org/borgmatic/docs/how-to/set-up-backups/#other-ways-to-install
|
||||
|
||||
1.5.15
|
||||
* #419: Document use case of running backups conditionally based on laptop power level:
|
||||
https://torsion.org/borgmatic/docs/how-to/backup-to-a-removable-drive-or-an-intermittent-server/
|
||||
* #425: Run arbitrary Borg commands with new "borgmatic borg" action. See the documentation for
|
||||
more information: https://torsion.org/borgmatic/docs/how-to/run-arbitrary-borg-commands/
|
||||
|
||||
1.5.14
|
||||
* #390: Add link to Hetzner storage offering from the documentation.
|
||||
* #398: Clarify canonical home of borgmatic in documentation.
|
||||
* #406: Clarify that spaces in path names should not be backslashed in path names.
|
||||
* #423: Fix error handling to error loudly when Borg gets killed due to running out of memory!
|
||||
* Fix build so as not to attempt to build and push documentation for a non-main branch.
|
||||
* "Fix" build failure with Alpine Edge by switching from Edge to Alpine 3.13.
|
||||
* Move #borgmatic IRC channel from Freenode to Libera Chat due to Freenode takeover drama.
|
||||
IRC connection info: https://torsion.org/borgmatic/#issues
|
||||
|
||||
1.5.13
|
||||
* #373: Document that passphrase is used for Borg keyfile encryption, not just repokey encryption.
|
||||
* #404: Add support for ruamel.yaml 0.17.x YAML parsing library.
|
||||
* Update systemd service example to return a permission error when a system call isn't permitted
|
||||
(instead of terminating borgmatic outright).
|
||||
* Drop support for Python 3.5, which has been end-of-lifed.
|
||||
* Add support for Python 3.9.
|
||||
* Update versions of test dependencies (test_requirements.txt and test containers).
|
||||
* Only support black code formatter on Python 3.8+. New black dependencies make installation
|
||||
difficult on older versions of Python.
|
||||
* Replace "improve this documentation" form with link to support and ticket tracker.
|
||||
|
||||
1.5.12
|
||||
* Fix for previous release with incorrect version suffix in setup.py. No other changes.
|
||||
|
||||
1.5.11
|
||||
* #341: Add "temporary_directory" option for changing Borg's temporary directory.
|
||||
* #352: Lock down systemd security settings in sample systemd service file.
|
||||
* #355: Fix traceback when a database hook value is null in a configuration file.
|
||||
* #361: Merge override values when specifying the "--override" flag multiple times. The previous
|
||||
behavior was to take the value of the last "--override" flag only.
|
||||
* #367: Fix traceback when upgrading old INI-style configuration with upgrade-borgmatic-config.
|
||||
* #368: Fix signal forwarding from borgmatic to Borg resulting in recursion traceback.
|
||||
* #369: Document support for Borg placeholders in repository names.
|
||||
|
||||
1.5.10
|
||||
* #347: Add hooks that run for the "extract" action: "before_extract" and "after_extract".
|
||||
* #350: Fix traceback when a configuration directory is non-readable due to directory permissions.
|
||||
* Add documentation navigation links on left side of all documentation pages.
|
||||
* Clarify documentation on configuration overrides, specifically the portion about list syntax:
|
||||
http://torsion.org/borgmatic/docs/how-to/make-per-application-backups/#configuration-overrides
|
||||
* Clarify documentation overview of monitoring options:
|
||||
http://torsion.org/borgmatic/docs/how-to/monitor-your-backups/
|
||||
|
||||
1.5.9
|
||||
* #300: Add "borgmatic export-tar" action to export an archive to a tar-formatted file or stream.
|
||||
* #339: Fix for intermittent timing-related test failure of logging function.
|
||||
* Clarify database documentation about excluding named pipes and character/block devices to prevent
|
||||
hangs.
|
||||
* Add documentation on how to make backups redundant with multiple repositories:
|
||||
https://torsion.org/borgmatic/docs/how-to/make-backups-redundant/
|
||||
|
||||
1.5.8
|
||||
* #336: Fix for traceback when running Cronitor, Cronhub, and PagerDuty monitor hooks.
|
||||
|
||||
1.5.7
|
||||
* #327: Fix broken pass-through of BORG_* environment variables to Borg.
|
||||
* #328: Fix duplicate logging to Healthchecks and send "after_*" hooks output to Healthchecks.
|
||||
* #331: Add SSL support to PostgreSQL database configuration.
|
||||
* #333: Fix for potential data loss (data not getting backed up) when borgmatic omitted configured
|
||||
source directories in certain situations. Specifically, this occurred when two source directories
|
||||
on different filesystems were related by parentage (e.g. "/foo" and "/foo/bar/baz") and the
|
||||
one_file_system option was enabled.
|
||||
* Update documentation code fragments theme to better match the rest of the page.
|
||||
* Improve configuration reference documentation readability via more aggressive word-wrapping in
|
||||
configuration schema descriptions.
|
||||
|
||||
1.5.6
|
||||
* #292: Allow before_backup and similar hooks to exit with a soft failure without altering the
|
||||
monitoring status on Healthchecks or other providers. Support this by waiting to ping monitoring
|
||||
services with a "start" status until after before_* hooks finish. Failures in before_* hooks
|
||||
still trigger a monitoring "fail" status.
|
||||
* #316: Fix hang when a stale database dump named pipe from an aborted borgmatic run remains on
|
||||
disk.
|
||||
* #323: Fix for certain configuration options like ssh_command impacting Borg invocations for
|
||||
separate configuration files.
|
||||
* #324: Add "borgmatic extract --strip-components" flag to remove leading path components when
|
||||
extracting an archive.
|
||||
* Tweak comment indentation in generated configuration file for clarity.
|
||||
* Link to Borgmacator GNOME AppIndicator from monitoring documentation.
|
||||
|
||||
1.5.5
|
||||
* #314: Fix regression in support for PostgreSQL's "directory" dump format. Unlike other dump
|
||||
formats, the "directory" dump format does not stream directly to/from Borg.
|
||||
* #315: Fix enabled database hooks to implicitly set one_file_system configuration option to true.
|
||||
This prevents Borg from reading devices like /dev/zero and hanging.
|
||||
* #316: Fix hang when streaming a database dump to Borg with implicit duplicate source directories
|
||||
by deduplicating them first.
|
||||
* #319: Fix error message when there are no MySQL databases to dump for "all" databases.
|
||||
* Improve documentation around the installation process. Specifically, making borgmatic commands
|
||||
runnable via the system PATH and offering a global install option.
|
||||
|
||||
1.5.4
|
||||
* #310: Fix legitimate database dump command errors (exit code 1) not being treated as errors by
|
||||
borgmatic.
|
||||
* For database dumps, replace the named pipe on every borgmatic run. This prevent hangs on stale
|
||||
pipes left over from previous runs.
|
||||
* Fix error handling to handle more edge cases when executing commands.
|
||||
|
||||
1.5.3
|
||||
* #258: Stream database dumps and restores directly to/from Borg without using any additional
|
||||
filesystem space. This feature is automatic, and works even on restores from archives made with
|
||||
previous versions of borgmatic.
|
||||
* #293: Documentation on macOS launchd permissions issues with work-around for Full Disk Access.
|
||||
* Remove "borgmatic restore --progress" flag, as it now conflicts with streaming database restores.
|
||||
|
||||
1.5.2
|
||||
* #301: Fix MySQL restore error on "all" database dump by excluding system tables.
|
||||
* Fix PostgreSQL restore error on "all" database dump by using "psql" for the restore instead of
|
||||
"pg_restore".
|
||||
|
||||
1.5.1
|
||||
* #289: Tired of looking up the latest successful archive name in order to pass it to borgmatic
|
||||
actions? Me too. Now you can specify "--archive latest" to all actions that accept an archive
|
||||
flag.
|
||||
* #290: Fix the "--stats" and "--files" flags so that they yield output at verbosity 0.
|
||||
* Reduce the default verbosity of borgmatic logs sent to Healthchecks monitoring hook. Now, it's
|
||||
warnings and errors only. You can increase the verbosity via the "--monitoring-verbosity" flag.
|
||||
* Add security policy documentation in SECURITY.md.
|
||||
|
||||
1.5.0
|
||||
* #245: Monitor backups with PagerDuty hook integration. See the documentation for more
|
||||
information: https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/#pagerduty-hook
|
||||
* #255: Add per-action hooks: "before_prune", "after_prune", "before_check", and "after_check".
|
||||
* #274: Add ~/.config/borgmatic.d as another configuration directory default.
|
||||
* #277: Customize Healthchecks log level via borgmatic "--monitoring-verbosity" flag.
|
||||
* #280: Change "exclude_if_present" option to support multiple filenames that indicate a directory
|
||||
should be excluded from backups, rather than just a single filename.
|
||||
* #284: Backup to a removable drive or intermittent server via "soft failure" feature. See the
|
||||
documentation for more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/backup-to-a-removable-drive-or-an-intermittent-server/
|
||||
* #287: View consistency check progress via "--progress" flag for "check" action.
|
||||
* For "create" and "prune" actions, no longer list files or show detailed stats at any verbosities
|
||||
by default. You can opt back in with "--files" or "--stats" flags.
|
||||
* For "list" and "info" actions, show repository names even at verbosity 0.
|
||||
|
||||
1.4.22
|
||||
* #276, #285: Disable colored output when "--json" flag is used, so as to produce valid JSON output.
|
||||
* After a backup of a database dump in directory format, properly remove the dump directory.
|
||||
* In "borgmatic --help", don't expand $HOME in listing of default "--config" paths.
|
||||
|
||||
1.4.21
|
||||
* #268: Override particular configuration options from the command-line via "--override" flag. See
|
||||
the documentation for more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/make-per-application-backups/#configuration-overrides
|
||||
* #270: Only trigger "on_error" hooks and monitoring failures for "prune", "create", and "check"
|
||||
actions, and not for other actions.
|
||||
* When pruning with verbosity level 1, list pruned and kept archives. Previously, this information
|
||||
was only shown at verbosity level 2.
|
||||
|
||||
1.4.20
|
||||
* Fix repository probing during "borgmatic init" to respect verbosity flag and remote_path option.
|
||||
* #249: Update Healthchecks/Cronitor/Cronhub monitoring integrations to fire for "check" and
|
||||
"prune" actions, not just "create".
|
||||
|
||||
1.4.19
|
||||
* #259: Optionally change the internal database dump path via "borgmatic_source_directory" option
|
||||
in location configuration section.
|
||||
* #271: Support piping "borgmatic list" output to grep by logging certain log levels to console
|
||||
stdout and others to stderr.
|
||||
* Retain colored output when piping or redirecting in an interactive terminal.
|
||||
* Add end-to-end tests for database dump and restore. These are run on developer machines with
|
||||
Docker Compose for approximate parity with continuous integration tests.
|
||||
|
||||
1.4.18
|
||||
* Fix "--repository" flag to accept relative paths.
|
||||
* Fix "borgmatic umount" so it only runs Borg once instead of once per repository / configuration
|
||||
file.
|
||||
* #253: Mount whole repositories via "borgmatic mount" without any "--archive" flag.
|
||||
* #269: Filter listed paths via "borgmatic list --path" flag.
|
||||
|
||||
1.4.17
|
||||
* #235: Pass extra options directly to particular Borg commands, handy for Borg options that
|
||||
borgmatic does not yet support natively. Use "extra_borg_options" in the storage configuration
|
||||
section.
|
||||
* #266: Attempt to repair any inconsistencies found during a consistency check via
|
||||
"borgmatic check --repair" flag.
|
||||
|
||||
1.4.16
|
||||
* #256: Fix for "before_backup" hook not triggering an error when the command contains "borg" and
|
||||
has an exit code of 1.
|
||||
* #257: Fix for garbled Borg file listing when using "borgmatic create --progress" with
|
||||
verbosity level 1 or 2.
|
||||
* #260: Fix for missing Healthchecks monitoring payload or HTTP 500 due to incorrect unicode
|
||||
encoding.
|
||||
|
||||
1.4.15
|
||||
* Fix for database dump removal incorrectly skipping some database dumps.
|
||||
* #123: Support for mounting an archive as a FUSE filesystem via "borgmatic mount" action, and
|
||||
unmounting via "borgmatic umount". See the documentation for more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/extract-a-backup/#mount-a-filesystem
|
||||
|
||||
1.4.14
|
||||
* Show summary log errors regardless of verbosity level, and log the "summary:" header with a log
|
||||
level based on the contained summary logs.
|
||||
|
||||
1.4.13
|
||||
* Show full error logs at "--verbosity 0" so you can see command output without upping the
|
||||
verbosity level.
|
||||
|
||||
1.4.12
|
||||
* #247: With "borgmatic check", consider Borg warnings as errors.
|
||||
* Dial back the display of inline error logs a bit, so failed command output doesn't appear
|
||||
multiple times in the logs (well, except for the summary).
|
||||
|
||||
1.4.11
|
||||
* #241: When using the Healthchecks monitoring hook, include borgmatic logs in the payloads for
|
||||
completion and failure pings.
|
||||
* With --verbosity level 1 or 2, show error logs both inline when they occur and in the summary
|
||||
logs at the bottom. With lower verbosity levels, suppress the summary and show error logs when
|
||||
they occur.
|
||||
|
||||
1.4.10
|
||||
* #246: Fix for "borgmatic restore" showing success and incorrectly extracting archive files, even
|
||||
when no databases are configured to restore. As this can overwrite files from the archive and
|
||||
lead to data loss, please upgrade to get the fix before using "borgmatic restore".
|
||||
* Reopen the file given by "--log-file" flag if an external program rotates the log file while
|
||||
borgmatic is running.
|
||||
|
||||
1.4.9
|
||||
* #228: Database dump hooks for MySQL/MariaDB, so you can easily dump your databases before backups
|
||||
run.
|
||||
* #243: Fix repository does not exist error with "borgmatic extract" when repository is remote.
|
||||
|
||||
1.4.8
|
||||
* Monitor backups with Cronhub hook integration. See the documentation for more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/#cronhub-hook
|
||||
* Fix Healthchecks/Cronitor hooks to skip actions when the borgmatic "--dry-run" flag is used.
|
||||
|
||||
1.4.7
|
||||
* #238: In documentation, clarify when Healthchecks/Cronitor hooks fire in relation to other hooks.
|
||||
* #239: Upgrade your borgmatic configuration to get new options and comments via
|
||||
"generate-borgmatic-config --source". See the documentation for more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/upgrade/#upgrading-your-configuration
|
||||
|
||||
1.4.6
|
||||
* Verbosity level "-1" for even quieter output: Errors only (#236).
|
||||
|
||||
1.4.5
|
||||
* Log to file instead of syslog via command-line "--log-file" flag (#233).
|
||||
|
||||
1.4.4
|
||||
* #234: Support for Borg --keep-exclude-tags and --exclude-nodump options.
|
||||
|
||||
1.4.3
|
||||
* Monitor backups with Cronitor hook integration. See the documentation for more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/#cronitor-hook
|
||||
|
||||
1.4.2
|
||||
* Extract files to a particular directory via "borgmatic extract --destination" flag.
|
||||
* Rename "borgmatic extract --restore-path" flag to "--path" to reduce confusion with the separate
|
||||
"borgmatic restore" action. Any uses of "--restore-path" will continue working.
|
||||
|
||||
1.4.1
|
||||
* #229: Restore backed up PostgreSQL databases via "borgmatic restore" action. See the
|
||||
documentation for more information:
|
||||
https://torsion.org/borgmatic/docs/how-to/backup-your-databases/
|
||||
* Documentation on how to develop borgmatic's documentation:
|
||||
https://torsion.org/borgmatic/docs/how-to/develop-on-borgmatic/#documentation-development
|
||||
|
||||
1.4.0
|
||||
* #225: Database dump hooks for PostgreSQL, so you can easily dump your databases before backups
|
||||
run.
|
||||
|
|
@ -247,7 +1026,7 @@
|
|||
* #77: Skip non-"*.yaml" config filenames in /etc/borgmatic.d/ so as not to parse backup files,
|
||||
editor swap files, etc.
|
||||
* #81: Document user-defined hooks run before/after backup, or on error.
|
||||
* Add code style guidelines to the documention.
|
||||
* Add code style guidelines to the documentation.
|
||||
|
||||
1.2.0
|
||||
* #61: Support for Borg --list option via borgmatic command-line to list all archives.
|
||||
|
|
@ -285,7 +1064,7 @@
|
|||
* #49: Support for Borg experimental --patterns-from and --patterns options for specifying mixed
|
||||
includes/excludes.
|
||||
* Moved issue tracker from Taiga to integrated Gitea tracker at
|
||||
https://projects.torsion.org/witten/borgmatic/issues
|
||||
https://projects.torsion.org/borgmatic-collective/borgmatic/issues
|
||||
|
||||
1.1.12
|
||||
* #46: Declare dependency on pykwalify 1.6 or above, as older versions yield "Unknown key: version"
|
||||
|
|
|
|||
191
README.md
191
README.md
|
|
@ -2,127 +2,158 @@
|
|||
title: borgmatic
|
||||
permalink: index.html
|
||||
---
|
||||
<a href="https://build.torsion.org/witten/borgmatic" alt="build status"></a>
|
||||
|
||||
## Overview
|
||||
## It's your data. Keep it that way.
|
||||
|
||||
<img src="https://projects.torsion.org/witten/borgmatic/raw/branch/master/static/borgmatic.png" alt="borgmatic logo" width="150px" style="float: right; padding-left: 1em;">
|
||||
<img src="docs/static/borgmatic.png" alt="borgmatic logo" width="150px" style="float: right; padding-left: 1em;">
|
||||
|
||||
borgmatic is simple, configuration-driven backup software for servers and
|
||||
workstations. Backup all of your machines from the command-line or scheduled
|
||||
jobs. No GUI required. Built atop [Borg Backup](https://www.borgbackup.org/),
|
||||
borgmatic initiates a backup, prunes any old backups according to a retention
|
||||
policy, and validates backups for consistency. borgmatic supports specifying
|
||||
your settings in a declarative configuration file, rather than having to put
|
||||
them all on the command-line, and handles common errors.
|
||||
workstations. Protect your files with client-side encryption. Backup your
|
||||
databases too. Monitor it all with integrated third-party services.
|
||||
|
||||
Here's an example config file:
|
||||
The canonical home of borgmatic is at <a href="https://torsion.org/borgmatic">https://torsion.org/borgmatic/</a>
|
||||
|
||||
Here's an example configuration file:
|
||||
|
||||
```yaml
|
||||
location:
|
||||
# List of source directories to backup. Globs are expanded.
|
||||
source_directories:
|
||||
- /home
|
||||
- /etc
|
||||
- /var/log/syslog*
|
||||
# List of source directories to backup.
|
||||
source_directories:
|
||||
- /home
|
||||
- /etc
|
||||
|
||||
# Paths to local or remote repositories.
|
||||
repositories:
|
||||
- user@backupserver:sourcehostname.borg
|
||||
# Paths of local or remote repositories to backup to.
|
||||
repositories:
|
||||
- path: ssh://k8pDxu32@k8pDxu32.repo.borgbase.com/./repo
|
||||
label: borgbase
|
||||
- path: /var/lib/backups/local.borg
|
||||
label: local
|
||||
|
||||
# Any paths matching these patterns are excluded from backups.
|
||||
exclude_patterns:
|
||||
- /home/*/.cache
|
||||
# Retention policy for how many backups to keep.
|
||||
keep_daily: 7
|
||||
keep_weekly: 4
|
||||
keep_monthly: 6
|
||||
|
||||
retention:
|
||||
# Retention policy for how many backups to keep in each category.
|
||||
keep_daily: 7
|
||||
keep_weekly: 4
|
||||
keep_monthly: 6
|
||||
# List of checks to run to validate your backups.
|
||||
checks:
|
||||
- name: repository
|
||||
- name: archives
|
||||
frequency: 2 weeks
|
||||
|
||||
consistency:
|
||||
# List of consistency checks to run: "repository", "archives", etc.
|
||||
checks:
|
||||
- repository
|
||||
- archives
|
||||
# Custom preparation scripts to run.
|
||||
before_backup:
|
||||
- prepare-for-backup.sh
|
||||
|
||||
hooks:
|
||||
# Preparation scripts to run, databases to dump, and monitoring to perform.
|
||||
before_backup:
|
||||
- prepare-for-backup.sh
|
||||
postgresql_databases:
|
||||
- name: users
|
||||
healthchecks: https://hc-ping.com/be067061-cf96-4412-8eae-62b0c50d6a8c
|
||||
# Databases to dump and include in backups.
|
||||
postgresql_databases:
|
||||
- name: users
|
||||
|
||||
# Third-party services to notify you if backups aren't happening.
|
||||
healthchecks:
|
||||
ping_url: https://hc-ping.com/be067061-cf96-4412-8eae-62b0c50d6a8c
|
||||
```
|
||||
|
||||
borgmatic is hosted at <https://torsion.org/borgmatic> with [source code
|
||||
available](https://projects.torsion.org/witten/borgmatic). It's also mirrored
|
||||
on [GitHub](https://github.com/witten/borgmatic) for convenience.
|
||||
borgmatic is powered by [Borg Backup](https://www.borgbackup.org/).
|
||||
|
||||
Want to see borgmatic in action? Check out the <a
|
||||
href="https://asciinema.org/a/203761" target="_blank">screencast</a>.
|
||||
## Integrations
|
||||
|
||||
<script src="https://asciinema.org/a/203761.js" id="asciicast-203761" async></script>
|
||||
<a href="https://www.postgresql.org/"><img src="docs/static/postgresql.png" alt="PostgreSQL" height="60px" style="margin-bottom:20px; margin-right:20px;"></a>
|
||||
<a href="https://www.mysql.com/"><img src="docs/static/mysql.png" alt="MySQL" height="60px" style="margin-bottom:20px; margin-right:20px;"></a>
|
||||
<a href="https://mariadb.com/"><img src="docs/static/mariadb.png" alt="MariaDB" height="60px" style="margin-bottom:20px; margin-right:20px;"></a>
|
||||
<a href="https://www.mongodb.com/"><img src="docs/static/mongodb.png" alt="MongoDB" height="60px" style="margin-bottom:20px; margin-right:20px;"></a>
|
||||
<a href="https://sqlite.org/"><img src="docs/static/sqlite.png" alt="SQLite" height="60px" style="margin-bottom:20px; margin-right:20px;"></a>
|
||||
<a href="https://healthchecks.io/"><img src="docs/static/healthchecks.png" alt="Healthchecks" height="60px" style="margin-bottom:20px; margin-right:20px;"></a>
|
||||
<a href="https://cronitor.io/"><img src="docs/static/cronitor.png" alt="Cronitor" height="60px" style="margin-bottom:20px; margin-right:20px;"></a>
|
||||
<a href="https://cronhub.io/"><img src="docs/static/cronhub.png" alt="Cronhub" height="60px" style="margin-bottom:20px; margin-right:20px;"></a>
|
||||
<a href="https://www.pagerduty.com/"><img src="docs/static/pagerduty.png" alt="PagerDuty" height="60px" style="margin-bottom:20px; margin-right:20px;"></a>
|
||||
<a href="https://ntfy.sh/"><img src="docs/static/ntfy.png" alt="ntfy" height="60px" style="margin-bottom:20px; margin-right:20px;"></a>
|
||||
<a href="https://grafana.com/oss/loki/"><img src="docs/static/loki.png" alt="Loki" height="60px" style="margin-bottom:20px; margin-right:20px;"></a>
|
||||
<a href="https://github.com/caronc/apprise/wiki"><img src="docs/static/apprise.png" alt="Apprise" height="60px" style="margin-bottom:20px; margin-right:20px;"></a>
|
||||
<a href="https://www.borgbase.com/?utm_source=borgmatic"><img src="docs/static/borgbase.png" alt="BorgBase" height="60px" style="margin-bottom:20px; margin-right:20px;"></a>
|
||||
|
||||
|
||||
## How-to guides
|
||||
## Getting started
|
||||
|
||||
* [Set up backups with borgmatic](https://torsion.org/borgmatic/docs/how-to/set-up-backups/) ⬅ *Start here!*
|
||||
* [Make per-application backups](https://torsion.org/borgmatic/docs/how-to/make-per-application-backups/)
|
||||
* [Deal with very large backups](https://torsion.org/borgmatic/docs/how-to/deal-with-very-large-backups/)
|
||||
* [Inspect your backups](https://torsion.org/borgmatic/docs/how-to/inspect-your-backups/)
|
||||
* [Monitor your backups](https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/)
|
||||
* [Restore a backup](https://torsion.org/borgmatic/docs/how-to/restore-a-backup/)
|
||||
* [Backup your databases](https://torsion.org/borgmatic/docs/how-to/backup-your-databases/)
|
||||
* [Add preparation and cleanup steps to backups](https://torsion.org/borgmatic/docs/how-to/add-preparation-and-cleanup-steps-to-backups/)
|
||||
* [Upgrade borgmatic](https://torsion.org/borgmatic/docs/how-to/upgrade/)
|
||||
* [Develop on borgmatic](https://torsion.org/borgmatic/docs/how-to/develop-on-borgmatic/)
|
||||
Your first step is to [install and configure
|
||||
borgmatic](https://torsion.org/borgmatic/docs/how-to/set-up-backups/).
|
||||
|
||||
|
||||
## Reference guides
|
||||
|
||||
* [borgmatic configuration reference](https://torsion.org/borgmatic/docs/reference/configuration/)
|
||||
* [borgmatic command-line reference](https://torsion.org/borgmatic/docs/reference/command-line/)
|
||||
For additional documentation, check out the links above (left panel on wide screens)
|
||||
for <a href="https://torsion.org/borgmatic/#documentation">borgmatic how-to and
|
||||
reference guides</a>.
|
||||
|
||||
|
||||
## Hosting providers
|
||||
|
||||
Need somewhere to store your encrypted offsite backups? The following hosting
|
||||
providers include specific support for Borg/borgmatic. Using these links and
|
||||
services helps support borgmatic development and hosting. (These are referral
|
||||
links, but without any tracking scripts or cookies.)
|
||||
Need somewhere to store your encrypted off-site backups? The following hosting
|
||||
providers include specific support for Borg/borgmatic—and fund borgmatic
|
||||
development and hosting when you use these referral links to sign up:
|
||||
|
||||
<ul>
|
||||
<li class="referral"><a href="https://www.rsync.net/cgi-bin/borg.cgi?campaign=borg&adgroup=borgmatic">rsync.net</a>: Cloud Storage provider with full support for borg and any other SSH/SFTP tool</li>
|
||||
<li class="referral"><a href="https://www.borgbase.com/?utm_source=borgmatic">BorgBase</a>: Borg hosting service with support for monitoring, 2FA, and append-only repos</li>
|
||||
<li class="referral"><a href="https://hetzner.cloud/?ref=v9dOJ98Ic9I8">Hetzner</a>: A "storage box" that includes support for Borg</li>
|
||||
</ul>
|
||||
|
||||
Additionally, rsync.net has a compatible storage offering, but does not fund
|
||||
borgmatic development or hosting.
|
||||
|
||||
## Support and contributing
|
||||
|
||||
### Issues
|
||||
|
||||
You've got issues? Or an idea for a feature enhancement? We've got an [issue
|
||||
tracker](https://projects.torsion.org/witten/borgmatic/issues). In order to
|
||||
create a new issue or comment on an issue, you'll need to [login
|
||||
first](https://projects.torsion.org/user/login). Note that you can login with
|
||||
an existing GitHub account if you prefer.
|
||||
Are you experiencing an issue with borgmatic? Or do you have an idea for a
|
||||
feature enhancement? Head on over to our [issue
|
||||
tracker](https://projects.torsion.org/borgmatic-collective/borgmatic/issues).
|
||||
In order to create a new issue or add a comment, you'll need to
|
||||
[register](https://projects.torsion.org/user/sign_up?invite_code=borgmatic)
|
||||
first. If you prefer to use an existing GitHub account, you can skip account
|
||||
creation and [login directly](https://projects.torsion.org/user/login).
|
||||
|
||||
If you'd like to chat with borgmatic developers or users, head on over to the
|
||||
`#borgmatic` IRC channel on Freenode, either via <a
|
||||
href="https://webchat.freenode.net/?channels=borgmatic">web chat</a> or a
|
||||
native <a href="irc://chat.freenode.net:6697">IRC client</a>.
|
||||
Also see the [security
|
||||
policy](https://torsion.org/borgmatic/docs/security-policy/) for any security
|
||||
issues.
|
||||
|
||||
Other questions or comments? Contact <mailto:witten@torsion.org>.
|
||||
|
||||
### Social
|
||||
|
||||
Follow [borgmatic on Mastodon](https://fosstodon.org/@borgmatic).
|
||||
|
||||
|
||||
### Chat
|
||||
|
||||
To chat with borgmatic developers or users, check out the `#borgmatic`
|
||||
IRC channel on Libera Chat, either via <a
|
||||
href="https://web.libera.chat/#borgmatic">web chat</a> or a native <a
|
||||
href="ircs://irc.libera.chat:6697">IRC client</a>. If you don't get a response
|
||||
right away, please hang around a while—or file a ticket instead.
|
||||
|
||||
|
||||
### Other
|
||||
|
||||
Other questions or comments? Contact
|
||||
[witten@torsion.org](mailto:witten@torsion.org).
|
||||
|
||||
|
||||
### Contributing
|
||||
|
||||
borgmatic [source code is
|
||||
available](https://projects.torsion.org/borgmatic-collective/borgmatic) and is also mirrored
|
||||
on [GitHub](https://github.com/borgmatic-collective/borgmatic) for convenience.
|
||||
|
||||
borgmatic is licensed under the GNU General Public License version 3 or any
|
||||
later version.
|
||||
|
||||
If you'd like to contribute to borgmatic development, please feel free to
|
||||
submit a [Pull Request](https://projects.torsion.org/witten/borgmatic/pulls)
|
||||
or open an [issue](https://projects.torsion.org/witten/borgmatic/issues) first
|
||||
to discuss your idea. We also accept Pull Requests on GitHub, if that's more
|
||||
your thing. In general, contributions are very welcome. We don't bite!
|
||||
submit a [Pull
|
||||
Request](https://projects.torsion.org/borgmatic-collective/borgmatic/pulls) or
|
||||
open an
|
||||
[issue](https://projects.torsion.org/borgmatic-collective/borgmatic/issues) to
|
||||
discuss your idea. Note that you'll need to
|
||||
[register](https://projects.torsion.org/user/sign_up?invite_code=borgmatic)
|
||||
first. We also accept Pull Requests on GitHub, if that's more your thing. In
|
||||
general, contributions are very welcome. We don't bite!
|
||||
|
||||
Also, please check out the [borgmatic development
|
||||
how-to](https://torsion.org/borgmatic/docs/how-to/develop-on-borgmatic/) for
|
||||
info on cloning source code, running tests, etc.
|
||||
|
||||
<a href="https://build.torsion.org/borgmatic-collective/borgmatic" alt="build status"></a>
|
||||
|
||||
|
|
|
|||
18
SECURITY.md
Normal file
18
SECURITY.md
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
---
|
||||
title: Security policy
|
||||
permalink: security-policy/index.html
|
||||
---
|
||||
|
||||
## Supported versions
|
||||
|
||||
While we want to hear about security vulnerabilities in all versions of
|
||||
borgmatic, security fixes are only made to the most recently released version.
|
||||
It's not practical for our small volunteer effort to maintain multiple release
|
||||
branches and put out separate security patches for each.
|
||||
|
||||
## Reporting a vulnerability
|
||||
|
||||
If you find a security vulnerability, please [file a
|
||||
ticket](https://torsion.org/borgmatic/#issues) or [send email
|
||||
directly](mailto:witten@torsion.org) as appropriate. You should expect to hear
|
||||
back within a few days at most and generally sooner.
|
||||
0
borgmatic/actions/__init__.py
Normal file
0
borgmatic/actions/__init__.py
Normal file
9
borgmatic/actions/arguments.py
Normal file
9
borgmatic/actions/arguments.py
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
import argparse
|
||||
|
||||
|
||||
def update_arguments(arguments, **updates):
|
||||
'''
|
||||
Given an argparse.Namespace instance of command-line arguments and one or more keyword argument
|
||||
updates to perform, return a copy of the arguments with those updates applied.
|
||||
'''
|
||||
return argparse.Namespace(**dict(vars(arguments), **updates))
|
||||
45
borgmatic/actions/borg.py
Normal file
45
borgmatic/actions/borg.py
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
import logging
|
||||
|
||||
import borgmatic.borg.borg
|
||||
import borgmatic.borg.rlist
|
||||
import borgmatic.config.validate
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def run_borg(
|
||||
repository,
|
||||
config,
|
||||
local_borg_version,
|
||||
borg_arguments,
|
||||
global_arguments,
|
||||
local_path,
|
||||
remote_path,
|
||||
):
|
||||
'''
|
||||
Run the "borg" action for the given repository.
|
||||
'''
|
||||
if borg_arguments.repository is None or borgmatic.config.validate.repositories_match(
|
||||
repository, borg_arguments.repository
|
||||
):
|
||||
logger.info(
|
||||
f'{repository.get("label", repository["path"])}: Running arbitrary Borg command'
|
||||
)
|
||||
archive_name = borgmatic.borg.rlist.resolve_archive_name(
|
||||
repository['path'],
|
||||
borg_arguments.archive,
|
||||
config,
|
||||
local_borg_version,
|
||||
global_arguments,
|
||||
local_path,
|
||||
remote_path,
|
||||
)
|
||||
borgmatic.borg.borg.run_arbitrary_borg(
|
||||
repository['path'],
|
||||
config,
|
||||
local_borg_version,
|
||||
options=borg_arguments.options,
|
||||
archive=archive_name,
|
||||
local_path=local_path,
|
||||
remote_path=remote_path,
|
||||
)
|
||||
34
borgmatic/actions/break_lock.py
Normal file
34
borgmatic/actions/break_lock.py
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
import logging
|
||||
|
||||
import borgmatic.borg.break_lock
|
||||
import borgmatic.config.validate
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def run_break_lock(
|
||||
repository,
|
||||
config,
|
||||
local_borg_version,
|
||||
break_lock_arguments,
|
||||
global_arguments,
|
||||
local_path,
|
||||
remote_path,
|
||||
):
|
||||
'''
|
||||
Run the "break-lock" action for the given repository.
|
||||
'''
|
||||
if break_lock_arguments.repository is None or borgmatic.config.validate.repositories_match(
|
||||
repository, break_lock_arguments.repository
|
||||
):
|
||||
logger.info(
|
||||
f'{repository.get("label", repository["path"])}: Breaking repository and cache locks'
|
||||
)
|
||||
borgmatic.borg.break_lock.break_lock(
|
||||
repository['path'],
|
||||
config,
|
||||
local_borg_version,
|
||||
global_arguments,
|
||||
local_path=local_path,
|
||||
remote_path=remote_path,
|
||||
)
|
||||
54
borgmatic/actions/check.py
Normal file
54
borgmatic/actions/check.py
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
import logging
|
||||
|
||||
import borgmatic.borg.check
|
||||
import borgmatic.config.validate
|
||||
import borgmatic.hooks.command
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def run_check(
|
||||
config_filename,
|
||||
repository,
|
||||
config,
|
||||
hook_context,
|
||||
local_borg_version,
|
||||
check_arguments,
|
||||
global_arguments,
|
||||
local_path,
|
||||
remote_path,
|
||||
):
|
||||
'''
|
||||
Run the "check" action for the given repository.
|
||||
'''
|
||||
if check_arguments.repository and not borgmatic.config.validate.repositories_match(
|
||||
repository, check_arguments.repository
|
||||
):
|
||||
return
|
||||
|
||||
borgmatic.hooks.command.execute_hook(
|
||||
config.get('before_check'),
|
||||
config.get('umask'),
|
||||
config_filename,
|
||||
'pre-check',
|
||||
global_arguments.dry_run,
|
||||
**hook_context,
|
||||
)
|
||||
logger.info(f'{repository.get("label", repository["path"])}: Running consistency checks')
|
||||
borgmatic.borg.check.check_archives(
|
||||
repository['path'],
|
||||
config,
|
||||
local_borg_version,
|
||||
check_arguments,
|
||||
global_arguments,
|
||||
local_path=local_path,
|
||||
remote_path=remote_path,
|
||||
)
|
||||
borgmatic.hooks.command.execute_hook(
|
||||
config.get('after_check'),
|
||||
config.get('umask'),
|
||||
config_filename,
|
||||
'post-check',
|
||||
global_arguments.dry_run,
|
||||
**hook_context,
|
||||
)
|
||||
66
borgmatic/actions/compact.py
Normal file
66
borgmatic/actions/compact.py
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
import logging
|
||||
|
||||
import borgmatic.borg.compact
|
||||
import borgmatic.borg.feature
|
||||
import borgmatic.config.validate
|
||||
import borgmatic.hooks.command
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def run_compact(
|
||||
config_filename,
|
||||
repository,
|
||||
config,
|
||||
hook_context,
|
||||
local_borg_version,
|
||||
compact_arguments,
|
||||
global_arguments,
|
||||
dry_run_label,
|
||||
local_path,
|
||||
remote_path,
|
||||
):
|
||||
'''
|
||||
Run the "compact" action for the given repository.
|
||||
'''
|
||||
if compact_arguments.repository and not borgmatic.config.validate.repositories_match(
|
||||
repository, compact_arguments.repository
|
||||
):
|
||||
return
|
||||
|
||||
borgmatic.hooks.command.execute_hook(
|
||||
config.get('before_compact'),
|
||||
config.get('umask'),
|
||||
config_filename,
|
||||
'pre-compact',
|
||||
global_arguments.dry_run,
|
||||
**hook_context,
|
||||
)
|
||||
if borgmatic.borg.feature.available(borgmatic.borg.feature.Feature.COMPACT, local_borg_version):
|
||||
logger.info(
|
||||
f'{repository.get("label", repository["path"])}: Compacting segments{dry_run_label}'
|
||||
)
|
||||
borgmatic.borg.compact.compact_segments(
|
||||
global_arguments.dry_run,
|
||||
repository['path'],
|
||||
config,
|
||||
local_borg_version,
|
||||
global_arguments,
|
||||
local_path=local_path,
|
||||
remote_path=remote_path,
|
||||
progress=compact_arguments.progress,
|
||||
cleanup_commits=compact_arguments.cleanup_commits,
|
||||
threshold=compact_arguments.threshold,
|
||||
)
|
||||
else: # pragma: nocover
|
||||
logger.info(
|
||||
f'{repository.get("label", repository["path"])}: Skipping compact (only available/needed in Borg 1.2+)'
|
||||
)
|
||||
borgmatic.hooks.command.execute_hook(
|
||||
config.get('after_compact'),
|
||||
config.get('umask'),
|
||||
config_filename,
|
||||
'post-compact',
|
||||
global_arguments.dry_run,
|
||||
**hook_context,
|
||||
)
|
||||
0
borgmatic/actions/config/__init__.py
Normal file
0
borgmatic/actions/config/__init__.py
Normal file
103
borgmatic/actions/config/bootstrap.py
Normal file
103
borgmatic/actions/config/bootstrap.py
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
import json
|
||||
import logging
|
||||
import os
|
||||
|
||||
import borgmatic.borg.extract
|
||||
import borgmatic.borg.rlist
|
||||
import borgmatic.config.validate
|
||||
import borgmatic.hooks.command
|
||||
from borgmatic.borg.state import DEFAULT_BORGMATIC_SOURCE_DIRECTORY
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def get_config_paths(bootstrap_arguments, global_arguments, local_borg_version):
|
||||
'''
|
||||
Given:
|
||||
The bootstrap arguments, which include the repository and archive name, borgmatic source directory,
|
||||
destination directory, and whether to strip components.
|
||||
The global arguments, which include the dry run flag
|
||||
and the local borg version,
|
||||
Return:
|
||||
The config paths from the manifest.json file in the borgmatic source directory after extracting it from the
|
||||
repository.
|
||||
|
||||
Raise ValueError if the manifest JSON is missing, can't be decoded, or doesn't contain the
|
||||
expected configuration path data.
|
||||
'''
|
||||
borgmatic_source_directory = (
|
||||
bootstrap_arguments.borgmatic_source_directory or DEFAULT_BORGMATIC_SOURCE_DIRECTORY
|
||||
)
|
||||
borgmatic_manifest_path = os.path.expanduser(
|
||||
os.path.join(borgmatic_source_directory, 'bootstrap', 'manifest.json')
|
||||
)
|
||||
extract_process = borgmatic.borg.extract.extract_archive(
|
||||
global_arguments.dry_run,
|
||||
bootstrap_arguments.repository,
|
||||
borgmatic.borg.rlist.resolve_archive_name(
|
||||
bootstrap_arguments.repository,
|
||||
bootstrap_arguments.archive,
|
||||
{},
|
||||
local_borg_version,
|
||||
global_arguments,
|
||||
),
|
||||
[borgmatic_manifest_path],
|
||||
{},
|
||||
local_borg_version,
|
||||
global_arguments,
|
||||
extract_to_stdout=True,
|
||||
)
|
||||
|
||||
manifest_json = extract_process.stdout.read()
|
||||
if not manifest_json:
|
||||
raise ValueError(
|
||||
'Cannot read configuration paths from archive due to missing bootstrap manifest'
|
||||
)
|
||||
|
||||
try:
|
||||
manifest_data = json.loads(manifest_json)
|
||||
except json.JSONDecodeError as error:
|
||||
raise ValueError(
|
||||
f'Cannot read configuration paths from archive due to invalid bootstrap manifest JSON: {error}'
|
||||
)
|
||||
|
||||
try:
|
||||
return manifest_data['config_paths']
|
||||
except KeyError:
|
||||
raise ValueError(
|
||||
'Cannot read configuration paths from archive due to invalid bootstrap manifest'
|
||||
)
|
||||
|
||||
|
||||
def run_bootstrap(bootstrap_arguments, global_arguments, local_borg_version):
|
||||
'''
|
||||
Run the "bootstrap" action for the given repository.
|
||||