dar-backup 0.8.3__tar.gz → 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. {dar_backup-0.8.3 → dar_backup-1.0.0}/.gitignore +2 -0
  2. {dar_backup-0.8.3/src/dar_backup → dar_backup-1.0.0}/Changelog.md +19 -0
  3. {dar_backup-0.8.3 → dar_backup-1.0.0}/PKG-INFO +37 -19
  4. {dar_backup-0.8.3 → dar_backup-1.0.0}/README.md +36 -18
  5. {dar_backup-0.8.3 → dar_backup-1.0.0}/doc/badges/badge_clones.json +1 -1
  6. dar_backup-1.0.0/doc/badges/milestone_2000.txt +1 -0
  7. dar_backup-1.0.0/doc/badges/milestone_badge.json +6 -0
  8. {dar_backup-0.8.3 → dar_backup-1.0.0}/doc/clones.json +245 -25
  9. dar_backup-1.0.0/doc/dar-backup-overview-small.png +0 -0
  10. dar_backup-1.0.0/doc/dar-backup-overview.png +0 -0
  11. dar_backup-1.0.0/doc/dar-backup-overview.svg +1150 -0
  12. {dar_backup-0.8.3 → dar_backup-1.0.0}/doc/dev.md +1 -1
  13. dar_backup-1.0.0/doc/weekly_clones.png +0 -0
  14. {dar_backup-0.8.3 → dar_backup-1.0.0/src/dar_backup}/Changelog.md +19 -0
  15. {dar_backup-0.8.3 → dar_backup-1.0.0}/src/dar_backup/README.md +36 -18
  16. {dar_backup-0.8.3 → dar_backup-1.0.0}/src/dar_backup/__about__.py +1 -1
  17. {dar_backup-0.8.3 → dar_backup-1.0.0}/src/dar_backup/dar_backup.py +3 -1
  18. dar_backup-0.8.3/doc/badges/milestone_badge.json +0 -6
  19. dar_backup-0.8.3/doc/weekly_clones.png +0 -0
  20. {dar_backup-0.8.3 → dar_backup-1.0.0}/LICENSE +0 -0
  21. {dar_backup-0.8.3 → dar_backup-1.0.0}/doc/badges/README.md +0 -0
  22. {dar_backup-0.8.3 → dar_backup-1.0.0}/doc/badges/milestone_1000.txt +0 -0
  23. {dar_backup-0.8.3 → dar_backup-1.0.0}/doc/badges/milestone_500.txt +0 -0
  24. {dar_backup-0.8.3 → dar_backup-1.0.0}/doc/doc.md +0 -0
  25. {dar_backup-0.8.3 → dar_backup-1.0.0}/packages/deb/README.md +0 -0
  26. {dar_backup-0.8.3 → dar_backup-1.0.0}/pyproject.toml +0 -0
  27. {dar_backup-0.8.3 → dar_backup-1.0.0}/src/dar_backup/.darrc +0 -0
  28. {dar_backup-0.8.3 → dar_backup-1.0.0}/src/dar_backup/__init__.py +0 -0
  29. {dar_backup-0.8.3 → dar_backup-1.0.0}/src/dar_backup/clean_log.py +0 -0
  30. {dar_backup-0.8.3 → dar_backup-1.0.0}/src/dar_backup/cleanup.py +0 -0
  31. {dar_backup-0.8.3 → dar_backup-1.0.0}/src/dar_backup/command_runner.py +0 -0
  32. {dar_backup-0.8.3 → dar_backup-1.0.0}/src/dar_backup/config_settings.py +0 -0
  33. {dar_backup-0.8.3 → dar_backup-1.0.0}/src/dar_backup/dar-backup.conf +0 -0
  34. {dar_backup-0.8.3 → dar_backup-1.0.0}/src/dar_backup/dar-backup.conf.j2 +0 -0
  35. {dar_backup-0.8.3 → dar_backup-1.0.0}/src/dar_backup/dar_backup_systemd.py +0 -0
  36. {dar_backup-0.8.3 → dar_backup-1.0.0}/src/dar_backup/demo.py +0 -0
  37. {dar_backup-0.8.3 → dar_backup-1.0.0}/src/dar_backup/demo_backup_def.j2 +0 -0
  38. {dar_backup-0.8.3 → dar_backup-1.0.0}/src/dar_backup/exceptions.py +0 -0
  39. {dar_backup-0.8.3 → dar_backup-1.0.0}/src/dar_backup/installer.py +0 -0
  40. {dar_backup-0.8.3 → dar_backup-1.0.0}/src/dar_backup/manager.py +0 -0
  41. {dar_backup-0.8.3 → dar_backup-1.0.0}/src/dar_backup/rich_progress.py +0 -0
  42. {dar_backup-0.8.3 → dar_backup-1.0.0}/src/dar_backup/util.py +0 -0
  43. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/SecretStorage-3.3.3.dist-info/LICENSE +0 -0
  44. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/LICENSE +0 -0
  45. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/black-25.1.0.dist-info/licenses/LICENSE +0 -0
  46. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/blib2to3/LICENSE +0 -0
  47. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/build-1.2.2.post1.dist-info/LICENSE +0 -0
  48. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/licenses/LICENSE +0 -0
  49. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/LICENSE +0 -0
  50. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/charset_normalizer-3.4.2.dist-info/licenses/LICENSE +0 -0
  51. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/contourpy-1.3.2.dist-info/LICENSE +0 -0
  52. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/cryptography-45.0.3.dist-info/licenses/LICENSE +0 -0
  53. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/cycler-0.12.1.dist-info/LICENSE +0 -0
  54. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/dar_backup-0.8.2.dist-info/licenses/LICENSE +0 -0
  55. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/filelock-3.18.0.dist-info/licenses/LICENSE +0 -0
  56. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/fonttools-4.58.2.dist-info/licenses/LICENSE +0 -0
  57. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/hyperlink-21.0.0.dist-info/LICENSE +0 -0
  58. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/id-1.5.0.dist-info/LICENSE +0 -0
  59. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/iniconfig-2.1.0.dist-info/licenses/LICENSE +0 -0
  60. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/jaraco.classes-3.4.0.dist-info/LICENSE +0 -0
  61. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/jaraco.context-6.0.1.dist-info/LICENSE +0 -0
  62. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/jaraco.functools-4.1.0.dist-info/LICENSE +0 -0
  63. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/jeepney-0.9.0.dist-info/licenses/LICENSE +0 -0
  64. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/keyring-25.6.0.dist-info/LICENSE +0 -0
  65. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/kiwisolver-1.4.8.dist-info/LICENSE +0 -0
  66. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/markdown_it_py-3.0.0.dist-info/LICENSE +0 -0
  67. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/matplotlib-3.10.3.dist-info/LICENSE +0 -0
  68. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/mdurl-0.1.2.dist-info/LICENSE +0 -0
  69. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/more_itertools-10.7.0.dist-info/LICENSE +0 -0
  70. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/mypy_extensions-1.1.0.dist-info/licenses/LICENSE +0 -0
  71. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/nh3-0.2.21.dist-info/licenses/LICENSE +0 -0
  72. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/numpy/ma/LICENSE +0 -0
  73. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/packaging-25.0.dist-info/licenses/LICENSE +0 -0
  74. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/pandas-2.3.0.dist-info/LICENSE +0 -0
  75. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/pathspec-0.12.1.dist-info/LICENSE +0 -0
  76. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/pexpect-4.9.0.dist-info/LICENSE +0 -0
  77. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/pillow-11.2.1.dist-info/licenses/LICENSE +0 -0
  78. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/platformdirs-4.3.8.dist-info/licenses/LICENSE +0 -0
  79. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/pluggy-1.6.0.dist-info/licenses/LICENSE +0 -0
  80. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/psutil-7.0.0.dist-info/LICENSE +0 -0
  81. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/ptyprocess-0.7.0.dist-info/LICENSE +0 -0
  82. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/pycparser-2.22.dist-info/LICENSE +0 -0
  83. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/pygments-2.19.1.dist-info/licenses/LICENSE +0 -0
  84. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/pyparsing-3.2.3.dist-info/LICENSE +0 -0
  85. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/pyproject_hooks-1.2.0.dist-info/LICENSE +0 -0
  86. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/pytest-8.4.0.dist-info/licenses/LICENSE +0 -0
  87. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/pytest_cov-6.1.1.dist-info/licenses/LICENSE +0 -0
  88. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/pytest_timeout-2.4.0.dist-info/licenses/LICENSE +0 -0
  89. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/python_dateutil-2.9.0.post0.dist-info/LICENSE +0 -0
  90. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/readme_renderer-44.0.dist-info/LICENSE +0 -0
  91. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/requests-2.32.3.dist-info/LICENSE +0 -0
  92. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/requests_toolbelt-1.0.0.dist-info/LICENSE +0 -0
  93. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/rfc3986-2.0.0.dist-info/LICENSE +0 -0
  94. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/rich-14.0.0.dist-info/LICENSE +0 -0
  95. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/shellingham-1.5.4.dist-info/LICENSE +0 -0
  96. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/six-1.17.0.dist-info/LICENSE +0 -0
  97. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/LICENSE +0 -0
  98. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/tomli_w-1.2.0.dist-info/LICENSE +0 -0
  99. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/tomlkit-0.13.2.dist-info/LICENSE +0 -0
  100. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/trove_classifiers-2025.5.9.12.dist-info/licenses/LICENSE +0 -0
  101. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/twine-6.1.0.dist-info/LICENSE +0 -0
  102. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/typing_extensions-4.14.0.dist-info/licenses/LICENSE +0 -0
  103. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/tzdata-2025.2.dist-info/licenses/LICENSE +0 -0
  104. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/virtualenv-20.31.2.dist-info/licenses/LICENSE +0 -0
  105. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/wheel/vendored/packaging/LICENSE +0 -0
  106. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/zipp-3.22.0.dist-info/licenses/LICENSE +0 -0
  107. {dar_backup-0.8.3 → dar_backup-1.0.0}/venv/lib/python3.12/site-packages/zstandard-0.23.0.dist-info/LICENSE +0 -0
