dar-backup 0.7.1__tar.gz → 0.7.2__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 (117) hide show
  1. {dar_backup-0.7.1/src/dar_backup → dar_backup-0.7.2}/Changelog.md +20 -3
  2. {dar_backup-0.7.1 → dar_backup-0.7.2}/PKG-INFO +120 -40
  3. {dar_backup-0.7.1 → dar_backup-0.7.2}/README.md +100 -39
  4. {dar_backup-0.7.1 → dar_backup-0.7.2}/doc/badges/badge_clones.json +1 -1
  5. dar_backup-0.7.2/doc/badges/milestone_500.txt +1 -0
  6. dar_backup-0.7.2/doc/badges/milestone_badge.json +6 -0
  7. dar_backup-0.7.2/doc/clones.json +190 -0
  8. {dar_backup-0.7.1 → dar_backup-0.7.2}/doc/dev.md +42 -33
  9. dar_backup-0.7.2/doc/weekly_clones.png +0 -0
  10. {dar_backup-0.7.1 → dar_backup-0.7.2}/pyproject.toml +34 -9
  11. {dar_backup-0.7.1 → dar_backup-0.7.2/src/dar_backup}/Changelog.md +20 -3
  12. {dar_backup-0.7.1 → dar_backup-0.7.2}/src/dar_backup/README.md +100 -39
  13. {dar_backup-0.7.1 → dar_backup-0.7.2}/src/dar_backup/__about__.py +1 -1
  14. {dar_backup-0.7.1 → dar_backup-0.7.2}/src/dar_backup/clean_log.py +1 -0
  15. {dar_backup-0.7.1 → dar_backup-0.7.2}/src/dar_backup/cleanup.py +11 -6
  16. {dar_backup-0.7.1 → dar_backup-0.7.2}/src/dar_backup/config_settings.py +16 -0
  17. {dar_backup-0.7.1 → dar_backup-0.7.2}/src/dar_backup/dar-backup.conf.j2 +4 -0
  18. {dar_backup-0.7.1 → dar_backup-0.7.2}/src/dar_backup/dar_backup.py +13 -7
  19. {dar_backup-0.7.1 → dar_backup-0.7.2}/src/dar_backup/installer.py +14 -4
  20. {dar_backup-0.7.1 → dar_backup-0.7.2}/src/dar_backup/manager.py +6 -2
  21. {dar_backup-0.7.1 → dar_backup-0.7.2}/src/dar_backup/rich_progress.py +1 -0
  22. {dar_backup-0.7.1 → dar_backup-0.7.2}/src/dar_backup/util.py +83 -8
  23. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/pathvalidate-3.2.3.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/black-25.1.0.dist-info/licenses}/LICENSE +1 -1
  24. dar_backup-0.7.2/venv/lib/python3.12/site-packages/blib2to3/LICENSE +254 -0
  25. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/tomli_w-1.0.0.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/charset_normalizer-3.4.2.dist-info/licenses}/LICENSE +1 -1
  26. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/pytablewriter-1.2.1.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/iniconfig-2.1.0.dist-info/licenses}/LICENSE +7 -7
  27. dar_backup-0.7.2/venv/lib/python3.12/site-packages/mypy_extensions-1.1.0.dist-info/licenses/LICENSE +27 -0
  28. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/more_itertools-10.3.0.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/nh3-0.2.21.dist-info/licenses}/LICENSE +3 -1
  29. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/python_slugify-8.0.4.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/pyproject_hooks-1.2.0.dist-info}/LICENSE +2 -2
  30. dar_backup-0.7.2/venv/lib/python3.12/site-packages/zipp-3.22.0.dist-info/licenses/LICENSE +18 -0
  31. dar_backup-0.7.1/doc/badges/milestone_badge.json +0 -6
  32. dar_backup-0.7.1/doc/clones.json +0 -110
  33. dar_backup-0.7.1/doc/weekly_clones.png +0 -0
  34. dar_backup-0.7.1/venv/lib/python3.12/site-packages/DataProperty-1.1.0.dist-info/LICENSE +0 -21
  35. dar_backup-0.7.1/venv/lib/python3.12/site-packages/chardet-5.2.0.dist-info/LICENSE +0 -502
  36. dar_backup-0.7.1/venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/LICENSE +0 -21
  37. dar_backup-0.7.1/venv/lib/python3.12/site-packages/iniconfig-2.0.0.dist-info/licenses/LICENSE +0 -19
  38. dar_backup-0.7.1/venv/lib/python3.12/site-packages/mbstrdecoder-1.1.4.dist-info/LICENSE +0 -21
  39. dar_backup-0.7.1/venv/lib/python3.12/site-packages/prettytable-3.16.0.dist-info/licenses/LICENSE +0 -30
  40. dar_backup-0.7.1/venv/lib/python3.12/site-packages/python_dateutil-2.9.0.post0.dist-info/LICENSE +0 -54
  41. dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/autocommand-2.2.2.dist-info/LICENSE +0 -166
  42. dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/backports.tarfile-1.2.0.dist-info/LICENSE +0 -17
  43. dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata-8.0.0.dist-info/LICENSE +0 -202
  44. dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/inflect-7.3.1.dist-info/LICENSE +0 -17
  45. dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/jaraco.collections-5.1.0.dist-info/LICENSE +0 -17
  46. dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/jaraco.context-5.3.0.dist-info/LICENSE +0 -17
  47. dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/jaraco.functools-4.0.1.dist-info/LICENSE +0 -17
  48. dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/jaraco.text-3.12.1.dist-info/LICENSE +0 -17
  49. dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/platformdirs-4.2.2.dist-info/licenses/LICENSE +0 -21
  50. dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/typeguard-4.3.0.dist-info/LICENSE +0 -19
  51. dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/vendored/packaging/LICENSE +0 -3
  52. dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/zipp-3.19.2.dist-info/LICENSE +0 -17
  53. dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools-78.1.0.dist-info/licenses/LICENSE +0 -17
  54. dar_backup-0.7.1/venv/lib/python3.12/site-packages/six-1.17.0.dist-info/LICENSE +0 -18
  55. dar_backup-0.7.1/venv/lib/python3.12/site-packages/tabledata-1.3.4.dist-info/LICENSE +0 -21
  56. dar_backup-0.7.1/venv/lib/python3.12/site-packages/tcolorpy-0.1.7.dist-info/LICENSE +0 -21
  57. dar_backup-0.7.1/venv/lib/python3.12/site-packages/typepy-1.3.4.dist-info/LICENSE +0 -21
  58. dar_backup-0.7.1/venv/lib/python3.12/site-packages/wcwidth-0.2.13.dist-info/LICENSE +0 -27
  59. dar_backup-0.7.1/venv/lib/python3.12/site-packages/zipp-3.19.2.dist-info/LICENSE +0 -17
  60. {dar_backup-0.7.1 → dar_backup-0.7.2}/.gitignore +0 -0
  61. {dar_backup-0.7.1 → dar_backup-0.7.2}/LICENSE +0 -0
  62. {dar_backup-0.7.1 → dar_backup-0.7.2}/doc/badges/README.md +0 -0
  63. {dar_backup-0.7.1 → dar_backup-0.7.2}/doc/doc.md +0 -0
  64. {dar_backup-0.7.1 → dar_backup-0.7.2}/packages/deb/README.md +0 -0
  65. {dar_backup-0.7.1 → dar_backup-0.7.2}/src/dar_backup/.darrc +0 -0
  66. {dar_backup-0.7.1 → dar_backup-0.7.2}/src/dar_backup/__init__.py +0 -0
  67. {dar_backup-0.7.1 → dar_backup-0.7.2}/src/dar_backup/command_runner.py +0 -0
  68. {dar_backup-0.7.1 → dar_backup-0.7.2}/src/dar_backup/dar-backup.conf +0 -0
  69. {dar_backup-0.7.1 → dar_backup-0.7.2}/src/dar_backup/dar_backup_systemd.py +0 -0
  70. {dar_backup-0.7.1 → dar_backup-0.7.2}/src/dar_backup/demo.py +0 -0
  71. {dar_backup-0.7.1 → dar_backup-0.7.2}/src/dar_backup/demo_backup_def.j2 +0 -0
  72. {dar_backup-0.7.1 → dar_backup-0.7.2}/src/dar_backup/exceptions.py +0 -0
  73. {dar_backup-0.7.1 → dar_backup-0.7.2}/venv/lib/python3.12/site-packages/SecretStorage-3.3.3.dist-info/LICENSE +0 -0
  74. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/anyio-4.4.0.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info}/LICENSE +0 -0
  75. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/build-1.2.1.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/build-1.2.2.post1.dist-info}/LICENSE +0 -0
  76. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/licenses}/LICENSE +0 -0
  77. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/cffi-1.16.0.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info}/LICENSE +0 -0
  78. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/cryptography-43.0.0.dist-info/license_files → dar_backup-0.7.2/venv/lib/python3.12/site-packages/cryptography-45.0.3.dist-info/licenses}/LICENSE +0 -0
  79. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/dar_backup-0.7.1.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/dar_backup-0.7.2.dist-info}/licenses/LICENSE +0 -0
  80. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/filelock-3.15.4.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/filelock-3.18.0.dist-info}/licenses/LICENSE +0 -0
  81. {dar_backup-0.7.1 → dar_backup-0.7.2}/venv/lib/python3.12/site-packages/hyperlink-21.0.0.dist-info/LICENSE +0 -0
  82. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/importlib_metadata-8.2.0.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/id-1.5.0.dist-info}/LICENSE +0 -0
  83. {dar_backup-0.7.1 → dar_backup-0.7.2}/venv/lib/python3.12/site-packages/jaraco.classes-3.4.0.dist-info/LICENSE +0 -0
  84. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/jaraco.context-5.3.0.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/jaraco.context-6.0.1.dist-info}/LICENSE +0 -0
  85. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/jaraco.functools-4.0.2.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/jaraco.functools-4.1.0.dist-info}/LICENSE +0 -0
  86. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/jeepney-0.8.0.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/jeepney-0.9.0.dist-info/licenses}/LICENSE +0 -0
  87. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/keyring-25.3.0.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/keyring-25.6.0.dist-info}/LICENSE +0 -0
  88. {dar_backup-0.7.1 → dar_backup-0.7.2}/venv/lib/python3.12/site-packages/markdown_it_py-3.0.0.dist-info/LICENSE +0 -0
  89. {dar_backup-0.7.1 → dar_backup-0.7.2}/venv/lib/python3.12/site-packages/mdurl-0.1.2.dist-info/LICENSE +0 -0
  90. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/more_itertools-10.3.0.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/more_itertools-10.7.0.dist-info}/LICENSE +0 -0
  91. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/packaging-24.1.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/packaging-25.0.dist-info/licenses}/LICENSE +0 -0
  92. {dar_backup-0.7.1 → dar_backup-0.7.2}/venv/lib/python3.12/site-packages/pathspec-0.12.1.dist-info/LICENSE +0 -0
  93. {dar_backup-0.7.1 → dar_backup-0.7.2}/venv/lib/python3.12/site-packages/pexpect-4.9.0.dist-info/LICENSE +0 -0
  94. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/platformdirs-4.2.2.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/platformdirs-4.3.8.dist-info}/licenses/LICENSE +0 -0
  95. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/pluggy-1.5.0.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/pluggy-1.6.0.dist-info/licenses}/LICENSE +0 -0
  96. {dar_backup-0.7.1 → dar_backup-0.7.2}/venv/lib/python3.12/site-packages/psutil-7.0.0.dist-info/LICENSE +0 -0
  97. {dar_backup-0.7.1 → dar_backup-0.7.2}/venv/lib/python3.12/site-packages/ptyprocess-0.7.0.dist-info/LICENSE +0 -0
  98. {dar_backup-0.7.1 → dar_backup-0.7.2}/venv/lib/python3.12/site-packages/pycparser-2.22.dist-info/LICENSE +0 -0
  99. {dar_backup-0.7.1 → dar_backup-0.7.2}/venv/lib/python3.12/site-packages/pygments-2.19.1.dist-info/licenses/LICENSE +0 -0
  100. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/pytest-8.3.2.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/pytest-8.4.0.dist-info/licenses}/LICENSE +0 -0
  101. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/pytest_cov-6.0.0.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/pytest_cov-6.1.1.dist-info/licenses}/LICENSE +0 -0
  102. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/pytest_timeout-2.3.1.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/pytest_timeout-2.4.0.dist-info/licenses}/LICENSE +0 -0
  103. {dar_backup-0.7.1 → dar_backup-0.7.2}/venv/lib/python3.12/site-packages/readme_renderer-44.0.dist-info/LICENSE +0 -0
  104. {dar_backup-0.7.1 → dar_backup-0.7.2}/venv/lib/python3.12/site-packages/requests-2.32.3.dist-info/LICENSE +0 -0
  105. {dar_backup-0.7.1 → dar_backup-0.7.2}/venv/lib/python3.12/site-packages/requests_toolbelt-1.0.0.dist-info/LICENSE +0 -0
  106. {dar_backup-0.7.1 → dar_backup-0.7.2}/venv/lib/python3.12/site-packages/rfc3986-2.0.0.dist-info/LICENSE +0 -0
  107. {dar_backup-0.7.1 → dar_backup-0.7.2}/venv/lib/python3.12/site-packages/rich-14.0.0.dist-info/LICENSE +0 -0
  108. {dar_backup-0.7.1 → dar_backup-0.7.2}/venv/lib/python3.12/site-packages/shellingham-1.5.4.dist-info/LICENSE +0 -0
  109. {dar_backup-0.7.1 → dar_backup-0.7.2}/venv/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/LICENSE +0 -0
  110. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/tomli-2.0.1.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/tomli_w-1.2.0.dist-info}/LICENSE +0 -0
  111. {dar_backup-0.7.1 → dar_backup-0.7.2}/venv/lib/python3.12/site-packages/tomlkit-0.13.2.dist-info/LICENSE +0 -0
  112. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/trove_classifiers-2024.7.2.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/trove_classifiers-2025.5.9.12.dist-info/licenses}/LICENSE +0 -0
  113. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/twine-6.0.1.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/twine-6.1.0.dist-info}/LICENSE +0 -0
  114. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/typing_extensions-4.12.2.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/typing_extensions-4.14.0.dist-info/licenses}/LICENSE +0 -0
  115. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/virtualenv-20.26.3.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/virtualenv-20.31.2.dist-info}/licenses/LICENSE +0 -0
  116. {dar_backup-0.7.1/venv/lib/python3.12/site-packages/setuptools/_vendor/packaging-24.2.dist-info → dar_backup-0.7.2/venv/lib/python3.12/site-packages/wheel/vendored/packaging}/LICENSE +0 -0
  117. {dar_backup-0.7.1 → dar_backup-0.7.2}/venv/lib/python3.12/site-packages/zstandard-0.23.0.dist-info/LICENSE +0 -0
