dar-backup 1.0.2__py3-none-any.whl → 1.1.0__py3-none-any.whl

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.
dar_backup/Changelog.md DELETED
@@ -1,430 +0,0 @@
1
- <!-- markdownlint-disable MD024 -->
2
- # dar-backup Changelog
3
-
4
- ## v2-1.0.2 - 2026-01-25
5
-
6
- ### Added
7
-
8
- - Streaming restore-test sampling using reservoir sampling to avoid holding full file lists in memory.
9
- - Configurable command output capture cap (`COMMAND_CAPTURE_MAX_BYTES`, default 100 KB) to limit in-memory stdout/stderr while still logging full output.
10
- - Streaming list output for `dar-backup --list-contents` and `manager --list-archive-contents` to avoid large in-memory buffers.
11
- - Test coverage additions for config parsing, util helpers, restore-test sampling edge cases, par2 slice helpers, and get_backed_up_files error paths.
12
- - Tests for missing source files during restore verification and for par2 generation order after verification.
13
- - CommandRunner test coverage for sanitize failure notes, text/binary output handling, timeouts, Popen failures, and TTY restore logic.
14
- - Tests for COMMAND_CAPTURE_MAX_BYTES defaults (0 and 1k) and binary stdout/stderr capture with truncation and log_output disabled.
15
- - Manager test coverage for create-db guardrails and catalog listing parsing/sorting across runner/subprocess paths.
16
- - Cleanup now reports PREREQ/POSTREQ failures cleanly and sends Discord failure notifications when configured.
17
- - New trace logger that always logs at DEBUG and captures stacktraces if they happens. Default max size is 10MB + 1 rollover file.
18
-
19
- ### Changed
20
-
21
- - BUGFIX: Ensure existing files are removed before restore verification to prevent false positives.
22
- - Clears out restore-test directory on program start to ensure a clean slate.
23
- - Restore-test selection now streams DAR XML listings and samples candidates without loading all entries into RAM.
24
- - `get_backed_up_files` uses incremental XML parsing to reduce memory use for large archives.
25
- - Restore verification now logs a warning and continues when a source or restored file is missing during comparison.
26
- - CommandRunner supports per-command capture cap overrides (disable cap with `capture_output_limit_bytes=-1`).
27
- - Cleanup now rejects unsafe archive names when `--cleanup-specific-archives` is used to prevent accidental deletions.
28
- - Removed deprecated PAR2 layout/mode settings and simplified PAR2 cleanup to delete all matching .par2 artifacts.
29
- - Config templates/docs updated to drop PAR2_LAYOUT/PAR2_MODE references.
30
- - [Snyk] Python 3.11 required in pyproject.toml. Snyk has flagged a vulnerabilly in an xml parser that requires the bump to 3.11.
31
- - Config parsing errors now emit concise messages (no stack trace) and trigger Discord failure notifications in CLI tools.
32
-
33
- ## v2-1.0.1 - 2026-01-09
34
-
35
- ### Added
36
-
37
- - Cleanup `--dry-run` to preview archive, PAR2, and catalog deletions.
38
- - Completion: `cleanup` supports comma-separated archive lists with whitespace normalization.
39
- - Completion: `cleanup` now offers archive-only suggestions after `--cleanup-specific-archives`.
40
- - Tests for completion list parsing and cleanup dry-run.
41
- - Optional Discord webhook notifications: `send_discord_message` helper with config-over-env precedence (`DAR_BACKUP_DISCORD_WEBHOOK_URL`), JSON payload, timeout, and detailed error logging (HTTP body).
42
- - Backup runs now emit a per-backup-definition status message (`YYYY-MM-DD_HH:MM - dar-backup, <backup definition>: SUCCESS|FAILURE`).
43
- - dar-backup `--list-definitions` option to list backup definitions from `BACKUP.D_DIR`.
44
- - Test coverage: webhook unit tests plus optional live Discord test (guarded by `live_discord` marker).
45
- - Automatic preflight checks now run before every invocation (or standalone via `--preflight-check`) to verify required directories, write access, and availability of `dar`/`par2` binaries.
46
- - PAR2 enhancements: optional PAR2_DIR storage, per-archive parity mode, per-backup overrides, and parity manifests to support verify/repair against archives in a different directory.
47
- - New tests for PAR2_DIR + per-archive verify/repair flow, per-backup overrides.
48
- - Documentation: new config options and per-backup overrides are documented in the README “Config changes” section.
49
- - Restore test filters: optional case-insensitive prefix/suffix/regex exclusions for restore-test file sampling, plus a dedicated unit test.
50
- - Env var `DAR_BACKUP_CONFIG_FILE` now supported.
51
-
52
- ### Changed
53
-
54
- - Completion: `dar-backup -l -d <def>` and `cleanup --cleanup-specific-archives -d <def>` now narrow archive suggestions by definition and prefix.
55
- - Pytest defaults exclude live Discord tests; enable with `-m live_discord` when a webhook is available.
56
- - Skip Discord notifications for the demo/example backup definition to avoid spam during sample runs.
57
- - Discord backup status now includes WARNING when a backup is skipped because it already exists.
58
- - Completer logging now uses a per-user logfile and falls back safely if the completer logger setup fails.
59
- - Verification failures and existing-backup skips now emit exit code 2 (warning), while errors continue to emit exit code 1.
60
- - Cleanup deletion hardening (Snyk): validate archive names and enforce safe, base-dir-bound file deletions.
61
- - Snyk badge links to [Snyk dar-backup page](https://security.snyk.io/vuln/?search=dar-backup)
62
- - Removed the rich progress bar wrapper from backup/verify runs to simplify core execution.
63
- - PAR2 tests now align with per-archive parity flow (single create command, repair via `.par2` set).
64
- - Slice-order test reads slice numbers from the logged `par2 create` command output.
65
- - CommandRunner now restores terminal attributes after subprocesses and runs with stdin set to `/dev/null` by default to avoid terminal echo issues.
66
-
67
- ## v2-1.0.0 - 2025-10-09
68
-
69
- Github link: [v2-1.0.0](https://github.com/per2jensen/dar-backup/tree/v2-1.0.0/v2)
70
-
71
- ### Added
72
-
73
- - Version 2 **1.0.0** declared
74
- - A bunch of test cases
75
- - Codecov config changes
76
-
77
- ## v2-beta-0.8.4 - 2025-08-23
78
-
79
- Github link: [v2-beta-0.8.4](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.8.4/v2)
80
-
81
- ### Added
82
-
83
- - Option '-D' only added when restoring FULL backups.
84
- - 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.
85
-
86
- ## v2-beta-0.8.3 - 2025-08-23
87
-
88
- Github link: [v2-beta-0.8.3](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.8.3/v2)
89
-
90
- ### Added
91
-
92
- - Dar-backup now deletes files if noted as "removed" in the archive catalog for DIFF and INCR backups.
93
- - This ensures a restore of a FULL + DIFF + INCR matches the files in the source directories.
94
- - Options '-wa' & '-/ Oo' added to the restore command.
95
-
96
- ## v2-beta-0.8.2 - 2025-07-17
97
-
98
- Github link: [v2-beta-0.8.2](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.8.2/v2)
99
-
100
- ### Added
101
-
102
- - Security hardening: CommandRunner now performs strict command-line sanitization
103
- - Disallows potentially dangerous characters (e.g. ;, &, |) in command arguments
104
- - Prevents injection-style misuse when restoring specific files or invoking custom commands
105
-
106
- - Documentation:
107
- - New [README section](https://github.com/per2jensen/dar-backup?tab=readme-ov-file#limitations-on-file-names-with-special-characters) explains filename restrictions and safe workarounds (e.g. restoring directly with dar, if needed)
108
- - Includes a Markdown table listing all disallowed characters
109
-
110
- - Test suite:
111
- - Existing test cases updated to comply with the new sanitization rules
112
- - Additional tests ensure CommandRunner handles large binary output and edge cases cleanly
113
-
114
- ## v2-beta-0.8.1 - 2025-07-16
115
-
116
- Github link: [v2-beta-0.8.1](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.8.1/v2)
117
-
118
- ### Added
119
-
120
- - FIX: runner now logs an error and fills more data into the returned CommandResult.
121
-
122
- ## v2-beta-0.8.0 - 2025-06-13
123
-
124
- Github link: [v2-beta-0.8.0](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.8.0/v2)
125
-
126
- ### Added
127
-
128
- - Modified clone dashboard generator to produce easier to read dashboard and be more robust.
129
- - Dir_traversal sanitation: clean_log.py now only accepts files in configured log directory to `--file` option.
130
-
131
- ## v2-beta-0.7.2 - 2025-06-07
132
-
133
- Github link: [v2-beta-0.7.2](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.7.2/v2)
134
-
135
- ### Added
136
-
137
- - Refactored build system, so all dependencies are kept in `pyproject.toml`. The dependencies are separated into dev, packaging and delivery phases.
138
- - Use `build.sh` to setup pytest environment in Github workflow.
139
-
140
- - Do the same to get a development environment going.
141
-
142
- - Added 2 new optional params to control log file roll.
143
- - Enrolling into [Snyk code checker](https://snyk.io/code-checker/) and learning how to work with it.
144
-
145
- - Snyk helped pointing out vulnerable versions of some packages used.
146
- - Input sanitation started, there is room for improvement.
147
-
148
- ## v2-beta-0.7.1 - 2025-05-22
149
-
150
- Github link: [v2-beta-0.7.1](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.7.1/v2)
151
-
152
- ### Added
153
-
154
- - Quick Guide with reworked `demo` program.
155
- - util.get_invocation_command_line() used to print command line.
156
- - Installer to setup directories and catalog databases as prescribed in config file.
157
- - Documentation on dar-backup --selection option improved.
158
- - README.md clean up, signing section now with multiple collabsible sections.
159
- - Install instructions fixed after trial in fresh utuntu VM.
160
- - Small license display refac.
161
- - .deb package for Ubuntu can now be built (draft quality)
162
-
163
- -- DO NOT use unless for testing on an empty VM
164
- -- no real checking if this package aligns with Ubuntu's package requirements
165
- -- package `inputimeout` is installed via pip as Ubuntu does not have a .deb
166
-
167
- - SPDX license header added to many files
168
- - Action + program to capture cloning stats and store them in v2/doc directory. Includes a badge.
169
-
170
- -- annotate new daily max number of clones
171
- -- Celebration badge when certain clones numbers are hit (just for fun)
172
-
173
- - Action + program to generate 12 weeks cloning dashboard (a PNG) with annotation
174
- - Tweaked the auto completion setup in .bashrc, it stopped working for me unknown reasons (needs some looking into)
175
- - --verbose now affects the startup banner. Now it is printed only if --verbose is given
176
-
177
- ## v2-beta-0.6.20.1 - 2025-05-04
178
-
179
- Github link: [v2-beta-0.6.20.1](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.6.20.1/v2)
180
-
181
- ### Added
182
-
183
- - FIX: bash/zsh completers fixed to support MANAGER_DB_DIR config if set
184
- - `cleanup` and `manager` completer now sorts archives by \<backup-definition> and \<archive date> (so not using \<type>)
185
-
186
- ## v2-beta-0.6.20 - 2025-05-03
187
-
188
- Github link: [v2-beta-0.6.20](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.6.20/v2)
189
-
190
- ### Added
191
-
192
- - show_version() moved to util and tests for dar-backup, manager and cleanup
193
- - startup informational messages now works the same across the scripts
194
- - Improved ConfigSettings class to handle optional configuration keys
195
-
196
- -- test cases added
197
-
198
- - Optional config parameter: MANAGER_DB_DIR, ideally to point to another disk for safe keeping backup catalogs
199
-
200
- -- test cases added
201
-
202
- ## v2-beta-0.6.19 - 2025-04-21
203
-
204
- Github link: [v2-beta-0.6.19](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.6.19/v2)
205
-
206
- ### Added
207
-
208
- - removed a BackupError in the verify() to reduce noise in logs and let the rest of "compares" run.
209
- - Added bash and zsh auto completion for a nicer CLI experience.
210
-
211
- -- See [README for details](https://github.com/per2jensen/dar-backup?tab=readme-ov-file#shell-autocompletion)
212
-
213
- - Improvement to command_runner.run(), more robust decoding
214
-
215
- - Manager --add-specific-archive now gives a prompt with a warning if user attempts to add a catalog that breaks chronology. The user is allowed to go forward and ignore the warning or can choose to abort. The program times out after a little while and discards the operation.
216
-
217
- ## v2-beta-0.6.18 - 2025-04-05
218
-
219
- Github link: [v2-beta-0.6.18](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.6.18/v2)
220
-
221
- ### Added
222
-
223
- - setup of package signing using key: `dar-backup@pm.me` added.
224
- -- key created
225
- -- docs updated
226
- -- release script created
227
- -- key added top OpenPGP.org key server
228
- -- pypi setup modified and set to use the new Signing subkey
229
- - README.md and Changelog.md now included in the wheel and installed on `pip install dar-backup`
230
- - new options to make it easy to find docs (--readme, --readme-pretty, --changelog, --changelog-pretty)
231
- - Generate systemd user units, and optionally install them
232
- - Progress bar and status line showing current directory being backed up (thanks to `rich`)
233
- - Pytest coverage now computed and displayed on Github
234
- - 2 code improvements and multiple cleanup tests added
235
- - Many test cases added, manager now in good pytest shape
236
-
237
- ## v2-beta-0.6.17 - 2025-03-29
238
-
239
- Github link: [v2-beta-0.6.17](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.6.17/v2)
240
-
241
- ### Added
242
-
243
- - prereq and postreq logging now using debug level.
244
- - documentation: updates, links and fixes. Test coverage result included.
245
- - multiple .info() modified to debug() to keep the log file easily readable.
246
- - FIX: test case found an error in config_setting init
247
- - more testcases to expand coverage
248
- - code reorganization. util.run_command() replaced with CommandRunner class.
249
-
250
- ## v2-beta-0.6.16- 2025-03-22
251
-
252
- Github link: [v2-beta-0.6.16](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.6.16/v2)
253
-
254
- ### Added
255
-
256
- - The generated filtered darrc file from `-suppress-dar-msg` now removed at program exit. Test case modified to check for removal
257
- - README.md updated to reflect recent changes
258
- - `cleanup` now requires a confirmation to delete a _FULL_ archive (using the option: --cleanup-specific-archives)
259
- - Module `inputimeout` used and installed into the venv, when `dar-backup` is installed
260
- - Much more clean log file in default config, use `--verbose` for more information, `--log-level debug` for even more
261
- - Added option --test-mode to `cleanup` to run tests verifying that FULL archives are deleted only if the user answers "yes"
262
-
263
- ## v2-beta-0.6.15- 2025-03-16
264
-
265
- Github link: [v2-beta-0.6.15](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.6.15/v2)
266
-
267
- ### Added
268
-
269
- - Restore test details now logged only if args.verbose is set (less clutter in log file)
270
- - `--log-stdout` now does not show run_command() output from program being run
271
- - Report error and exit code `1` if manager did not add an archive to it's database
272
-
273
- ## v2-beta-0.6.14 - 2025-03-02
274
-
275
- Github link: [v2-beta-0.6.14](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.6.14/v2)
276
-
277
- ### Added
278
-
279
- - `dar` catalog in xml now parsed correctly, test case added
280
- - error handling improved, --verbose print terse list of errors on exit, test case added
281
- - test cases simulating disk corruption being worked on, not yet in test suite
282
- - postreq test case improved
283
- - manager is not given "-ai" when adding catalogs (might give an issue on cloud backups, investigate....)
284
-
285
- ## v2-beta-0.6.13.1 - 2025-02-25
286
-
287
- Github link: [v2-beta-0.6.13.1](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.6.13.1/v2)
288
-
289
- ### FIX
290
-
291
- - remove a leftover print() in run_command()
292
-
293
- ## v2-beta-0.6.13 - 2025-02-25
294
-
295
- Github link: [v2-beta-0.6.13](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.6.13/v2)
296
-
297
- ### Added
298
-
299
- - README.md now good MarkDown, fixed reference section
300
- - Changelog.md now good MarkDown
301
- - --suppress-dar-msg option added (one way to cancel the verbosity options in .darrc)
302
- - separate log file for command outputs. This keeps the core dar-backup.log more readable
303
-
304
- ## v2-beta-0.6.12 - 2025-02-23
305
-
306
- Github link: [v2-beta-0.6.12](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.6.12/v2)
307
-
308
- ### Added
309
-
310
- - support environment variables in paths, both on command line and in config files
311
- - test case for env vars in dar-backup.conf added
312
- - test case for ~ in dar-backup.conf added
313
- - dar-backup.py does not import sys, use from/import of specific functions
314
- - fix handling of missing config file
315
- - if config file, .darrc or backup definition not found, return 127
316
- - installer added to demo dar-back, installs demo config and backup definition
317
-
318
- ## v2-beta-0.6.11 - 2025-02-23
319
-
320
- Github link: [v2-beta-0.6.11](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.6.11/v2)
321
-
322
- ### Added
323
-
324
- - run_command() fixed to handle missing command. Test case added.
325
- - refactoring xml parsing of dar list output. From recursive to iterating the xml document.
326
- - a bit more input verification to ensure the given config file actually exists.
327
- - README.md updated with useful information from v1 + some tweaks
328
-
329
- ## v2-beta-0.6.10 - 2025-02-22
330
-
331
- Github link: [v2-beta-0.6.10](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.6.10/v2)
332
-
333
- ### Added
334
-
335
- - unit test verifying no compression of many compressed file formats
336
- - README.md lint fixes + a TOC
337
-
338
- ## v2-beta-0.6.9 - 2025-02-21
339
-
340
- Github link: [v2-beta-0.6.9](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.6.9/v2)
341
-
342
- ### Added
343
-
344
- - clean-log script added (can remove much of `dar's` output that might be put in the dar-backup log file)
345
- - ChatGPT generated pytest cases
346
-
347
- ## v2-beta-0.6.8 - 2025-02-13
348
-
349
- Github link: [v2-beta-0.6.8](https://github.com/per2jensen/dar-backup/tree/v2-beta-0.6.8/v2)
350
-
351
- ### Added
352
-
353
- - switching from alpha --> beta status
354
- - manager --list-archive-contents added
355
-
356
- ## v2-alpha-0.6.7 - 2025-02-11
357
-
358
- Github link: [v2-alpha-0.6.7](https://github.com/per2jensen/dar-backup/tree/v2-alpha-0.6.7/v2)
359
-
360
- ### Added
361
-
362
- - Cleanups now remove catalogs from the catalog databases
363
-
364
- ## v2-alpha-0.6.6 - 2025-02-02
365
-
366
- Github link: [v2-alpha-0.6.6](https://github.com/per2jensen/dar-backup/tree/v2-alpha-0.6.6/v2)
367
-
368
- ### Added
369
-
370
- - Archive catalogs now added to database(s) after a backup has been performed
371
-
372
- ## v2-alpha-0.6.5 - 2025-01-24
373
-
374
- Github link: [v2-alpha-0.6.5](https://github.com/per2jensen/dar-backup/tree/v2-alpha-0.6.5/v2)
375
-
376
- ### Added
377
-
378
- - Changelog.md added
379
- - LICENSE added to the dar-backup wheel package
380
- - Link to Changelog added to PyPi page
381
-
382
- ## v2-alpha-0.6.4 - 2025-01-23
383
-
384
- Github link: [v2-alpha-0.6.4](https://github.com/per2jensen/dar-backup/tree/v2-alpha-0.6.4/v2)
385
-
386
- ### Added
387
-
388
- - Stdout & stderr from called programs are streamed to logfile in real time. This makes it easier to see if a very long running process is still active.
389
- - .darrc: -vd & -vf options enabled, so `dar` emits information when entering a directory and print some stats when leaving it
390
- - manager --remove-specific-archive option added
391
- - manager --list-catalog option added
392
- - improved tests for manager
393
- - manager --add-dir option added
394
- - verify slices are par2 processed by increasing slice number
395
- - reorg unit test,
396
- - added test for --restore-dir
397
-
398
- ## v2-alpha-0.6.2 - 2025-01-12
399
-
400
- Github link: [v2-alpha-0.6.2](https://github.com/per2jensen/dar-backup/tree/v2-alpha-0.6.2/v2)
401
-
402
- ### Added
403
-
404
- - refactor backup functions
405
- - minor doc fixes
406
- - par2: process slices by increasing #
407
- - dar-backup --verbose option: print info on par2 generation
408
-
409
- ## v2-alpha-0.6.1 - 2025-01-05
410
-
411
- Github link: [v2-alpha-0.6.1](https://github.com/per2jensen/dar-backup/tree/v2-alpha-0.6.1/v2)
412
-
413
- ### Added
414
-
415
- - FIX timeout error on run_command(). Set a long timeout on "heavy" operations. Default is 30 seconds.
416
- - Log the __str__ of CommandResult on return from run_command()
417
-
418
- ## v2-alpha-0.6.0 - 2025-01-05
419
-
420
- Github link: [v2-alpha-0.6.0](https://github.com/per2jensen/dar-backup/tree/v2-alpha-0.6.0/v2)
421
-
422
- ### Added
423
-
424
- - pytest session logger now used
425
- - if a prereq fails, dar-backup must fail
426
- - document 0.6.0 breaking change
427
- - FIX: ensure run_command() works correctly when a command writes a lot of data to stdout
428
- - updated README with details on --restore-dir option
429
-
430
- <!-- markdownlint-enable MD024 -->