@@ -18,3 +18,5 @@ v2/build
18
18
  v2/.coverage
19
19
  v2/dar-backup.tar
20
20
  v2/coverage.xml
21
+ v2/packages/*
22
+ v2/.coverage.*.*.*.*
@@ -1,6 +1,25 @@
1
1
  <!-- markdownlint-disable MD024 -->
2
2
  # dar-backup Changelog
3
3
 
4
+ ## v2-1.0.0 - 2025-10-09
5
+
6
+ Github link: [v2-1.0.0](https://github.com/per2jensen/dar-backup/tree/v2-1.0.0/v2)
7
+
8
+ ### Added
9
+
10
+ - Version 2 **1.0.0** declared
11
+ - A bunch of test cases
12
+ - Codecov config changes
13
+
14
+ ## v2-beta-0.8.4 - 2025-08-23
15
+
16
+ Github link: [v2-beta-0.8.4](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.8.4/v2)
17
+
18
+ ### Added
19
+
20
+ - Option '-D' only added when restoring FULL backups.
21
+ - A test case on [my dar-backup-image repo](https://github.com/per2jensen/dar-backup-image) does not delete a lone file in a directory if -D is used restoring from a DIFF.
22
+
4
23
  ## v2-beta-0.8.3 - 2025-08-23
5
24
 
6
25
  Github link: [v2-beta-0.8.3](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.8.3/v2)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dar-backup
3
- Version: 0.8.3
3
+ Version: 1.0.0
4
4
  Summary: A script to do full, differential and incremental backups using dar. Some files are restored from the backups during verification, after which par2 redundancy files are created. The script also has a cleanup feature to remove old backups and par2 files.
5
5
  Project-URL: GPG Public Key, https://keys.openpgp.org/search?q=dar-backup@pm.me
6
6
  Project-URL: Homepage, https://github.com/per2jensen/dar-backup/tree/main/v2
@@ -738,6 +738,8 @@ This is the `Python` based [**version 2**](https://github.com/per2jensen/dar-bac
738
738
 
739
739
  `dar-backup` is a Python-powered CLI for creating and validating full, differential, and incremental backups using `dar` and `par2`. Designed for long-term restore integrity, even on user-space filesystems like FUSE.
740
740
 
741
+ Version **1.0.0** was reached on October 9, 2025.
742
+
741
743
  ## Table of Contents
742
744
 
743
745
  - [`dar-backup`](#dar-backup)
@@ -754,6 +756,7 @@ This is the `Python` based [**version 2**](https://github.com/per2jensen/dar-bac
754
756
  - [Community](#community)
755
757
  - [Requirements](#requirements)
756
758
  - [dar-backup principles](#dar-backup-principles)
759
+ - [dar-backup overview](#dar-backup-overview)
757
760
  - [dar-backup](#dar-backup-1)
758
761
  - [cleanup](#cleanup)
759
762
  - [manager](#manager)
@@ -1091,11 +1094,15 @@ PAR2 enabled: True
1091
1094
  > Checkout the [reference section](#reference)
1092
1095
 
1093
1096
  ## Status
1097
+ **1.0.0 milestone reached**
1094
1098
 
1095
- As of August 8, 2024 I am using the alpha versions of `dar-backup` (alpha-0.5.9 onwards) in my automated backup routine.
1099
+ October 9, 2025, I have promoted version 0.8.4 --> **1.0.0** after having added more test cases and seen no issues with 0.8.4.
1096
1100
 
1097
1101
  As of February 13, 2025, I have changed the status from alpha --> beta, as the featureset is in place and the alphas have worked well for a very long time.
1098
1102
 
1103
+ As of August 8, 2024 I am using the alpha versions of `dar-backup` (alpha-0.5.9 onwards) in my automated backup routine.
1104
+
1105
+
1099
1106
  ### GPG Signing key
1100
1107
 
1101
1108
  To increase the security and authenticity of dar-backup packages, all releases from v2-beta-0.6.18 onwards will be digitally signed using the GPG key below.
@@ -1225,6 +1232,10 @@ On Ubuntu, install the requirements this way:
1225
1232
 
1226
1233
  ## dar-backup principles
1227
1234
 
1235
+ ### dar-backup overview
1236
+
1237
+ ![dar-backup overview](https://github.com/per2jensen/dar-backup/blob/main/v2/doc/dar-backup-overview.svg)
1238
+
1228
1239
  ### dar-backup
1229
1240
 
1230
1241
  `dar-backup` is built in a way that emphasizes getting backups. It loops over the [backup definitions](#backup-definition-example), and in the event of a failure while backing up a backup definition, dar-backup shall log an error and start working on the next backup definition.
@@ -2316,25 +2327,32 @@ Running
2316
2327
  pytest --cov=dar_backup tests/
2317
2328
  ```
2318
2329
 
2319
- Results for a version 0.6.19 in this report:
2330
+ Results for version 1.0.0 in this report:
2320
2331
 
2321
2332
  ```text
2322
- Name Stmts Miss Cover
2323
- ----------------------------------------------------------
2324
- src/dar_backup/__about__.py 1 0 100%
2325
- src/dar_backup/__init__.py 0 0 100%
2326
- src/dar_backup/clean_log.py 68 13 81%
2327
- src/dar_backup/cleanup.py 196 17 91%
2328
- src/dar_backup/command_runner.py 80 3 96%
2329
- src/dar_backup/config_settings.py 66 7 89%
2330
- src/dar_backup/dar_backup.py 539 56 90%
2331
- src/dar_backup/dar_backup_systemd.py 56 7 88%
2332
- src/dar_backup/installer.py 59 6 90%
2333
- src/dar_backup/manager.py 403 54 87%
2334
- src/dar_backup/rich_progress.py 70 7 90%
2335
- src/dar_backup/util.py 231 24 90%
2336
- ----------------------------------------------------------
2337
- TOTAL 1769 194 89%
2333
+ ====================================== tests coverage ======================================
2334
+ _____________________ coverage: platform linux, python 3.12.3-final-0 ______________________
2335
+
2336
+ Name Stmts Miss Branch BrPart Cover
2337
+ ------------------------------------------------------------------------
2338
+ src/dar_backup/__about__.py 2 0 0 0 100%
2339
+ src/dar_backup/__init__.py 0 0 0 0 100%
2340
+ src/dar_backup/clean_log.py 76 15 40 7 81%
2341
+ src/dar_backup/cleanup.py 203 16 66 7 91%
2342
+ src/dar_backup/command_runner.py 129 16 26 5 86%
2343
+ src/dar_backup/config_settings.py 73 3 18 1 96%
2344
+ src/dar_backup/dar_backup.py 551 28 180 21 93%
2345
+ src/dar_backup/dar_backup_systemd.py 56 7 10 2 86%
2346
+ src/dar_backup/demo.py 92 20 26 6 75%
2347
+ src/dar_backup/exceptions.py 2 0 0 0 100%
2348
+ src/dar_backup/installer.py 107 14 46 9 82%
2349
+ src/dar_backup/manager.py 427 42 152 15 90%
2350
+ src/dar_backup/rich_progress.py 70 7 30 4 89%
2351
+ src/dar_backup/util.py 339 41 88 21 85%
2352
+ ------------------------------------------------------------------------
2353
+ TOTAL 2127 209 682 98 89%
2354
+ Coverage XML written to file coverage.xml
2355
+ ======================== 257 passed, 1 skipped in 223.21s (0:03:43) ========================
2338
2356
  ```
2339
2357
 
2340
2358
  ### Dar-backup options
@@ -20,6 +20,8 @@ This is the `Python` based [**version 2**](https://github.com/per2jensen/dar-bac
20
20
 
21
21
  `dar-backup` is a Python-powered CLI for creating and validating full, differential, and incremental backups using `dar` and `par2`. Designed for long-term restore integrity, even on user-space filesystems like FUSE.
22
22
 
23
+ Version **1.0.0** was reached on October 9, 2025.
24
+
23
25
  ## Table of Contents
24
26
 
25
27
  - [`dar-backup`](#dar-backup)
@@ -36,6 +38,7 @@ This is the `Python` based [**version 2**](https://github.com/per2jensen/dar-bac
36
38
  - [Community](#community)
37
39
  - [Requirements](#requirements)
38
40
  - [dar-backup principles](#dar-backup-principles)
41
+ - [dar-backup overview](#dar-backup-overview)
39
42
  - [dar-backup](#dar-backup-1)
40
43
  - [cleanup](#cleanup)
41
44
  - [manager](#manager)
@@ -373,11 +376,15 @@ PAR2 enabled: True
373
376
  > Checkout the [reference section](#reference)
374
377
 
375
378
  ## Status
379
+ **1.0.0 milestone reached**
376
380
 
377
- As of August 8, 2024 I am using the alpha versions of `dar-backup` (alpha-0.5.9 onwards) in my automated backup routine.
381
+ October 9, 2025, I have promoted version 0.8.4 --> **1.0.0** after having added more test cases and seen no issues with 0.8.4.
378
382
 
379
383
  As of February 13, 2025, I have changed the status from alpha --> beta, as the featureset is in place and the alphas have worked well for a very long time.
380
384
 
385
+ As of August 8, 2024 I am using the alpha versions of `dar-backup` (alpha-0.5.9 onwards) in my automated backup routine.
386
+
387
+
381
388
  ### GPG Signing key
382
389
 
383
390
  To increase the security and authenticity of dar-backup packages, all releases from v2-beta-0.6.18 onwards will be digitally signed using the GPG key below.
@@ -507,6 +514,10 @@ On Ubuntu, install the requirements this way:
507
514
 
508
515
  ## dar-backup principles
509
516
 
517
+ ### dar-backup overview
518
+
519
+ ![dar-backup overview](https://github.com/per2jensen/dar-backup/blob/main/v2/doc/dar-backup-overview.svg)
520
+
510
521
  ### dar-backup
511
522
 
512
523
  `dar-backup` is built in a way that emphasizes getting backups. It loops over the [backup definitions](#backup-definition-example), and in the event of a failure while backing up a backup definition, dar-backup shall log an error and start working on the next backup definition.
@@ -1598,25 +1609,32 @@ Running
1598
1609
  pytest --cov=dar_backup tests/
1599
1610
  ```
1600
1611
 
1601
- Results for a version 0.6.19 in this report:
1612
+ Results for version 1.0.0 in this report:
1602
1613
 
1603
1614
  ```text
1604
- Name Stmts Miss Cover
1605
- ----------------------------------------------------------
1606
- src/dar_backup/__about__.py 1 0 100%
1607
- src/dar_backup/__init__.py 0 0 100%
1608
- src/dar_backup/clean_log.py 68 13 81%
1609
- src/dar_backup/cleanup.py 196 17 91%
1610
- src/dar_backup/command_runner.py 80 3 96%
1611
- src/dar_backup/config_settings.py 66 7 89%
1612
- src/dar_backup/dar_backup.py 539 56 90%
1613
- src/dar_backup/dar_backup_systemd.py 56 7 88%
1614
- src/dar_backup/installer.py 59 6 90%
1615
- src/dar_backup/manager.py 403 54 87%
1616
- src/dar_backup/rich_progress.py 70 7 90%
1617
- src/dar_backup/util.py 231 24 90%
1618
- ----------------------------------------------------------
1619
- TOTAL 1769 194 89%
1615
+ ====================================== tests coverage ======================================
1616
+ _____________________ coverage: platform linux, python 3.12.3-final-0 ______________________
1617
+
1618
+ Name Stmts Miss Branch BrPart Cover
1619
+ ------------------------------------------------------------------------
1620
+ src/dar_backup/__about__.py 2 0 0 0 100%
1621
+ src/dar_backup/__init__.py 0 0 0 0 100%
1622
+ src/dar_backup/clean_log.py 76 15 40 7 81%
1623
+ src/dar_backup/cleanup.py 203 16 66 7 91%
1624
+ src/dar_backup/command_runner.py 129 16 26 5 86%
1625
+ src/dar_backup/config_settings.py 73 3 18 1 96%
1626
+ src/dar_backup/dar_backup.py 551 28 180 21 93%
1627
+ src/dar_backup/dar_backup_systemd.py 56 7 10 2 86%
1628
+ src/dar_backup/demo.py 92 20 26 6 75%
1629
+ src/dar_backup/exceptions.py 2 0 0 0 100%
1630
+ src/dar_backup/installer.py 107 14 46 9 82%
1631
+ src/dar_backup/manager.py 427 42 152 15 90%
1632
+ src/dar_backup/rich_progress.py 70 7 30 4 89%
1633
+ src/dar_backup/util.py 339 41 88 21 85%
1634
+ ------------------------------------------------------------------------
1635
+ TOTAL 2127 209 682 98 89%
1636
+ Coverage XML written to file coverage.xml
1637
+ ======================== 257 passed, 1 skipped in 223.21s (0:03:43) ========================
1620
1638
  ```
1621
1639
 
1622
1640
  ### Dar-backup options
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "label": "# clones",
4
- "message": "1820",
4
+ "message": "2485",
5
5
  "color": "deeppink"
6
6
  }
@@ -0,0 +1 @@
1
+ Reached 2000 clones on 2025-09-02T02:45:11.709965+00:00Z
@@ -0,0 +1,6 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "label": "Milestone",
4
+ "message": "2000 clones \ud83c\udf89\ud83c\udf89\ud83c\udf89",
5
+ "color": "red"
6
+ }
@@ -17,8 +17,8 @@
17
17
  "label": "Daily max: 124"
18
18
  }
19
19
  ],
20
- "total_clones": 1820,
21
- "unique_clones": 1101,
20
+ "total_clones": 2485,
21
+ "unique_clones": 1504,
22
22
  "daily": [
23
23
  {
24
24
  "timestamp": "2025-05-04T00:00:00Z",
@@ -512,68 +512,288 @@
512
512
  },
513
513
  {
514
514
  "timestamp": "2025-08-10T00:00:00Z",
515
- "count": 14,
516
- "uniques": 11
515
+ "count": 7,
516
+ "uniques": 7
517
517
  },
518
518
  {
519
519
  "timestamp": "2025-08-11T00:00:00Z",
520
- "count": 17,
521
- "uniques": 11
520
+ "count": 9,
521
+ "uniques": 6
522
522
  },
523
523
  {
524
524
  "timestamp": "2025-08-12T00:00:00Z",
525
- "count": 10,
526
- "uniques": 7
525
+ "count": 3,
526
+ "uniques": 3
527
527
  },
528
528
  {
529
529
  "timestamp": "2025-08-13T00:00:00Z",
530
- "count": 12,
531
- "uniques": 8
530
+ "count": 4,
531
+ "uniques": 4
532
532
  },
533
533
  {
534
534
  "timestamp": "2025-08-14T00:00:00Z",
535
- "count": 10,
536
- "uniques": 7
535
+ "count": 2,
536
+ "uniques": 2
537
537
  },
538
538
  {
539
539
  "timestamp": "2025-08-15T00:00:00Z",
540
- "count": 11,
541
- "uniques": 6
540
+ "count": 4,
541
+ "uniques": 2
542
542
  },
543
543
  {
544
544
  "timestamp": "2025-08-16T00:00:00Z",
545
- "count": 12,
546
- "uniques": 9
545
+ "count": 5,
546
+ "uniques": 5
547
547
  },
548
548
  {
549
549
  "timestamp": "2025-08-17T00:00:00Z",
550
- "count": 12,
551
- "uniques": 9
550
+ "count": 5,
551
+ "uniques": 5
552
552
  },
553
553
  {
554
554
  "timestamp": "2025-08-18T00:00:00Z",
555
- "count": 22,
556
- "uniques": 15
555
+ "count": 14,
556
+ "uniques": 11
557
557
  },
558
558
  {
559
559
  "timestamp": "2025-08-19T00:00:00Z",
560
- "count": 10,
561
- "uniques": 7
560
+ "count": 1,
561
+ "uniques": 1
562
562
  },
563
563
  {
564
564
  "timestamp": "2025-08-20T00:00:00Z",
565
- "count": 28,
566
- "uniques": 19
565
+ "count": 20,
566
+ "uniques": 14
567
567
  },
568
568
  {
569
569
  "timestamp": "2025-08-21T00:00:00Z",
570
+ "count": 21,
571
+ "uniques": 13
572
+ },
573
+ {
574
+ "timestamp": "2025-08-22T00:00:00Z",
575
+ "count": 5,
576
+ "uniques": 2
577
+ },
578
+ {
579
+ "timestamp": "2025-08-23T00:00:00Z",
580
+ "count": 64,
581
+ "uniques": 25
582
+ },
583
+ {
584
+ "timestamp": "2025-08-24T00:00:00Z",
585
+ "count": 24,
586
+ "uniques": 14
587
+ },
588
+ {
589
+ "timestamp": "2025-08-25T00:00:00Z",
590
+ "count": 17,
591
+ "uniques": 10
592
+ },
593
+ {
594
+ "timestamp": "2025-08-26T00:00:00Z",
595
+ "count": 10,
596
+ "uniques": 7
597
+ },
598
+ {
599
+ "timestamp": "2025-08-27T00:00:00Z",
600
+ "count": 8,
601
+ "uniques": 6
602
+ },
603
+ {
604
+ "timestamp": "2025-08-28T00:00:00Z",
605
+ "count": 9,
606
+ "uniques": 7
607
+ },
608
+ {
609
+ "timestamp": "2025-08-29T00:00:00Z",
610
+ "count": 11,
611
+ "uniques": 7
612
+ },
613
+ {
614
+ "timestamp": "2025-08-30T00:00:00Z",
615
+ "count": 19,
616
+ "uniques": 13
617
+ },
618
+ {
619
+ "timestamp": "2025-08-31T00:00:00Z",
620
+ "count": 9,
621
+ "uniques": 7
622
+ },
623
+ {
624
+ "timestamp": "2025-09-01T00:00:00Z",
625
+ "count": 17,
626
+ "uniques": 12
627
+ },
628
+ {
629
+ "timestamp": "2025-09-02T00:00:00Z",
630
+ "count": 9,
631
+ "uniques": 7
632
+ },
633
+ {
634
+ "timestamp": "2025-09-03T00:00:00Z",
635
+ "count": 9,
636
+ "uniques": 7
637
+ },
638
+ {
639
+ "timestamp": "2025-09-04T00:00:00Z",
640
+ "count": 9,
641
+ "uniques": 7
642
+ },
643
+ {
644
+ "timestamp": "2025-09-05T00:00:00Z",
645
+ "count": 9,
646
+ "uniques": 5
647
+ },
648
+ {
649
+ "timestamp": "2025-09-06T00:00:00Z",
650
+ "count": 10,
651
+ "uniques": 8
652
+ },
653
+ {
654
+ "timestamp": "2025-09-07T00:00:00Z",
655
+ "count": 15,
656
+ "uniques": 9
657
+ },
658
+ {
659
+ "timestamp": "2025-09-08T00:00:00Z",
570
660
  "count": 28,
661
+ "uniques": 17
662
+ },
663
+ {
664
+ "timestamp": "2025-09-09T00:00:00Z",
665
+ "count": 20,
666
+ "uniques": 13
667
+ },
668
+ {
669
+ "timestamp": "2025-09-10T00:00:00Z",
670
+ "count": 16,
671
+ "uniques": 11
672
+ },
673
+ {
674
+ "timestamp": "2025-09-11T00:00:00Z",
675
+ "count": 15,
676
+ "uniques": 10
677
+ },
678
+ {
679
+ "timestamp": "2025-09-12T00:00:00Z",
680
+ "count": 20,
681
+ "uniques": 13
682
+ },
683
+ {
684
+ "timestamp": "2025-09-13T00:00:00Z",
685
+ "count": 20,
686
+ "uniques": 14
687
+ },
688
+ {
689
+ "timestamp": "2025-09-14T00:00:00Z",
690
+ "count": 18,
691
+ "uniques": 11
692
+ },
693
+ {
694
+ "timestamp": "2025-09-15T00:00:00Z",
695
+ "count": 29,
571
696
  "uniques": 16
572
697
  },
573
698
  {
574
- "timestamp": "2025-08-22T00:00:00Z",
699
+ "timestamp": "2025-09-16T00:00:00Z",
700
+ "count": 24,
701
+ "uniques": 14
702
+ },
703
+ {
704
+ "timestamp": "2025-09-17T00:00:00Z",
705
+ "count": 23,
706
+ "uniques": 16
707
+ },
708
+ {
709
+ "timestamp": "2025-09-18T00:00:00Z",
710
+ "count": 19,
711
+ "uniques": 11
712
+ },
713
+ {
714
+ "timestamp": "2025-09-19T00:00:00Z",
715
+ "count": 22,
716
+ "uniques": 14
717
+ },
718
+ {
719
+ "timestamp": "2025-09-23T00:00:00Z",
720
+ "count": 9,
721
+ "uniques": 5
722
+ },
723
+ {
724
+ "timestamp": "2025-09-24T00:00:00Z",
725
+ "count": 7,
726
+ "uniques": 5
727
+ },
728
+ {
729
+ "timestamp": "2025-09-25T00:00:00Z",
730
+ "count": 7,
731
+ "uniques": 4
732
+ },
733
+ {
734
+ "timestamp": "2025-09-26T00:00:00Z",
735
+ "count": 14,
736
+ "uniques": 7
737
+ },
738
+ {
739
+ "timestamp": "2025-09-27T00:00:00Z",
740
+ "count": 13,
741
+ "uniques": 8
742
+ },
743
+ {
744
+ "timestamp": "2025-09-28T00:00:00Z",
745
+ "count": 9,
746
+ "uniques": 6
747
+ },
748
+ {
749
+ "timestamp": "2025-09-29T00:00:00Z",
575
750
  "count": 14,
576
751
  "uniques": 8
752
+ },
753
+ {
754
+ "timestamp": "2025-09-30T00:00:00Z",
755
+ "count": 11,
756
+ "uniques": 8
757
+ },
758
+ {
759
+ "timestamp": "2025-10-01T00:00:00Z",
760
+ "count": 12,
761
+ "uniques": 7
762
+ },
763
+ {
764
+ "timestamp": "2025-10-02T00:00:00Z",
765
+ "count": 9,
766
+ "uniques": 6
767
+ },
768
+ {
769
+ "timestamp": "2025-10-03T00:00:00Z",
770
+ "count": 11,
771
+ "uniques": 6
772
+ },
773
+ {
774
+ "timestamp": "2025-10-04T00:00:00Z",
775
+ "count": 10,
776
+ "uniques": 6
777
+ },
778
+ {
779
+ "timestamp": "2025-10-05T00:00:00Z",
780
+ "count": 17,
781
+ "uniques": 10
782
+ },
783
+ {
784
+ "timestamp": "2025-10-06T00:00:00Z",
785
+ "count": 31,
786
+ "uniques": 17
787
+ },
788
+ {
789
+ "timestamp": "2025-10-07T00:00:00Z",
790
+ "count": 29,
791
+ "uniques": 18
792
+ },
793
+ {
794
+ "timestamp": "2025-10-08T00:00:00Z",
795
+ "count": 59,
796
+ "uniques": 29
577
797
  }
578
798
  ]
579
799
  }