@@ -1,7 +1,24 @@
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.7.2 - 2025-06-07
5
+
6
+ Github link: [v2-beta-0.7.2](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.7.2/v2)
7
+
8
+ ### Added
9
+
10
+ - Refactored build system, so all dependencies are kept in `pyproject.toml`. The dependencies are separated into dev, packaging and delivery phases.
11
+ - Use `build.sh` to setup pytest environment in Github workflow.
12
+
13
+ - Do the same to get a development environment going.
14
+
15
+ - Added 2 new optional params to control log file roll.
16
+ - Enrolling into [Snyk code checker](https://snyk.io/code-checker/) and learning how to work with it.
17
+
18
+ - Snyk helped pointing out vulnerable versions of some packages used.
19
+ - Input sanitization started, there is room for improvement.
20
+
21
+ ## v2-beta-0.7.1 - 2025-05-22
5
22
 
6
23
  Github link: [v2-beta-0.7.1](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.7.1/v2)
7
24
 
@@ -24,9 +41,9 @@ Github link: [v2-beta-0.7.1](https://github.com/per2jensen/dar-backup/tree/v2-be
24
41
  - Action + program to capture cloning stats and store them in v2/doc directory. Includes a badge.
25
42
 
26
43
  -- annotate new daily max number of clones
27
- -- Celebration badge when number of clones numbers are hit (just for fun)
44
+ -- Celebration badge when certain clones numbers are hit (just for fun)
28
45
 
29
- - Action + program to generate 12weeks cloning dashboard (a PNG) with annotation
46
+ - Action + program to generate 12 weeks cloning dashboard (a PNG) with annotation
30
47
  - Tweaked the auto completion setup in .bashrc, it stopped working for me unknown reasons (needs some looking into)
31
48
  - --verbose now affects the startup banner. Now it is printed only if --verbose is given
32
49
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dar-backup
3
- Version: 0.7.1
3
+ Version: 0.7.2
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,25 @@ 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: psutil>=7.0.0; extra == 'dev'
703
+ Requires-Dist: pytest; extra == 'dev'
704
+ Requires-Dist: pytest-cov>=6.1.1; extra == 'dev'
705
+ Requires-Dist: pytest-timeout>=2.4.0; extra == 'dev'
706
+ Requires-Dist: pytest>=8.4.0; extra == 'dev'
707
+ Requires-Dist: requests>=2.32.2; extra == 'dev'
708
+ Requires-Dist: wheel>=0.45.1; extra == 'dev'
709
+ Requires-Dist: zipp>=3.19.1; extra == 'dev'
710
+ Provides-Extra: packaging
711
+ Requires-Dist: build>=1.2.2; extra == 'packaging'
712
+ Requires-Dist: hatch>=1.14.1; extra == 'packaging'
713
+ Requires-Dist: hatchling>=1.27.0; extra == 'packaging'
714
+ Requires-Dist: twine>=6.1.0; extra == 'packaging'
696
715
  Description-Content-Type: text/markdown
697
716
 
698
717
  <!-- markdownlint-disable MD024 -->
@@ -700,15 +719,16 @@ Description-Content-Type: text/markdown
700
719
 
701
720
  **Reliable DAR backups, automated in clean Python**
702
721
 
703
- [![codecov](https://codecov.io/gh/per2jensen/dar-backup/branch/main/graph/badge.svg)](https://codecov.io/gh/per2jensen/dar-backup)
722
+ [![Codecov](https://codecov.io/gh/per2jensen/dar-backup/branch/main/graph/badge.svg)](https://codecov.io/gh/per2jensen/dar-backup)
723
+ [![Snyk Vuln findings](https://snyk.io/test/github/per2jensen/dar-backup/badge.svg)](https://snyk.io/test/github/per2jensen/dar-backup)
704
724
  ![CI](https://github.com/per2jensen/dar-backup/actions/workflows/py-tests.yml/badge.svg)
705
725
  [![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/)
726
+ [![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
727
  [![# 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
728
  [![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
729
 
710
730
  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.
731
+ the heavy lifting, together with the [parchive](https://github.com/Parchive/par2cmdline) suite in these scripts.
712
732
 
713
733
  This is the `Python` based [**version 2**](https://github.com/per2jensen/dar-backup/tree/main/v2) of `dar-backup`.
714
734
 
@@ -770,6 +790,7 @@ This is the `Python` based [**version 2**](https://github.com/per2jensen/dar-bac
770
790
  - [Skipping cache directories](#skipping-cache-directories)
771
791
  - [Progress bar + current directory](#progress-bar-and-current-directory)
772
792
  - [Shell Autocompletion](#shell-autocompletion)
793
+ - [Easy development setup](#easy-development-setup)
773
794
  - [Todo](#todo)
774
795
  - [Known Limitations / Edge Cases](#known-limitations--edge-cases)
775
796
  - [Reference](#reference)
@@ -904,17 +925,17 @@ Setup the demo configurations and show a few operations
904
925
  <br>
905
926
 
906
927
  ```bash
907
- # see reference section for options tweaking the install
928
+ # See reference section for options tweaking the install
908
929
  demo --install
909
930
 
910
931
  # create catalog database
911
932
  manager --create-db
912
933
 
913
- # do a FULL backup of the installed backup definition called `demo`
934
+ # FULL backup as defined in backup definition `demo`
914
935
  dar-backup --full-backup
915
936
 
916
- # list the contents of the backup
917
- dar-backup --list-contents $(dar-backup --list |tail -n 1 | cut -d " " -f1)
937
+ # List the contents of the backup
938
+ dar-backup --list-contents demo_FULL_$(date '+%F')
918
939
  ```
919
940
 
920
941
  <details>
@@ -956,7 +977,7 @@ Config file: /home/user/.config/dar-backup/dar-backup.conf
956
977
 
957
978
 
958
979
 
959
- (venv) $ dar-backup --list-contents $(dar-backup --list |tail -n 1 | cut -d " " -f1)
980
+ (venv) $ dar-backup --list-contents demo_FULL_$(date '+%F')
960
981
  ========== Startup Settings ==========
961
982
  dar-backup.py: 0.7.1
962
983
  dar path: /home/user/.local/dar/bin/dar
@@ -984,10 +1005,10 @@ Config file: /home/user/.config/dar-backup/dar-backup.conf
984
1005
  Perform a restore and show the restored files
985
1006
 
986
1007
  ```bash
987
- # restore all files in the backup
988
- dar-backup --restore $(dar-backup --list |tail -n 1 | cut -d " " -f1) --verbose
1008
+ # Restore all files in the backup
1009
+ dar-backup --restore demo_FULL_$(date '+%F') --verbose
989
1010
 
990
- # prove the files have been restored to directory as configured
1011
+ # Prove the files have been restored to directory as configured
991
1012
  find $HOME/dar-backup/restore
992
1013
  ```
993
1014
 
@@ -996,7 +1017,7 @@ find $HOME/dar-backup/restore
996
1017
  <summary>🎯 --restore details</summary>
997
1018
 
998
1019
  ```bash
999
- (venv) $ dar-backup --verbose --restore $(dar-backup --list |tail -n 1 | cut -d " " -f1)
1020
+ (venv) $ dar-backup --restore demo_FULL_$(date '+%F') --verbose
1000
1021
  ========== Startup Settings ==========
1001
1022
  dar-backup.py: 0.7.1
1002
1023
  dar path: /home/user/.local/dar/bin/dar
@@ -1034,7 +1055,7 @@ PAR2 enabled: True
1034
1055
 
1035
1056
  > ✅ **Next steps**
1036
1057
  >
1037
- > Tinker with `demo's` options:
1058
+ > Play with `demo's` options:
1038
1059
  >
1039
1060
  > - --root-dir (perhaps $HOME)
1040
1061
  > - --dir-to-backup (perhaps Pictures)
@@ -1169,8 +1190,9 @@ Please review the [Code of Conduct](https://github.com/per2jensen/dar-backup/blo
1169
1190
 
1170
1191
  ## Requirements
1171
1192
 
1193
+ - A linux system
1172
1194
  - dar
1173
- - par2
1195
+ - parchive (par2)
1174
1196
  - python3
1175
1197
  - python3-venv
1176
1198
 
@@ -1275,27 +1297,25 @@ See section 15 and section 16 in the supplied "LICENSE" file.
1275
1297
 
1276
1298
  ### 2 - configuration
1277
1299
 
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.
1300
+ The dar-backup [installer](#installer-options) application can be used to setup the needed directories for `dar-backup` to work.
1301
+ It creates necessary directories as prescribed in the config file and optionally creates manager databases.
1280
1302
 
1281
- `demo` is non-destructive and stops if some of the default directories exist.
1303
+ `installer` can also add configuration of shell auto completion.
1282
1304
 
1283
- Run `demo`
1305
+ Step 1:
1284
1306
 
1285
- ```bash
1286
- demo --install
1287
- ```
1307
+ Create a config file - [see details on config file](#config-file))
1288
1308
 
1289
- The output is
1309
+ Step 2:
1290
1310
 
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>`
1311
+ Create one or more backup definitions - [see details on backup definitions](#backup-definition-example)
1312
+
1313
+ Step 3:
1314
+
1315
+ Run the installer:
1316
+
1317
+ ```bash
1318
+ installer --config <path to dar-backup.conf> --install-autocompletion
1299
1319
  ```
1300
1320
 
1301
1321
  ### 3 - generate catalog databases
@@ -1310,9 +1330,7 @@ manager --create-db
1310
1330
 
1311
1331
  ### 4 - give dar-backup a spin
1312
1332
 
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.
1333
+ You are now ready to do backups as configured in your backup definition(s).
1316
1334
 
1317
1335
  Give `dar-backup`a spin:
1318
1336
 
@@ -1322,6 +1340,9 @@ dar-backup --full-backup --verbose
1322
1340
  # list backups
1323
1341
  dar-backup --list
1324
1342
 
1343
+ # list contents of a dar backup
1344
+ dar-backup --list-contents <TAB>... <choose a backup>
1345
+
1325
1346
  # see some examples on usage
1326
1347
  dar-backup --examples
1327
1348
 
@@ -1360,6 +1381,9 @@ Tilde `~` and environment variables can be used in the paths for various file lo
1360
1381
  ```text
1361
1382
  [MISC]
1362
1383
  LOGFILE_LOCATION=~/.dar-backup.log
1384
+ # optional parameters
1385
+ # LOGFILE_MAX_BYTES = 26214400 # 25 MB max file size is default, change as neeeded
1386
+ # LOGFILE_BACKUP_COUNT = 5 # 5 backup log files is default, change as needed
1363
1387
  MAX_SIZE_VERIFICATION_MB = 20
1364
1388
  MIN_SIZE_VERIFICATION_MB = 1
1365
1389
  NO_FILES_VERIFICATION = 5
@@ -1378,6 +1402,8 @@ TEST_RESTORE_DIR = /tmp/dar-backup/restore/
1378
1402
 
1379
1403
  [AGE]
1380
1404
  # age settings are in days
1405
+ # `cleanup` script removes archives and their .par redundancy files if older than configured.
1406
+ # `cleanup` does not remove FULL archives, unless specifically told to and a "y" is answered to "are you sure?".
1381
1407
  DIFF_AGE = 100
1382
1408
  INCR_AGE = 40
1383
1409
 
@@ -1533,6 +1559,12 @@ The name of the file is the name of the backup definition.
1533
1559
 
1534
1560
  You can use as many backup definitions as you need.
1535
1561
 
1562
+ > Note 👉
1563
+ >
1564
+ > Environment variables and tilde (~) not allowed here. `dar` does not expand them.
1565
+ >
1566
+ > See [TODO](#todo)
1567
+
1536
1568
  ```text
1537
1569
  # Switch to ordered selection mode, which means that the following
1538
1570
  # options will be considered top to bottom
@@ -1906,6 +1938,8 @@ These [.darrc](#darrc) settings make `dar` print the current directory being pro
1906
1938
 
1907
1939
  This is very useful in very long running jobs to get an indication that the backup is proceeding normally.
1908
1940
 
1941
+ The `dar` output is streamed to the `dar-backup-commands.log` file.
1942
+
1909
1943
  ### Separate log file for command output
1910
1944
 
1911
1945
  Dar-backup's log file is called `dar-backup.log`.
@@ -2067,8 +2101,54 @@ Then reload Zsh:
2067
2101
  source ~/.zshrc
2068
2102
  ```
2069
2103
 
2104
+ ## Easy development setup
2105
+
2106
+ It is very easy to have your own development environment.
2107
+
2108
+ ```bash
2109
+ git clone https://github.com/per2jensen/dar-backup.git
2110
+ cd dar-backup/v2
2111
+ ./build.py
2112
+ ```
2113
+
2114
+ This script:
2115
+
2116
+ - Creates a Python virtual environment called `venv`
2117
+ - pip install `hatch`
2118
+ - pip install the development environment as setup in pyproject.toml
2119
+
2120
+ --
2121
+
2122
+ ```text
2123
+ dev = [
2124
+ "pytest",
2125
+ "wheel>=0.45.1",
2126
+ "requests>=2.32.2",
2127
+ "coverage>=7.8.2",
2128
+ "pytest>=8.4.0",
2129
+ "pytest-cov>=6.1.1",
2130
+ "psutil>=7.0.0",
2131
+ "pytest-timeout>=2.4.0",
2132
+ "httpcore>=0.17.3",
2133
+ "h11>=0.16.0",
2134
+ "zipp>=3.19.1",
2135
+ "anyio>=4.4.0",
2136
+ "black>=25.1.0"]
2137
+ ```
2138
+
2139
+ ✅ Your environment is now ready to activate and test!
2140
+
2141
+ Activate and run the test suite:
2142
+
2143
+ ```bash
2144
+ source venv/bin/activate # activate the virtual env
2145
+ pytest # run the test suite
2146
+ ```
2147
+
2070
2148
  ## Todo
2071
2149
 
2150
+ - Perhaps look into pre-processing backup definitions. As `dar` does not expand env vars
2151
+ `dar-backup` could do so and feed the result to `dar`.
2072
2152
  - When run interactively, a progress bar during test and par2 generation would be nice.
2073
2153
  - Look into a way to move the .par2 files away from the `dar` slices, to maximize chance of good redundancy.
2074
2154
  - Add option to dar-backup to use the `dar` option `--fsa-scope none`
@@ -2233,12 +2313,12 @@ Sets up `dar-backup` according to provided config file.
2233
2313
  The installer creates the necessary backup catalog databases if `--create-db` is given.
2234
2314
 
2235
2315
  ```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
2316
+ --config Path to a config file. The configured directories will be created.
2317
+ --create-db Create backup catalog databases. Use this option with `--config`.
2318
+ --install-autocompletion Add bash or zsh auto completion - idempotent.
2319
+ --remove-autocompletion Remove the auto completion from bash or zsh.
2240
2320
  -v, --version Display version and licensing information.
2241
- -h, --help Displays usage info
2321
+ -h, --help Displays usage info.
2242
2322
  ```
2243
2323
 
2244
2324
  ### Demo options
@@ -2258,7 +2338,7 @@ Create directories:
2258
2338
  Sets up demo config files:
2259
2339
 
2260
2340
  - ~/.config/dar-backup/dar-backup.conf
2261
- - ~/.config/dar-backup/backup.d/default
2341
+ - ~/.config/dar-backup/backup.d/demo
2262
2342
 
2263
2343
  ```bash
2264
2344
  -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": "845",
5
5
  "color": "deeppink"
6
6
  }
@@ -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": "500 clones \ud83c\udf89",
5
+ "color": "goldenrod"
6
+ }