dar-backup 0.7.1__tar.gz → 0.8.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 (127) hide show
  1. {dar_backup-0.7.1/src/dar_backup → dar_backup-0.8.0}/Changelog.md +29 -3
  2. {dar_backup-0.7.1 → dar_backup-0.8.0}/PKG-INFO +122 -40
  3. {dar_backup-0.7.1 → dar_backup-0.8.0}/README.md +100 -39
  4. {dar_backup-0.7.1 → dar_backup-0.8.0}/doc/badges/badge_clones.json +1 -1
  5. dar_backup-0.8.0/doc/badges/milestone_1000.txt +1 -0
  6. dar_backup-0.8.0/doc/badges/milestone_500.txt +1 -0
  7. dar_backup-0.8.0/doc/badges/milestone_badge.json +6 -0
  8. dar_backup-0.8.0/doc/clones.json +220 -0
  9. {dar_backup-0.7.1 → dar_backup-0.8.0}/doc/dev.md +42 -33
  10. dar_backup-0.8.0/doc/weekly_clones.png +0 -0
  11. {dar_backup-0.7.1 → dar_backup-0.8.0}/pyproject.toml +36 -9
  12. {dar_backup-0.7.1 → dar_backup-0.8.0/src/dar_backup}/Changelog.md +29 -3
  13. {dar_backup-0.7.1 → dar_backup-0.8.0}/src/dar_backup/README.md +100 -39
  14. {dar_backup-0.7.1 → dar_backup-0.8.0}/src/dar_backup/__about__.py +1 -1
  15. {dar_backup-0.7.1 → dar_backup-0.8.0}/src/dar_backup/clean_log.py +13 -0
  16. {dar_backup-0.7.1 → dar_backup-0.8.0}/src/dar_backup/cleanup.py +11 -6
  17. {dar_backup-0.7.1 → dar_backup-0.8.0}/src/dar_backup/config_settings.py +16 -0
  18. {dar_backup-0.7.1 → dar_backup-0.8.0}/src/dar_backup/dar-backup.conf.j2 +4 -0
  19. {dar_backup-0.7.1 → dar_backup-0.8.0}/src/dar_backup/dar_backup.py +13 -7
  20. {dar_backup-0.7.1 → dar_backup-0.8.0}/src/dar_backup/installer.py +14 -4
  21. {dar_backup-0.7.1 → dar_backup-0.8.0}/src/dar_backup/manager.py +6 -2
  22. {dar_backup-0.7.1 → dar_backup-0.8.0}/src/dar_backup/rich_progress.py +1 -0
  23. {dar_backup-0.7.1 → dar_backup-0.8.0}/src/dar_backup/util.py +83 -8
  24. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/pathvalidate-3.2.3.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/black-25.1.0.dist-info/licenses}/LICENSE +1 -1
  25. dar_backup-0.8.0/venv/lib/python3.12/site-packages/blib2to3/LICENSE +254 -0
  26. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/tomli_w-1.0.0.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/charset_normalizer-3.4.2.dist-info/licenses}/LICENSE +1 -1
  27. dar_backup-0.8.0/venv/lib/python3.12/site-packages/contourpy-1.3.2.dist-info/LICENSE +29 -0
  28. dar_backup-0.8.0/venv/lib/python3.12/site-packages/cycler-0.12.1.dist-info/LICENSE +27 -0
  29. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/mbstrdecoder-1.1.4.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/fonttools-4.58.2.dist-info/licenses}/LICENSE +1 -1
  30. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/pytablewriter-1.2.1.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/iniconfig-2.1.0.dist-info/licenses}/LICENSE +7 -7
  31. dar_backup-0.8.0/venv/lib/python3.12/site-packages/kiwisolver-1.4.8.dist-info/LICENSE +71 -0
  32. dar_backup-0.8.0/venv/lib/python3.12/site-packages/matplotlib-3.10.3.dist-info/LICENSE +99 -0
  33. dar_backup-0.8.0/venv/lib/python3.12/site-packages/mypy_extensions-1.1.0.dist-info/licenses/LICENSE +27 -0
  34. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/more_itertools-10.3.0.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/nh3-0.2.21.dist-info/licenses}/LICENSE +3 -1
  35. dar_backup-0.8.0/venv/lib/python3.12/site-packages/numpy/ma/LICENSE +24 -0
  36. dar_backup-0.8.0/venv/lib/python3.12/site-packages/pandas-2.3.0.dist-info/LICENSE +1250 -0
  37. dar_backup-0.8.0/venv/lib/python3.12/site-packages/pillow-11.2.1.dist-info/licenses/LICENSE +998 -0
  38. dar_backup-0.8.0/venv/lib/python3.12/site-packages/pyparsing-3.2.3.dist-info/LICENSE +18 -0
  39. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/python_slugify-8.0.4.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/pyproject_hooks-1.2.0.dist-info}/LICENSE +2 -2
  40. dar_backup-0.8.0/venv/lib/python3.12/site-packages/tzdata-2025.2.dist-info/licenses/LICENSE +15 -0
  41. dar_backup-0.8.0/venv/lib/python3.12/site-packages/zipp-3.22.0.dist-info/licenses/LICENSE +18 -0
  42. dar_backup-0.7.1/doc/badges/milestone_badge.json +0 -6
  43. dar_backup-0.7.1/doc/clones.json +0 -110
  44. dar_backup-0.7.1/doc/weekly_clones.png +0 -0
  45. dar_backup-0.7.1/venv/lib/python3.12/site-packages/DataProperty-1.1.0.dist-info/LICENSE +0 -21
  46. dar_backup-0.7.1/venv/lib/python3.12/site-packages/chardet-5.2.0.dist-info/LICENSE +0 -502
  47. dar_backup-0.7.1/venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/LICENSE +0 -21
  48. dar_backup-0.7.1/venv/lib/python3.12/site-packages/iniconfig-2.0.0.dist-info/licenses/LICENSE +0 -19
  49. dar_backup-0.7.1/venv/lib/python3.12/site-packages/prettytable-3.16.0.dist-info/licenses/LICENSE +0 -30
  50. dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/autocommand-2.2.2.dist-info/LICENSE +0 -166
  51. dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/backports.tarfile-1.2.0.dist-info/LICENSE +0 -17
  52. dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata-8.0.0.dist-info/LICENSE +0 -202
  53. dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/inflect-7.3.1.dist-info/LICENSE +0 -17
  54. dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/jaraco.collections-5.1.0.dist-info/LICENSE +0 -17
  55. dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/jaraco.context-5.3.0.dist-info/LICENSE +0 -17
  56. dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/jaraco.functools-4.0.1.dist-info/LICENSE +0 -17
  57. dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/jaraco.text-3.12.1.dist-info/LICENSE +0 -17
  58. dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/platformdirs-4.2.2.dist-info/licenses/LICENSE +0 -21
  59. dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/typeguard-4.3.0.dist-info/LICENSE +0 -19
  60. dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/vendored/packaging/LICENSE +0 -3
  61. dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/zipp-3.19.2.dist-info/LICENSE +0 -17
  62. dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools-78.1.0.dist-info/licenses/LICENSE +0 -17
  63. dar_backup-0.7.1/venv/lib/python3.12/site-packages/tabledata-1.3.4.dist-info/LICENSE +0 -21
  64. dar_backup-0.7.1/venv/lib/python3.12/site-packages/tcolorpy-0.1.7.dist-info/LICENSE +0 -21
  65. dar_backup-0.7.1/venv/lib/python3.12/site-packages/typepy-1.3.4.dist-info/LICENSE +0 -21
  66. dar_backup-0.7.1/venv/lib/python3.12/site-packages/wcwidth-0.2.13.dist-info/LICENSE +0 -27
  67. dar_backup-0.7.1/venv/lib/python3.12/site-packages/zipp-3.19.2.dist-info/LICENSE +0 -17
  68. {dar_backup-0.7.1 → dar_backup-0.8.0}/.gitignore +0 -0
  69. {dar_backup-0.7.1 → dar_backup-0.8.0}/LICENSE +0 -0
  70. {dar_backup-0.7.1 → dar_backup-0.8.0}/doc/badges/README.md +0 -0
  71. {dar_backup-0.7.1 → dar_backup-0.8.0}/doc/doc.md +0 -0
  72. {dar_backup-0.7.1 → dar_backup-0.8.0}/packages/deb/README.md +0 -0
  73. {dar_backup-0.7.1 → dar_backup-0.8.0}/src/dar_backup/.darrc +0 -0
  74. {dar_backup-0.7.1 → dar_backup-0.8.0}/src/dar_backup/__init__.py +0 -0
  75. {dar_backup-0.7.1 → dar_backup-0.8.0}/src/dar_backup/command_runner.py +0 -0
  76. {dar_backup-0.7.1 → dar_backup-0.8.0}/src/dar_backup/dar-backup.conf +0 -0
  77. {dar_backup-0.7.1 → dar_backup-0.8.0}/src/dar_backup/dar_backup_systemd.py +0 -0
  78. {dar_backup-0.7.1 → dar_backup-0.8.0}/src/dar_backup/demo.py +0 -0
  79. {dar_backup-0.7.1 → dar_backup-0.8.0}/src/dar_backup/demo_backup_def.j2 +0 -0
  80. {dar_backup-0.7.1 → dar_backup-0.8.0}/src/dar_backup/exceptions.py +0 -0
  81. {dar_backup-0.7.1 → dar_backup-0.8.0}/venv/lib/python3.12/site-packages/SecretStorage-3.3.3.dist-info/LICENSE +0 -0
  82. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/anyio-4.4.0.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info}/LICENSE +0 -0
  83. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/build-1.2.1.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/build-1.2.2.post1.dist-info}/LICENSE +0 -0
  84. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/licenses}/LICENSE +0 -0
  85. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/cffi-1.16.0.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info}/LICENSE +0 -0
  86. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/cryptography-43.0.0.dist-info/license_files → dar_backup-0.8.0/venv/lib/python3.12/site-packages/cryptography-45.0.3.dist-info/licenses}/LICENSE +0 -0
  87. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/dar_backup-0.7.1.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/dar_backup-0.8.0.dist-info}/licenses/LICENSE +0 -0
  88. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/filelock-3.15.4.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/filelock-3.18.0.dist-info}/licenses/LICENSE +0 -0
  89. {dar_backup-0.7.1 → dar_backup-0.8.0}/venv/lib/python3.12/site-packages/hyperlink-21.0.0.dist-info/LICENSE +0 -0
  90. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/importlib_metadata-8.2.0.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/id-1.5.0.dist-info}/LICENSE +0 -0
  91. {dar_backup-0.7.1 → dar_backup-0.8.0}/venv/lib/python3.12/site-packages/jaraco.classes-3.4.0.dist-info/LICENSE +0 -0
  92. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/jaraco.context-5.3.0.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/jaraco.context-6.0.1.dist-info}/LICENSE +0 -0
  93. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/jaraco.functools-4.0.2.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/jaraco.functools-4.1.0.dist-info}/LICENSE +0 -0
  94. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/jeepney-0.8.0.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/jeepney-0.9.0.dist-info/licenses}/LICENSE +0 -0
  95. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/keyring-25.3.0.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/keyring-25.6.0.dist-info}/LICENSE +0 -0
  96. {dar_backup-0.7.1 → dar_backup-0.8.0}/venv/lib/python3.12/site-packages/markdown_it_py-3.0.0.dist-info/LICENSE +0 -0
  97. {dar_backup-0.7.1 → dar_backup-0.8.0}/venv/lib/python3.12/site-packages/mdurl-0.1.2.dist-info/LICENSE +0 -0
  98. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/more_itertools-10.3.0.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/more_itertools-10.7.0.dist-info}/LICENSE +0 -0
  99. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/packaging-24.1.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/packaging-25.0.dist-info/licenses}/LICENSE +0 -0
  100. {dar_backup-0.7.1 → dar_backup-0.8.0}/venv/lib/python3.12/site-packages/pathspec-0.12.1.dist-info/LICENSE +0 -0
  101. {dar_backup-0.7.1 → dar_backup-0.8.0}/venv/lib/python3.12/site-packages/pexpect-4.9.0.dist-info/LICENSE +0 -0
  102. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/platformdirs-4.2.2.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/platformdirs-4.3.8.dist-info}/licenses/LICENSE +0 -0
  103. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/pluggy-1.5.0.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/pluggy-1.6.0.dist-info/licenses}/LICENSE +0 -0
  104. {dar_backup-0.7.1 → dar_backup-0.8.0}/venv/lib/python3.12/site-packages/psutil-7.0.0.dist-info/LICENSE +0 -0
  105. {dar_backup-0.7.1 → dar_backup-0.8.0}/venv/lib/python3.12/site-packages/ptyprocess-0.7.0.dist-info/LICENSE +0 -0
  106. {dar_backup-0.7.1 → dar_backup-0.8.0}/venv/lib/python3.12/site-packages/pycparser-2.22.dist-info/LICENSE +0 -0
  107. {dar_backup-0.7.1 → dar_backup-0.8.0}/venv/lib/python3.12/site-packages/pygments-2.19.1.dist-info/licenses/LICENSE +0 -0
  108. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/pytest-8.3.2.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/pytest-8.4.0.dist-info/licenses}/LICENSE +0 -0
  109. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/pytest_cov-6.0.0.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/pytest_cov-6.1.1.dist-info/licenses}/LICENSE +0 -0
  110. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/pytest_timeout-2.3.1.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/pytest_timeout-2.4.0.dist-info/licenses}/LICENSE +0 -0
  111. {dar_backup-0.7.1 → dar_backup-0.8.0}/venv/lib/python3.12/site-packages/python_dateutil-2.9.0.post0.dist-info/LICENSE +0 -0
  112. {dar_backup-0.7.1 → dar_backup-0.8.0}/venv/lib/python3.12/site-packages/readme_renderer-44.0.dist-info/LICENSE +0 -0
  113. {dar_backup-0.7.1 → dar_backup-0.8.0}/venv/lib/python3.12/site-packages/requests-2.32.3.dist-info/LICENSE +0 -0
  114. {dar_backup-0.7.1 → dar_backup-0.8.0}/venv/lib/python3.12/site-packages/requests_toolbelt-1.0.0.dist-info/LICENSE +0 -0
  115. {dar_backup-0.7.1 → dar_backup-0.8.0}/venv/lib/python3.12/site-packages/rfc3986-2.0.0.dist-info/LICENSE +0 -0
  116. {dar_backup-0.7.1 → dar_backup-0.8.0}/venv/lib/python3.12/site-packages/rich-14.0.0.dist-info/LICENSE +0 -0
  117. {dar_backup-0.7.1 → dar_backup-0.8.0}/venv/lib/python3.12/site-packages/shellingham-1.5.4.dist-info/LICENSE +0 -0
  118. {dar_backup-0.7.1 → dar_backup-0.8.0}/venv/lib/python3.12/site-packages/six-1.17.0.dist-info/LICENSE +0 -0
  119. {dar_backup-0.7.1 → dar_backup-0.8.0}/venv/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/LICENSE +0 -0
  120. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/tomli-2.0.1.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/tomli_w-1.2.0.dist-info}/LICENSE +0 -0
  121. {dar_backup-0.7.1 → dar_backup-0.8.0}/venv/lib/python3.12/site-packages/tomlkit-0.13.2.dist-info/LICENSE +0 -0
  122. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/trove_classifiers-2024.7.2.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/trove_classifiers-2025.5.9.12.dist-info/licenses}/LICENSE +0 -0
  123. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/twine-6.0.1.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/twine-6.1.0.dist-info}/LICENSE +0 -0
  124. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/typing_extensions-4.12.2.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/typing_extensions-4.14.0.dist-info/licenses}/LICENSE +0 -0
  125. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/virtualenv-20.26.3.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/virtualenv-20.31.2.dist-info}/licenses/LICENSE +0 -0
  126. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/packaging-24.2.dist-info → dar_backup-0.8.0/venv/lib/python3.12/site-packages/wheel/vendored/packaging}/LICENSE +0 -0
  127. {dar_backup-0.7.1 → dar_backup-0.8.0}/venv/lib/python3.12/site-packages/zstandard-0.23.0.dist-info/LICENSE +0 -0
@@ -1,7 +1,33 @@
1
1
  <!-- markdownlint-disable MD024 -->
2
2
  # dar-backup Changelog
3
3
 
4
- ## v2-beta-0.6.21 - not yet released
4
+ ## v2-beta-0.8.0 - 2025-06-13
5
+
6
+ Github link: [v2-beta-0.8.0](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.8.0/v2)
7
+
8
+ ### Added
9
+
10
+ - Modified clone dashboard generator to produce easier to read dashboard and be more robust.
11
+ - Dir_traversal sanitation: clean_log.py now only accepts files in configured log directory to `--file` option.
12
+
13
+ ## v2-beta-0.7.2 - 2025-06-07
14
+
15
+ Github link: [v2-beta-0.7.2](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.7.2/v2)
16
+
17
+ ### Added
18
+
19
+ - Refactored build system, so all dependencies are kept in `pyproject.toml`. The dependencies are separated into dev, packaging and delivery phases.
20
+ - Use `build.sh` to setup pytest environment in Github workflow.
21
+
22
+ - Do the same to get a development environment going.
23
+
24
+ - Added 2 new optional params to control log file roll.
25
+ - Enrolling into [Snyk code checker](https://snyk.io/code-checker/) and learning how to work with it.
26
+
27
+ - Snyk helped pointing out vulnerable versions of some packages used.
28
+ - Input sanitation started, there is room for improvement.
29
+
30
+ ## v2-beta-0.7.1 - 2025-05-22
5
31
 
6
32
  Github link: [v2-beta-0.7.1](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.7.1/v2)
7
33
 
@@ -24,9 +50,9 @@ Github link: [v2-beta-0.7.1](https://github.com/per2jensen/dar-backup/tree/v2-be
24
50
  - Action + program to capture cloning stats and store them in v2/doc directory. Includes a badge.
25
51
 
26
52
  -- annotate new daily max number of clones
27
- -- Celebration badge when number of clones numbers are hit (just for fun)
53
+ -- Celebration badge when certain clones numbers are hit (just for fun)
28
54
 
29
- - Action + program to generate 12weeks cloning dashboard (a PNG) with annotation
55
+ - Action + program to generate 12 weeks cloning dashboard (a PNG) with annotation
30
56
  - Tweaked the auto completion setup in .bashrc, it stopped working for me unknown reasons (needs some looking into)
31
57
  - --verbose now affects the startup banner. Now it is printed only if --verbose is given
32
58
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dar-backup
3
- Version: 0.7.1
3
+ Version: 0.8.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
@@ -693,6 +693,27 @@ Requires-Dist: argcomplete>=3.6.2
693
693
  Requires-Dist: inputimeout>=1.0.4
694
694
  Requires-Dist: jinja2>=3.1.6
695
695
  Requires-Dist: rich>=13.0.0
696
+ Provides-Extra: dev
697
+ Requires-Dist: anyio>=4.4.0; extra == 'dev'
698
+ Requires-Dist: black>=25.1.0; extra == 'dev'
699
+ Requires-Dist: coverage>=7.8.2; extra == 'dev'
700
+ Requires-Dist: h11>=0.16.0; extra == 'dev'
701
+ Requires-Dist: httpcore>=0.17.3; extra == 'dev'
702
+ Requires-Dist: matplotlib>=3.10.3; extra == 'dev'
703
+ Requires-Dist: pandas>=2.3.0; extra == 'dev'
704
+ Requires-Dist: psutil>=7.0.0; extra == 'dev'
705
+ Requires-Dist: pytest; extra == 'dev'
706
+ Requires-Dist: pytest-cov>=6.1.1; extra == 'dev'
707
+ Requires-Dist: pytest-timeout>=2.4.0; extra == 'dev'
708
+ Requires-Dist: pytest>=8.4.0; extra == 'dev'
709
+ Requires-Dist: requests>=2.32.2; extra == 'dev'
710
+ Requires-Dist: wheel>=0.45.1; extra == 'dev'
711
+ Requires-Dist: zipp>=3.19.1; extra == 'dev'
712
+ Provides-Extra: packaging
713
+ Requires-Dist: build>=1.2.2; extra == 'packaging'
714
+ Requires-Dist: hatch>=1.14.1; extra == 'packaging'
715
+ Requires-Dist: hatchling>=1.27.0; extra == 'packaging'
716
+ Requires-Dist: twine>=6.1.0; extra == 'packaging'
696
717
  Description-Content-Type: text/markdown
697
718
 
698
719
  <!-- markdownlint-disable MD024 -->
@@ -700,15 +721,16 @@ Description-Content-Type: text/markdown
700
721
 
701
722
  **Reliable DAR backups, automated in clean Python**
702
723
 
703
- [![codecov](https://codecov.io/gh/per2jensen/dar-backup/branch/main/graph/badge.svg)](https://codecov.io/gh/per2jensen/dar-backup)
724
+ [![Codecov](https://codecov.io/gh/per2jensen/dar-backup/branch/main/graph/badge.svg)](https://codecov.io/gh/per2jensen/dar-backup)
725
+ [![Snyk Vuln findings](https://snyk.io/test/github/per2jensen/dar-backup/badge.svg)](https://snyk.io/test/github/per2jensen/dar-backup)
704
726
  ![CI](https://github.com/per2jensen/dar-backup/actions/workflows/py-tests.yml/badge.svg)
705
727
  [![PyPI version](https://img.shields.io/pypi/v/dar-backup.svg)](https://pypi.org/project/dar-backup/)
706
- [![PyPI total Downloads](https://img.shields.io/badge/dynamic/json?color=blue&label=Total%20Downloads&query=total&url=https%3A%2F%2Fraw.githubusercontent.com%2Fper2jensen%2Fdar-backup%2Fmain%2Fdownloads.json)](https://pypi.org/project/dar-backup/)
728
+ [![PyPI downloads](https://img.shields.io/badge/dynamic/json?color=blue&label=PyPI%20downloads&query=total&url=https%3A%2F%2Fraw.githubusercontent.com%2Fper2jensen%2Fdar-backup%2Fmain%2Fdownloads.json)](https://pypi.org/project/dar-backup/)
707
729
  [![# clones](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/per2jensen/dar-backup/main/v2/doc/badges/badge_clones.json)](https://github.com/per2jensen/dar-backup/blob/main/v2/doc/weekly_clones.png)
708
730
  [![Milestone](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/per2jensen/dar-backup/main/v2/doc/badges/milestone_badge.json)](https://github.com/per2jensen/dar-backup/blob/main/v2/doc/weekly_clones.png)
709
731
 
710
732
  The wonderful 'dar' [Disk Archiver](https://github.com/Edrusb/DAR) is used for
711
- the heavy lifting, together with [parchive](https://github.com/Parchive/par2cmdline) suite in these scripts.
733
+ the heavy lifting, together with the [parchive](https://github.com/Parchive/par2cmdline) suite in these scripts.
712
734
 
713
735
  This is the `Python` based [**version 2**](https://github.com/per2jensen/dar-backup/tree/main/v2) of `dar-backup`.
714
736
 
@@ -770,6 +792,7 @@ This is the `Python` based [**version 2**](https://github.com/per2jensen/dar-bac
770
792
  - [Skipping cache directories](#skipping-cache-directories)
771
793
  - [Progress bar + current directory](#progress-bar-and-current-directory)
772
794
  - [Shell Autocompletion](#shell-autocompletion)
795
+ - [Easy development setup](#easy-development-setup)
773
796
  - [Todo](#todo)
774
797
  - [Known Limitations / Edge Cases](#known-limitations--edge-cases)
775
798
  - [Reference](#reference)
@@ -904,17 +927,17 @@ Setup the demo configurations and show a few operations
904
927
  <br>
905
928
 
906
929
  ```bash
907
- # see reference section for options tweaking the install
930
+ # See reference section for options tweaking the install
908
931
  demo --install
909
932
 
910
933
  # create catalog database
911
934
  manager --create-db
912
935
 
913
- # do a FULL backup of the installed backup definition called `demo`
936
+ # FULL backup as defined in backup definition `demo`
914
937
  dar-backup --full-backup
915
938
 
916
- # list the contents of the backup
917
- dar-backup --list-contents $(dar-backup --list |tail -n 1 | cut -d " " -f1)
939
+ # List the contents of the backup
940
+ dar-backup --list-contents demo_FULL_$(date '+%F')
918
941
  ```
919
942
 
920
943
  <details>
@@ -956,7 +979,7 @@ Config file: /home/user/.config/dar-backup/dar-backup.conf
956
979
 
957
980
 
958
981
 
959
- (venv) $ dar-backup --list-contents $(dar-backup --list |tail -n 1 | cut -d " " -f1)
982
+ (venv) $ dar-backup --list-contents demo_FULL_$(date '+%F')
960
983
  ========== Startup Settings ==========
961
984
  dar-backup.py: 0.7.1
962
985
  dar path: /home/user/.local/dar/bin/dar
@@ -984,10 +1007,10 @@ Config file: /home/user/.config/dar-backup/dar-backup.conf
984
1007
  Perform a restore and show the restored files
985
1008
 
986
1009
  ```bash
987
- # restore all files in the backup
988
- dar-backup --restore $(dar-backup --list |tail -n 1 | cut -d " " -f1) --verbose
1010
+ # Restore all files in the backup
1011
+ dar-backup --restore demo_FULL_$(date '+%F') --verbose
989
1012
 
990
- # prove the files have been restored to directory as configured
1013
+ # Prove the files have been restored to directory as configured
991
1014
  find $HOME/dar-backup/restore
992
1015
  ```
993
1016
 
@@ -996,7 +1019,7 @@ find $HOME/dar-backup/restore
996
1019
  <summary>🎯 --restore details</summary>
997
1020
 
998
1021
  ```bash
999
- (venv) $ dar-backup --verbose --restore $(dar-backup --list |tail -n 1 | cut -d " " -f1)
1022
+ (venv) $ dar-backup --restore demo_FULL_$(date '+%F') --verbose
1000
1023
  ========== Startup Settings ==========
1001
1024
  dar-backup.py: 0.7.1
1002
1025
  dar path: /home/user/.local/dar/bin/dar
@@ -1034,7 +1057,7 @@ PAR2 enabled: True
1034
1057
 
1035
1058
  > ✅ **Next steps**
1036
1059
  >
1037
- > Tinker with `demo's` options:
1060
+ > Play with `demo's` options:
1038
1061
  >
1039
1062
  > - --root-dir (perhaps $HOME)
1040
1063
  > - --dir-to-backup (perhaps Pictures)
@@ -1169,8 +1192,9 @@ Please review the [Code of Conduct](https://github.com/per2jensen/dar-backup/blo
1169
1192
 
1170
1193
  ## Requirements
1171
1194
 
1195
+ - A linux system
1172
1196
  - dar
1173
- - par2
1197
+ - parchive (par2)
1174
1198
  - python3
1175
1199
  - python3-venv
1176
1200
 
@@ -1275,27 +1299,25 @@ See section 15 and section 16 in the supplied "LICENSE" file.
1275
1299
 
1276
1300
  ### 2 - configuration
1277
1301
 
1278
- The dar-backup [demo](#demo-options) application can be used to demo how `dar-backup` works.
1279
- It creates some directories, installs a demo configuration file and puts a demo backup definition in place.
1302
+ The dar-backup [installer](#installer-options) application can be used to setup the needed directories for `dar-backup` to work.
1303
+ It creates necessary directories as prescribed in the config file and optionally creates manager databases.
1280
1304
 
1281
- `demo` is non-destructive and stops if some of the default directories exist.
1305
+ `installer` can also add configuration of shell auto completion.
1282
1306
 
1283
- Run `demo`
1307
+ Step 1:
1284
1308
 
1285
- ```bash
1286
- demo --install
1287
- ```
1309
+ Create a config file - [see details on config file](#config-file))
1288
1310
 
1289
- The output is
1311
+ Step 2:
1290
1312
 
1291
- ```text
1292
- Directories created: `/home/user/dar-backup/` and `/home/user/.config/dar-backup`
1293
- Config file deployed to /home/user/.config/dar-backup/dar-backup.conf
1294
- Default backup definition deployed to /home/user/.config/dar-backup/backup.d/default
1295
- 1. Now run `manager --create-db` to create the catalog database.
1296
- 2. Then you can run `dar-backup --full-backup` to create a backup.
1297
- 3. List backups with `dar-backup --list`
1298
- 4. List contents of a backup with `dar-backup --list-contents <backup-name>`
1313
+ Create one or more backup definitions - [see details on backup definitions](#backup-definition-example)
1314
+
1315
+ Step 3:
1316
+
1317
+ Run the installer:
1318
+
1319
+ ```bash
1320
+ installer --config <path to dar-backup.conf> --install-autocompletion
1299
1321
  ```
1300
1322
 
1301
1323
  ### 3 - generate catalog databases
@@ -1310,9 +1332,7 @@ manager --create-db
1310
1332
 
1311
1333
  ### 4 - give dar-backup a spin
1312
1334
 
1313
- The `demo` application has put a demo [backup definition](#backup-definition-example) in place in BACKUP.D_DIR (see [config file](#config-file)).
1314
-
1315
- You are now ready to do backups as configured in the backup definition.
1335
+ You are now ready to do backups as configured in your backup definition(s).
1316
1336
 
1317
1337
  Give `dar-backup`a spin:
1318
1338
 
@@ -1322,6 +1342,9 @@ dar-backup --full-backup --verbose
1322
1342
  # list backups
1323
1343
  dar-backup --list
1324
1344
 
1345
+ # list contents of a dar backup
1346
+ dar-backup --list-contents <TAB>... <choose a backup>
1347
+
1325
1348
  # see some examples on usage
1326
1349
  dar-backup --examples
1327
1350
 
@@ -1360,6 +1383,9 @@ Tilde `~` and environment variables can be used in the paths for various file lo
1360
1383
  ```text
1361
1384
  [MISC]
1362
1385
  LOGFILE_LOCATION=~/.dar-backup.log
1386
+ # optional parameters
1387
+ # LOGFILE_MAX_BYTES = 26214400 # 25 MB max file size is default, change as neeeded
1388
+ # LOGFILE_BACKUP_COUNT = 5 # 5 backup log files is default, change as needed
1363
1389
  MAX_SIZE_VERIFICATION_MB = 20
1364
1390
  MIN_SIZE_VERIFICATION_MB = 1
1365
1391
  NO_FILES_VERIFICATION = 5
@@ -1378,6 +1404,8 @@ TEST_RESTORE_DIR = /tmp/dar-backup/restore/
1378
1404
 
1379
1405
  [AGE]
1380
1406
  # age settings are in days
1407
+ # `cleanup` script removes archives and their .par redundancy files if older than configured.
1408
+ # `cleanup` does not remove FULL archives, unless specifically told to and a "y" is answered to "are you sure?".
1381
1409
  DIFF_AGE = 100
1382
1410
  INCR_AGE = 40
1383
1411
 
@@ -1533,6 +1561,12 @@ The name of the file is the name of the backup definition.
1533
1561
 
1534
1562
  You can use as many backup definitions as you need.
1535
1563
 
1564
+ > Note 👉
1565
+ >
1566
+ > Environment variables and tilde (~) not allowed here. `dar` does not expand them.
1567
+ >
1568
+ > See [TODO](#todo)
1569
+
1536
1570
  ```text
1537
1571
  # Switch to ordered selection mode, which means that the following
1538
1572
  # options will be considered top to bottom
@@ -1906,6 +1940,8 @@ These [.darrc](#darrc) settings make `dar` print the current directory being pro
1906
1940
 
1907
1941
  This is very useful in very long running jobs to get an indication that the backup is proceeding normally.
1908
1942
 
1943
+ The `dar` output is streamed to the `dar-backup-commands.log` file.
1944
+
1909
1945
  ### Separate log file for command output
1910
1946
 
1911
1947
  Dar-backup's log file is called `dar-backup.log`.
@@ -2067,8 +2103,54 @@ Then reload Zsh:
2067
2103
  source ~/.zshrc
2068
2104
  ```
2069
2105
 
2106
+ ## Easy development setup
2107
+
2108
+ It is very easy to have your own development environment.
2109
+
2110
+ ```bash
2111
+ git clone https://github.com/per2jensen/dar-backup.git
2112
+ cd dar-backup/v2
2113
+ ./build.py
2114
+ ```
2115
+
2116
+ This script:
2117
+
2118
+ - Creates a Python virtual environment called `venv`
2119
+ - pip install `hatch`
2120
+ - pip install the development environment as setup in pyproject.toml
2121
+
2122
+ --
2123
+
2124
+ ```text
2125
+ dev = [
2126
+ "pytest",
2127
+ "wheel>=0.45.1",
2128
+ "requests>=2.32.2",
2129
+ "coverage>=7.8.2",
2130
+ "pytest>=8.4.0",
2131
+ "pytest-cov>=6.1.1",
2132
+ "psutil>=7.0.0",
2133
+ "pytest-timeout>=2.4.0",
2134
+ "httpcore>=0.17.3",
2135
+ "h11>=0.16.0",
2136
+ "zipp>=3.19.1",
2137
+ "anyio>=4.4.0",
2138
+ "black>=25.1.0"]
2139
+ ```
2140
+
2141
+ ✅ Your environment is now ready to activate and test!
2142
+
2143
+ Activate and run the test suite:
2144
+
2145
+ ```bash
2146
+ source venv/bin/activate # activate the virtual env
2147
+ pytest # run the test suite
2148
+ ```
2149
+
2070
2150
  ## Todo
2071
2151
 
2152
+ - Perhaps look into pre-processing backup definitions. As `dar` does not expand env vars
2153
+ `dar-backup` could do so and feed the result to `dar`.
2072
2154
  - When run interactively, a progress bar during test and par2 generation would be nice.
2073
2155
  - Look into a way to move the .par2 files away from the `dar` slices, to maximize chance of good redundancy.
2074
2156
  - Add option to dar-backup to use the `dar` option `--fsa-scope none`
@@ -2233,12 +2315,12 @@ Sets up `dar-backup` according to provided config file.
2233
2315
  The installer creates the necessary backup catalog databases if `--create-db` is given.
2234
2316
 
2235
2317
  ```bash
2236
- --config Sets up `dar-backup`.
2237
- --create-db Create backup catalog databases. Add it to --config
2238
- --install-autocompletion Add bash or zsh auto completion - idempotent
2239
- --remove-autocompletion Remove the auto completion from bash or zsh
2318
+ --config Path to a config file. The configured directories will be created.
2319
+ --create-db Create backup catalog databases. Use this option with `--config`.
2320
+ --install-autocompletion Add bash or zsh auto completion - idempotent.
2321
+ --remove-autocompletion Remove the auto completion from bash or zsh.
2240
2322
  -v, --version Display version and licensing information.
2241
- -h, --help Displays usage info
2323
+ -h, --help Displays usage info.
2242
2324
  ```
2243
2325
 
2244
2326
  ### Demo options
@@ -2258,7 +2340,7 @@ Create directories:
2258
2340
  Sets up demo config files:
2259
2341
 
2260
2342
  - ~/.config/dar-backup/dar-backup.conf
2261
- - ~/.config/dar-backup/backup.d/default
2343
+ - ~/.config/dar-backup/backup.d/demo
2262
2344
 
2263
2345
  ```bash
2264
2346
  -i, --install Sets up `dar-backup`.
@@ -3,15 +3,16 @@
3
3
 
4
4
  **Reliable DAR backups, automated in clean Python**
5
5
 
6
- [![codecov](https://codecov.io/gh/per2jensen/dar-backup/branch/main/graph/badge.svg)](https://codecov.io/gh/per2jensen/dar-backup)
6
+ [![Codecov](https://codecov.io/gh/per2jensen/dar-backup/branch/main/graph/badge.svg)](https://codecov.io/gh/per2jensen/dar-backup)
7
+ [![Snyk Vuln findings](https://snyk.io/test/github/per2jensen/dar-backup/badge.svg)](https://snyk.io/test/github/per2jensen/dar-backup)
7
8
  ![CI](https://github.com/per2jensen/dar-backup/actions/workflows/py-tests.yml/badge.svg)
8
9
  [![PyPI version](https://img.shields.io/pypi/v/dar-backup.svg)](https://pypi.org/project/dar-backup/)
9
- [![PyPI total Downloads](https://img.shields.io/badge/dynamic/json?color=blue&label=Total%20Downloads&query=total&url=https%3A%2F%2Fraw.githubusercontent.com%2Fper2jensen%2Fdar-backup%2Fmain%2Fdownloads.json)](https://pypi.org/project/dar-backup/)
10
+ [![PyPI downloads](https://img.shields.io/badge/dynamic/json?color=blue&label=PyPI%20downloads&query=total&url=https%3A%2F%2Fraw.githubusercontent.com%2Fper2jensen%2Fdar-backup%2Fmain%2Fdownloads.json)](https://pypi.org/project/dar-backup/)
10
11
  [![# clones](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/per2jensen/dar-backup/main/v2/doc/badges/badge_clones.json)](https://github.com/per2jensen/dar-backup/blob/main/v2/doc/weekly_clones.png)
11
12
  [![Milestone](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/per2jensen/dar-backup/main/v2/doc/badges/milestone_badge.json)](https://github.com/per2jensen/dar-backup/blob/main/v2/doc/weekly_clones.png)
12
13
 
13
14
  The wonderful 'dar' [Disk Archiver](https://github.com/Edrusb/DAR) is used for
14
- the heavy lifting, together with [parchive](https://github.com/Parchive/par2cmdline) suite in these scripts.
15
+ the heavy lifting, together with the [parchive](https://github.com/Parchive/par2cmdline) suite in these scripts.
15
16
 
16
17
  This is the `Python` based [**version 2**](https://github.com/per2jensen/dar-backup/tree/main/v2) of `dar-backup`.
17
18
 
@@ -73,6 +74,7 @@ This is the `Python` based [**version 2**](https://github.com/per2jensen/dar-bac
73
74
  - [Skipping cache directories](#skipping-cache-directories)
74
75
  - [Progress bar + current directory](#progress-bar-and-current-directory)
75
76
  - [Shell Autocompletion](#shell-autocompletion)
77
+ - [Easy development setup](#easy-development-setup)
76
78
  - [Todo](#todo)
77
79
  - [Known Limitations / Edge Cases](#known-limitations--edge-cases)
78
80
  - [Reference](#reference)
@@ -207,17 +209,17 @@ Setup the demo configurations and show a few operations
207
209
  <br>
208
210
 
209
211
  ```bash
210
- # see reference section for options tweaking the install
212
+ # See reference section for options tweaking the install
211
213
  demo --install
212
214
 
213
215
  # create catalog database
214
216
  manager --create-db
215
217
 
216
- # do a FULL backup of the installed backup definition called `demo`
218
+ # FULL backup as defined in backup definition `demo`
217
219
  dar-backup --full-backup
218
220
 
219
- # list the contents of the backup
220
- dar-backup --list-contents $(dar-backup --list |tail -n 1 | cut -d " " -f1)
221
+ # List the contents of the backup
222
+ dar-backup --list-contents demo_FULL_$(date '+%F')
221
223
  ```
222
224
 
223
225
  <details>
@@ -259,7 +261,7 @@ Config file: /home/user/.config/dar-backup/dar-backup.conf
259
261
 
260
262
 
261
263
 
262
- (venv) $ dar-backup --list-contents $(dar-backup --list |tail -n 1 | cut -d " " -f1)
264
+ (venv) $ dar-backup --list-contents demo_FULL_$(date '+%F')
263
265
  ========== Startup Settings ==========
264
266
  dar-backup.py: 0.7.1
265
267
  dar path: /home/user/.local/dar/bin/dar
@@ -287,10 +289,10 @@ Config file: /home/user/.config/dar-backup/dar-backup.conf
287
289
  Perform a restore and show the restored files
288
290
 
289
291
  ```bash
290
- # restore all files in the backup
291
- dar-backup --restore $(dar-backup --list |tail -n 1 | cut -d " " -f1) --verbose
292
+ # Restore all files in the backup
293
+ dar-backup --restore demo_FULL_$(date '+%F') --verbose
292
294
 
293
- # prove the files have been restored to directory as configured
295
+ # Prove the files have been restored to directory as configured
294
296
  find $HOME/dar-backup/restore
295
297
  ```
296
298
 
@@ -299,7 +301,7 @@ find $HOME/dar-backup/restore
299
301
  <summary>🎯 --restore details</summary>
300
302
 
301
303
  ```bash
302
- (venv) $ dar-backup --verbose --restore $(dar-backup --list |tail -n 1 | cut -d " " -f1)
304
+ (venv) $ dar-backup --restore demo_FULL_$(date '+%F') --verbose
303
305
  ========== Startup Settings ==========
304
306
  dar-backup.py: 0.7.1
305
307
  dar path: /home/user/.local/dar/bin/dar
@@ -337,7 +339,7 @@ PAR2 enabled: True
337
339
 
338
340
  > ✅ **Next steps**
339
341
  >
340
- > Tinker with `demo's` options:
342
+ > Play with `demo's` options:
341
343
  >
342
344
  > - --root-dir (perhaps $HOME)
343
345
  > - --dir-to-backup (perhaps Pictures)
@@ -472,8 +474,9 @@ Please review the [Code of Conduct](https://github.com/per2jensen/dar-backup/blo
472
474
 
473
475
  ## Requirements
474
476
 
477
+ - A linux system
475
478
  - dar
476
- - par2
479
+ - parchive (par2)
477
480
  - python3
478
481
  - python3-venv
479
482
 
@@ -578,27 +581,25 @@ See section 15 and section 16 in the supplied "LICENSE" file.
578
581
 
579
582
  ### 2 - configuration
580
583
 
581
- The dar-backup [demo](#demo-options) application can be used to demo how `dar-backup` works.
582
- It creates some directories, installs a demo configuration file and puts a demo backup definition in place.
584
+ The dar-backup [installer](#installer-options) application can be used to setup the needed directories for `dar-backup` to work.
585
+ It creates necessary directories as prescribed in the config file and optionally creates manager databases.
583
586
 
584
- `demo` is non-destructive and stops if some of the default directories exist.
587
+ `installer` can also add configuration of shell auto completion.
585
588
 
586
- Run `demo`
589
+ Step 1:
587
590
 
588
- ```bash
589
- demo --install
590
- ```
591
+ Create a config file - [see details on config file](#config-file))
591
592
 
592
- The output is
593
+ Step 2:
593
594
 
594
- ```text
595
- Directories created: `/home/user/dar-backup/` and `/home/user/.config/dar-backup`
596
- Config file deployed to /home/user/.config/dar-backup/dar-backup.conf
597
- Default backup definition deployed to /home/user/.config/dar-backup/backup.d/default
598
- 1. Now run `manager --create-db` to create the catalog database.
599
- 2. Then you can run `dar-backup --full-backup` to create a backup.
600
- 3. List backups with `dar-backup --list`
601
- 4. List contents of a backup with `dar-backup --list-contents <backup-name>`
595
+ Create one or more backup definitions - [see details on backup definitions](#backup-definition-example)
596
+
597
+ Step 3:
598
+
599
+ Run the installer:
600
+
601
+ ```bash
602
+ installer --config <path to dar-backup.conf> --install-autocompletion
602
603
  ```
603
604
 
604
605
  ### 3 - generate catalog databases
@@ -613,9 +614,7 @@ manager --create-db
613
614
 
614
615
  ### 4 - give dar-backup a spin
615
616
 
616
- The `demo` application has put a demo [backup definition](#backup-definition-example) in place in BACKUP.D_DIR (see [config file](#config-file)).
617
-
618
- You are now ready to do backups as configured in the backup definition.
617
+ You are now ready to do backups as configured in your backup definition(s).
619
618
 
620
619
  Give `dar-backup`a spin:
621
620
 
@@ -625,6 +624,9 @@ dar-backup --full-backup --verbose
625
624
  # list backups
626
625
  dar-backup --list
627
626
 
627
+ # list contents of a dar backup
628
+ dar-backup --list-contents <TAB>... <choose a backup>
629
+
628
630
  # see some examples on usage
629
631
  dar-backup --examples
630
632
 
@@ -663,6 +665,9 @@ Tilde `~` and environment variables can be used in the paths for various file lo
663
665
  ```text
664
666
  [MISC]
665
667
  LOGFILE_LOCATION=~/.dar-backup.log
668
+ # optional parameters
669
+ # LOGFILE_MAX_BYTES = 26214400 # 25 MB max file size is default, change as neeeded
670
+ # LOGFILE_BACKUP_COUNT = 5 # 5 backup log files is default, change as needed
666
671
  MAX_SIZE_VERIFICATION_MB = 20
667
672
  MIN_SIZE_VERIFICATION_MB = 1
668
673
  NO_FILES_VERIFICATION = 5
@@ -681,6 +686,8 @@ TEST_RESTORE_DIR = /tmp/dar-backup/restore/
681
686
 
682
687
  [AGE]
683
688
  # age settings are in days
689
+ # `cleanup` script removes archives and their .par redundancy files if older than configured.
690
+ # `cleanup` does not remove FULL archives, unless specifically told to and a "y" is answered to "are you sure?".
684
691
  DIFF_AGE = 100
685
692
  INCR_AGE = 40
686
693
 
@@ -836,6 +843,12 @@ The name of the file is the name of the backup definition.
836
843
 
837
844
  You can use as many backup definitions as you need.
838
845
 
846
+ > Note 👉
847
+ >
848
+ > Environment variables and tilde (~) not allowed here. `dar` does not expand them.
849
+ >
850
+ > See [TODO](#todo)
851
+
839
852
  ```text
840
853
  # Switch to ordered selection mode, which means that the following
841
854
  # options will be considered top to bottom
@@ -1209,6 +1222,8 @@ These [.darrc](#darrc) settings make `dar` print the current directory being pro
1209
1222
 
1210
1223
  This is very useful in very long running jobs to get an indication that the backup is proceeding normally.
1211
1224
 
1225
+ The `dar` output is streamed to the `dar-backup-commands.log` file.
1226
+
1212
1227
  ### Separate log file for command output
1213
1228
 
1214
1229
  Dar-backup's log file is called `dar-backup.log`.
@@ -1370,8 +1385,54 @@ Then reload Zsh:
1370
1385
  source ~/.zshrc
1371
1386
  ```
1372
1387
 
1388
+ ## Easy development setup
1389
+
1390
+ It is very easy to have your own development environment.
1391
+
1392
+ ```bash
1393
+ git clone https://github.com/per2jensen/dar-backup.git
1394
+ cd dar-backup/v2
1395
+ ./build.py
1396
+ ```
1397
+
1398
+ This script:
1399
+
1400
+ - Creates a Python virtual environment called `venv`
1401
+ - pip install `hatch`
1402
+ - pip install the development environment as setup in pyproject.toml
1403
+
1404
+ --
1405
+
1406
+ ```text
1407
+ dev = [
1408
+ "pytest",
1409
+ "wheel>=0.45.1",
1410
+ "requests>=2.32.2",
1411
+ "coverage>=7.8.2",
1412
+ "pytest>=8.4.0",
1413
+ "pytest-cov>=6.1.1",
1414
+ "psutil>=7.0.0",
1415
+ "pytest-timeout>=2.4.0",
1416
+ "httpcore>=0.17.3",
1417
+ "h11>=0.16.0",
1418
+ "zipp>=3.19.1",
1419
+ "anyio>=4.4.0",
1420
+ "black>=25.1.0"]
1421
+ ```
1422
+
1423
+ ✅ Your environment is now ready to activate and test!
1424
+
1425
+ Activate and run the test suite:
1426
+
1427
+ ```bash
1428
+ source venv/bin/activate # activate the virtual env
1429
+ pytest # run the test suite
1430
+ ```
1431
+
1373
1432
  ## Todo
1374
1433
 
1434
+ - Perhaps look into pre-processing backup definitions. As `dar` does not expand env vars
1435
+ `dar-backup` could do so and feed the result to `dar`.
1375
1436
  - When run interactively, a progress bar during test and par2 generation would be nice.
1376
1437
  - Look into a way to move the .par2 files away from the `dar` slices, to maximize chance of good redundancy.
1377
1438
  - Add option to dar-backup to use the `dar` option `--fsa-scope none`
@@ -1536,12 +1597,12 @@ Sets up `dar-backup` according to provided config file.
1536
1597
  The installer creates the necessary backup catalog databases if `--create-db` is given.
1537
1598
 
1538
1599
  ```bash
1539
- --config Sets up `dar-backup`.
1540
- --create-db Create backup catalog databases. Add it to --config
1541
- --install-autocompletion Add bash or zsh auto completion - idempotent
1542
- --remove-autocompletion Remove the auto completion from bash or zsh
1600
+ --config Path to a config file. The configured directories will be created.
1601
+ --create-db Create backup catalog databases. Use this option with `--config`.
1602
+ --install-autocompletion Add bash or zsh auto completion - idempotent.
1603
+ --remove-autocompletion Remove the auto completion from bash or zsh.
1543
1604
  -v, --version Display version and licensing information.
1544
- -h, --help Displays usage info
1605
+ -h, --help Displays usage info.
1545
1606
  ```
1546
1607
 
1547
1608
  ### Demo options
@@ -1561,7 +1622,7 @@ Create directories:
1561
1622
  Sets up demo config files:
1562
1623
 
1563
1624
  - ~/.config/dar-backup/dar-backup.conf
1564
- - ~/.config/dar-backup/backup.d/default
1625
+ - ~/.config/dar-backup/backup.d/demo
1565
1626
 
1566
1627
  ```bash
1567
1628
  -i, --install Sets up `dar-backup`.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "label": "# clones",
4
- "message": "441",
4
+ "message": "1012",
5
5
  "color": "deeppink"
6
6
  }
@@ -0,0 +1 @@
1
+ Reached 1000 clones on 2025-06-13T02:51:59.728578+00:00Z
@@ -0,0 +1 @@
1
+ Reached 500 clones on 2025-05-25T06:40:03.355466+00:00Z
@@ -0,0 +1,6 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "label": "Milestone",
4
+ "message": "1000 clones \ud83c\udf89\ud83c\udf89",
5
+ "color": "orange"
6
+ }