Compare commits

...

913 commits

Author SHA1 Message Date
e7b7560477 Bump version for release.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2022-08-21 21:54:13 -07:00
317dc7fbce Add "before_actions" and "after_actions" command hooks that run before/after all the actions for each repository, update docs to cover per-repository configurations (#463).
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-21 21:48:37 -07:00
97fad15009 Switch to more accessible header permalink anchors in documentation. 2022-08-21 21:48:07 -07:00
462326406e Drop only-style actions like "--create", rename "prune --files" to "prune --list", and add "--list" alias to "create" and "export-tar" (#571).
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-21 14:25:16 -07:00
bbdf4893d1 Clarify --format flag in documentation.
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-19 15:27:03 -07:00
ef6617cfe6
Add link to Borg list --format documentation.
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-19 15:16:56 -07:00
dbef0a440f
Merge branch 'master' into patch-2 2022-08-19 15:16:17 -07:00
22628ba5d4 Update ssh:// examples in documentation to use relative paths on the remote machine (#557).
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-19 12:00:40 -07:00
8576ac86b9 Fix incorrect version in documentation (#557).
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-19 09:44:31 -07:00
540f9f6b72 Add missing test for "transfer" action (#557).
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-19 09:40:29 -07:00
f9d7faf884 Fix mount action to work without archive again (#557).
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-18 23:33:05 -07:00
7dee6194a2 Add new "transfer" action for Borg 2 (#557).
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-18 23:06:51 -07:00
68f9c1b950 Add generate-borgmatic-config end-to-end test.
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-18 14:28:46 -07:00
43d711463c Add additional command-line flags to rcreate action (#557). 2022-08-18 14:28:12 -07:00
00255a2437 Various documentation edits for Borg 2 (#557).
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-18 10:19:11 -07:00
b40e9b7da2 Ignore archive filter parameters passed to list action when --archive is given (#557).
All checks were successful
continuous-integration/drone Build is passing
2022-08-18 09:59:48 -07:00
89d201c8ff Fleshing out NEWS for the Borg 2 changes.
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-17 21:54:00 -07:00
f47c98c4a5 Rename several configuration options to match Borg 2 (#557).
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-17 21:14:58 -07:00
3b6ed06686 Add --other-repo flag to rcreate action (#557).
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-17 17:33:09 -07:00
57009e22b5 Use flag-related utility functions in info action (#557).
Some checks are pending
continuous-integration/drone/push Build is running
2022-08-17 17:11:02 -07:00
3ab7a3b64a Replace use of --prefix with --glob-archives in info action (#557).
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-17 15:36:19 -07:00
596dd49cf5 Use --glob-archives instead of --prefix on rlist command (#557).
Some checks are pending
continuous-integration/drone/push Build is running
2022-08-17 14:26:35 -07:00
28d847b8b1 Warn and tranform on non-ssh://-style repositories (#557).
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-17 10:13:11 -07:00
2a1c6b1477 Update documentation with newly required ssh:// repository syntax for Borg 2 (#557).
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-16 11:41:35 -07:00
30abd0e3de Update borg action for Borg 2 support (#557).
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-16 09:30:00 -07:00
f36e38ec20 Update mount action for Borg 2 support (#557).
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-15 19:32:37 -07:00
d807ce095e Update export-tar action for Borg 2 support (#557).
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-15 17:34:12 -07:00
7626fe1189 Disallow borg list --json with --archive or --find (#557).
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-15 15:40:28 -07:00
cc04bf57df Update list action for Borg 2 support, add rinfo action, and update extract consistency check for Borg 2.
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-15 15:04:40 -07:00
cce6d56661 Update extract action for Borg 2 support (#557).
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-13 23:07:29 -07:00
a05d0f378e Factor out repository/archive flags formatting code from create action (#557).
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-13 22:50:14 -07:00
94321aec7a Update compact action for Borg 2 support (#557).
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-13 22:07:15 -07:00
4a55749bd2 Update prune action for Borg 2 support (#557).
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-13 17:26:51 -07:00
2898e63166 Update create action for Borg 2 support (#557).
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-12 23:54:13 -07:00
c7176bd00a Add rinfo action for Borg 2 support (#557).
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-12 23:06:56 -07:00
647ecdac29 Borg 2 support in borgmatic check action (#557).
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-12 15:46:33 -07:00
e7a8acfb96 Add missing rinfo action source files (#557).
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-12 14:59:03 -07:00
622caa0c21 Support for Borg 2's rcreate and rinfo sub-commands (#557).
Some checks failed
continuous-integration/drone/push Build is failing
2022-08-12 14:53:20 -07:00
22149c6401 Switch to self-hosted container registry for borgmatic documentation image.
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-01 21:17:59 -07:00
9aece3936a Modify "mount" and "extract" actions to require the "--repository" flag when multiple repositories are configured (#566).
All checks were successful
continuous-integration/drone/push Build is passing
2022-07-25 11:30:02 -07:00
c7e4e6f6c9 Add Healthchecks "verify_tls" option to NEWS.
All checks were successful
continuous-integration/drone/push Build is passing
2022-07-23 23:16:06 -07:00
bcad0de1a4
Add verify_tls option for Healthchecks to optionally disable TLS verification. 2022-07-23 23:11:41 -07:00
Uli
5c6407047f feat: add verify_tls flag for Healthchecks 2022-07-24 07:37:00 +02:00
6ddae20fa1 Fix handling of "repository" and "data" consistency checks to prevent invalid Borg flags (#565).
All checks were successful
continuous-integration/drone/push Build is passing
2022-07-23 21:02:21 -07:00
23feac2f4c Bump version for release.
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2022-07-19 20:32:41 -07:00
16066942e3 Fix traceback with "create" action and "--json" flag when a database hook is configured (#563).
All checks were successful
continuous-integration/drone/push Build is passing
2022-07-19 10:25:10 -07:00
Jelle @ Samson-IT
f7c8e89a9f
update format specifier syntax link to use anchor 2022-07-13 21:52:21 +02:00
Jelle @ Samson-IT
ba377952fd
Added link to borgbackup list --format docs
I kept searching for this link, so it's time to add it to official docs.
2022-07-13 13:52:48 +02:00
e85d551eac Fix all database hooks to error when the requested database to restore isn't present in the Borg archive (#560).
All checks were successful
continuous-integration/drone/push Build is passing
2022-07-06 23:21:24 -07:00
2b23a63a08 Add end-to-end test for overrides.
All checks were successful
continuous-integration/drone/push Build is passing
2022-07-06 18:20:51 -07:00
c0f48e1071 Fix command-line "--override" flag to continue supporting old configuration file formats (#561).
All checks were successful
continuous-integration/drone/push Build is passing
2022-07-06 18:14:44 -07:00
6005426684 Update documentation about configuring multiple consistency checks or multiple databases (#559).
All checks were successful
continuous-integration/drone/push Build is passing
2022-07-03 22:24:25 -07:00
673ed1a2d3 Clarify check frequency documentation in regards to multiple configuration files.
All checks were successful
continuous-integration/drone/push Build is passing
2022-07-02 09:40:49 -07:00
992f62edd2 Bump version for release.
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2022-06-30 22:14:41 -07:00
f1ffa1da1d Add another recommended flag to the backup documentation (#554).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2022-06-30 16:54:22 -07:00
457ed80744 Fix environment variable plumbing so options in one configuration file aren't used for others (#555).
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-30 13:42:17 -07:00
1fc028ffae In documentation, be more explicit about default actions (#554).
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-29 21:32:00 -07:00
10723efc68 Fix all monitoring hooks to warn if the server returns an HTTP 4xx error (#554).
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-29 21:19:40 -07:00
2e0b2a308f Clarify --files flag action in documentation (#554).
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-29 09:20:13 -07:00
bd4d109009 Fix logging to include the full traceback when Borg experiences an internal error (#553).
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-28 13:38:24 -07:00
ae25386336 Update release script to abort if there are local changes. Prevents accidentally tagging a .dev0 changeset for release.
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-25 09:42:05 -07:00
d929313d45 Bump version.
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-24 10:18:01 -07:00
d372a86fe6 Code formatting.
Some checks reported errors
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build encountered an error
2022-06-23 10:41:04 -07:00
e306f03e1d Merge branch 'master' of ssh://projects.torsion.org:3022/borgmatic-collective/borgmatic
Some checks failed
continuous-integration/drone/push Build is failing
2022-06-23 10:28:09 -07:00
8336165f23 Update documentation with environment variable escaping (#546). 2022-06-23 10:25:46 -07:00
c664c6b17b Fix escaped environment variable in configuration (#546).
Some checks failed
continuous-integration/drone/push Build is failing
Reviewed-on: #549
2022-06-23 17:16:09 +00:00
b63c854509 Fix escaped environment variable in configuration
- when an env variable is escaped in the configuration file, we expect
  not to resolve it and remove the escape char `\`
2022-06-17 09:50:56 +02:00
aa013af25e Remove some whitespace around "New in version ..." documentation labels.
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-16 20:49:15 -07:00
cc32f0018b Start formalizing how new features are flagged by version in documentation.
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-16 20:23:16 -07:00
dfc4db1860 Document environment variable interpolation (#546).
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-16 15:30:53 -07:00
35706604ea Upgrade documentation base images. 2022-06-16 15:22:59 -07:00
6d76e8e5cb Code formatting.
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-16 14:21:18 -07:00
aecb6fcd74 Code style, rename command-line flag, and move new code into its own file (#546)
Some checks failed
continuous-integration/drone/push Build is failing
2022-06-16 11:35:24 -07:00
ea45f6c4c8 Environment variable resolution in configuration file (#546).
Some checks failed
continuous-integration/drone/push Build is failing
Reviewed-on: #548
2022-06-16 18:18:12 +00:00
97b5cd089d Allow environment variable resolution in configuration file
- all string fields containing an environment variable like ${FOO} will
  be resolved
- supported format ${FOO}, ${FOO:-bar} and ${FOO-bar} to allow default
  values if variable is not present in environment
- add --no-env argument for CLI to disable the feature which is enabled
  by default

Resolves: #546
2022-06-16 18:52:54 +02:00
f2c2f3139e Add periods to ntfy config descriptions.
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-10 09:42:41 -07:00
dc4e7093e5 Remove link to related software that hasn't seen updates in the past couple years.
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-09 19:31:50 -07:00
b6f1025ecb Bump version for release.
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2022-06-09 16:38:34 -07:00
65b2fe86c6 Fix Bash completion script to no longer alter your shell's settings.
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-09 16:29:54 -07:00
0e90a80680 Add links in documentation for ntfy monitoring hook (#543).
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-09 13:41:22 -07:00
7648bcff39 Add a hook for sending push notifications via ntfy.sh.
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #543
2022-06-09 20:26:06 +00:00
a8b8d507b6
add a hook for sending push notifications via ntfy.sh 2022-06-09 21:10:38 +01:00
3561c93d74 Fix Healthchecks tests that leak global state, breaking downstream tests (discovered in #543).
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-09 11:05:44 -07:00
331a503a25 Document the borgmatic version in which "borgmatic list --find" is available (#541).
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-03 16:55:54 -07:00
9aefb5179f Fix None find paths (#541).
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-03 15:20:05 -07:00
d14f22e121 Add "borgmatic list --find" flag for searching for files across multiple archives (#541).
Some checks failed
continuous-integration/drone/push Build is failing
2022-06-03 15:12:14 -07:00
b6893f6455 Exclude deprecated "borg list --successful" flag from getting passed to Borg.
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-02 21:14:25 -07:00
80ec3e7d97 Deprecate "borgmatic list --successful" flag, as listing only non-checkpoint (successful) archives is now the default in newer versions of Borg.
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-02 20:35:39 -07:00
cd834311eb Clarify completion docs.
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-01 10:57:23 -07:00
d751cceeb0 Merge branch 'master' of ssh://projects.torsion.org:3022/borgmatic-collective/borgmatic 2022-06-01 10:38:05 -07:00
ce78b07e4b Add macOs to install and Bash completion documentation.
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #540
2022-06-01 17:37:51 +00:00
87f3c50931 setup: add macOS 2022-06-01 15:56:40 +00:00
8e9e06afe6 Bump version for release.
All checks were successful
continuous-integration/drone/tag Build is passing
2022-05-31 09:41:20 -07:00
2bc91ac3d2 Add "generate-borgmatic-config --overwrite" flag to replace an existing destination file (#539).
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-29 16:03:55 -07:00
5b615d51a4 Add support for "borgmatic borg debug" command (#538).
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-29 15:43:03 -07:00
c7f5d5fd0b Fix broken Bash completion of filenames, as in "-c config.yaml".
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-29 10:49:33 -07:00
6ef7538eb0 Fix typo in Bash completions script.
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-28 19:34:13 -07:00
8fa90053cf Add "borgmatic check --force" flag to ignore configured check frequencies (#523). 2022-05-28 19:29:33 -07:00
b3682b61d1 Add another note about the consistency checks schema in old versions (#523). 2022-05-28 19:03:45 -07:00
ad0e2e0d7c Tweak default check frequency to 1 month (#523). 2022-05-28 15:49:50 -07:00
6629f40cab In bash completion script, warn when script is out of date using script contents instead of version. (Fewer spurious warnings that way.) 2022-05-28 15:27:11 -07:00
e76bfa555f Reduce the default consistency check frequency and support configuring the frequency independently for each check (#523). 2022-05-28 14:42:19 -07:00
8ddb7268eb Reuse "borg info" function.
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-27 13:51:11 -07:00
cb5fe02ebd Fix broken Bash completion end-to-end test.
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-26 11:18:46 -07:00
77b84f8a48 Add Bash completion script so you can tab-complete the borgmatic command-line.
Some checks failed
continuous-integration/drone/push Build is failing
2022-05-26 10:27:53 -07:00
691ec96909 Fix python_requires to support all versions of 3.7 (#537).
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #537
2022-05-26 15:51:46 +00:00
29b4666205 Fix python_requires to support all versions of 3.7
This is the standard way to support "Python 3.7 and newer" and it also
fixes use of borgmatic with some tools that do custom dependency
resolution.  E.g., using pex with --platform.
2022-05-26 07:05:04 -07:00
316a22701f Add documentation note about multiple merge limitation (#380).
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-25 23:12:42 -07:00
be59a3e574 Fix generate-borgmatic-config with "--source" flag to support more complex schema changes like the new Healthchecks configuration options (#536).
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-25 10:26:26 -07:00
37327379bc Merge branch 'master' of ssh://projects.torsion.org:3022/borgmatic-collective/borgmatic
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-24 17:50:57 -07:00
22c2f13611 Remove trailing whitespace (#535).
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #535
2022-05-25 00:50:12 +00:00
8708ca07f4 Remove trailing whitespace 2022-05-25 00:43:40 +00:00
634d9e4946 Bump version for release.
All checks were successful
continuous-integration/drone/tag Build is passing
2022-05-24 16:22:37 -07:00
54933ebef5 Change connection failures for monitoring hooks to be warnings instead of errors (#439).
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-24 15:50:04 -07:00
157e59ac88 Add Healthchecks monitoring hook "send_logs" option to enable/disable sending borgmatic logs to the Healthchecks server (#460).
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-24 14:44:33 -07:00
666f0dd751 Add missing Healthchecks "states" option example in configuration schema (#525).
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-24 14:17:19 -07:00
8b179e4647 Reverse logic of Healtchecks "skip_states" option to just "states" (#525).
Some checks failed
continuous-integration/drone/push Build is failing
2022-05-24 14:09:42 -07:00
865eff7d98 Add Healthchecks monitoring hook "skip_states" option to disable pinging for particular monitoring states (#525).
Some checks failed
continuous-integration/drone/push Build is failing
2022-05-24 13:59:28 -07:00
b9741f4d0b Add Healthchecks monitoring hook "ping_body_limit" option to configure how many bytes of logs to send to the Healthchecks server (#294).
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-24 12:23:38 -07:00
02781662f8 Change monitoring hooks to specify the ping URL / integration key as a named option.
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-23 20:02:10 -07:00
32a1043468 Remove the error when "archive_name_format" is specified but a retention prefix isn't (#402).
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-23 16:11:24 -07:00
3e4aeec649 Warn when an unsupported variable is used in a hook command (#420).
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-23 15:27:54 -07:00
b98b827594 Remove stale comment.
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-23 10:59:56 -07:00
255cc6ec23 When deep merging common configuration, merge colliding list values by appending them (#531).
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-20 15:28:28 -07:00
51fc37d57a Improve the error message when a configuration override contains an invalid value (#528).
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-20 13:38:53 -07:00
1921f55a9d Add emojis to documentation table of contents to make it easier to find particular how-to and reference guides at a glance.
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-20 11:11:35 -07:00
fbd381fcc1 Clarify manual database extraction documentation.
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-20 10:06:19 -07:00
cd88f9f2ea Better explain where to find the dump file when doing a manual restore (#510).
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #510
2022-05-20 16:33:21 +00:00
788281cfb9 When a configuration include is a relative path, load it from either the current working directory or from the directory containing the file doing the including (#532).
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-19 17:15:05 -07:00
cd234b689d Link to additional borgmatic Docker image.
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-12 12:00:12 -07:00
92354a77ee Mention that database dumps consumed disk space prior to borgmatic 1.5.3.
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-09 16:08:47 -07:00
48ff3e70d1 Clarify documentation about include merging mappings vs. values.
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-08 14:48:42 -07:00
7e9adfb899 Add NEWS entry for randomized systemd timer delay.
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-07 23:11:26 -07:00
e238e256f7
Add randomized delay to systemd timer.
Merge pull request from Daniel15/patch-1
2022-05-07 23:08:02 -07:00
Daniel Lo Nigro
3ecb92a8d2
Add randomized delay to systemd timer 2022-05-07 16:42:06 -07:00
d58d450628 Remove stale borgmatic binary link.
All checks were successful
continuous-integration/drone/push Build is passing
2022-04-30 09:50:40 -07:00
dee9c6e293 Remove link to stale borgmatic Docker image.
All checks were successful
continuous-integration/drone/push Build is passing
2022-04-30 09:46:08 -07:00
897c4487de Add mention in documentation about multiple backup scheduling needs (#511).
All checks were successful
continuous-integration/drone/push Build is passing
2022-04-28 11:16:31 -07:00
48b50b5209 Add documentation link to NEWS.
All checks were successful
continuous-integration/drone/push Build is passing
2022-04-26 10:24:25 -07:00
13bae8c23b Typo.
All checks were successful
continuous-integration/drone/push Build is passing
2022-04-26 10:12:02 -07:00
4a48e6aa04 Bump version for release.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2022-04-26 10:07:04 -07:00
525266ede6 Deep merging when including common configuration (#381).
All checks were successful
continuous-integration/drone/push Build is passing
2022-04-25 21:18:37 -07:00
d045eb55ac Add mention of sudo's "secure_path" option in borgmatic installation documentation (#513).
All checks were successful
continuous-integration/drone/push Build is passing
2022-04-23 14:29:55 -07:00
0e6b425ac5 Fix "borgmatic borg key ..." to pass parameters to Borg in correct order (#515).
All checks were successful
continuous-integration/drone/push Build is passing
2022-04-23 14:03:15 -07:00
bdc26f2117 Add note about old, pre-1.6.0 hooks behavior.
All checks were successful
continuous-integration/drone/push Build is passing
2022-04-22 19:58:28 -07:00
ed7fe5c6d0 Instead of executing "before" command hooks before all borgmatic actions run (and "after" hooks after), execute these hooks right before/after the corresponding action (#473).
All checks were successful
continuous-integration/drone/push Build is passing
2022-04-21 22:08:25 -07:00
cbce6707f4 Clarify one_file_system behavior in schema comment (#520).
All checks were successful
continuous-integration/drone/push Build is passing
2022-04-12 11:05:22 -07:00
e40e726687 Change Healthchecks logs truncation size from 10k bytes to 100k bytes, corresponding to that same change on Healthchecks.io.
All checks were successful
continuous-integration/drone/push Build is passing
2022-04-06 22:00:18 -07:00
0c027a3050 Fix handling of TERM signal to exit borgmatic, not just forward the signal to Borg (#516).
All checks were successful
continuous-integration/drone/push Build is passing
2022-04-03 13:12:48 -07:00
9f44bbad65 Fix borgmatic exit code (so it's zero) when initial Borg calls fail but later retries succeed (#517).
All checks were successful
continuous-integration/drone/push Build is passing
2022-04-02 22:28:41 -07:00
413a079f51 Clarify Python version support.
All checks were successful
continuous-integration/drone/push Build is passing
2022-03-28 21:57:40 -07:00
6f3accf691 Better explain where to find the dump file
All checks were successful
continuous-integration/drone/pr Build is passing
I really had problem finding the dump file with the explanation as give before. I thought that the `~/.borgmatic/` would be my current user. So looked into `/home/gerd/.borgmatic` (wrong). Then I looked into `<EXTRACTED_DESTINATION_PATH/.borgmatic` (again wrong). Then finally (1h later and after having already prepared a bug ticketI figured out that the dump file is within `<EXTRACTED_DESTINATION_PATH/root/.borgmatic`. Hard to find because of course I d not only have `root` within `<EXTRACTED_DESTINATION_PATH/` but also all other backup'ed directories (including /etc/, /home/ on so on...)
2022-03-17 04:51:47 +00:00
5b3cfc542d Switch to PyPI API token.
All checks were successful
continuous-integration/drone/push Build is passing
2022-03-14 14:00:03 -07:00
c838c1d11b Fix header placement in documentation guide.
All checks were successful
continuous-integration/drone/push Build is passing
2022-03-14 13:50:22 -07:00
4d1d8d7409 Bump version for release.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2022-03-14 13:43:24 -07:00
db7499db82 Document "repositories" context to for "before_*" and "after_*" command action hooks (#469).
All checks were successful
continuous-integration/drone/push Build is passing
2022-03-14 13:34:14 -07:00
6b500c2a8b Add repositories context for command hooks.
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #469
2022-03-14 20:13:15 +00:00
95c518e59b Documentation tip about dealing with hangs when database hook is enabled.
All checks were successful
continuous-integration/drone/push Build is passing
2022-03-12 13:17:32 -08:00
976516d0e1 When loading a configuration file that is unreadable due to file permissions, warn instead of erroring (#444).
All checks were successful
continuous-integration/drone/push Build is passing
2022-03-08 10:19:36 -08:00
574eb91921 Fix Borg usage error in the "compact" action when running "borgmatic --dry-run". Now, skip "compact" entirely during a dry run (#507).
All checks were successful
continuous-integration/drone/push Build is passing
2022-03-07 21:46:12 -08:00
28fef3264b Fix handling of "patterns_from" and "exclude_from" options to error instead of warning when referencing unreadable files and running "create" action (#486).
All checks were successful
continuous-integration/drone/push Build is passing
2022-03-07 15:32:07 -08:00
9161dbcb7d Removing unnecessary leading underscores from functions.
All checks were successful
continuous-integration/drone/push Build is passing
2022-03-07 11:58:29 -08:00
4b3027e4fc Add test for new working_directory option (#431).
All checks were successful
continuous-integration/drone/push Build is passing
2022-03-03 11:48:18 -08:00
0eb2634f9b Working directory option to support source directories with relative paths (#431).
Some checks failed
continuous-integration/drone/push Build is failing
Reviewed-on: #477
2022-03-03 19:28:17 +00:00
7c5b68c98f Bump version for release.
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2022-02-10 10:29:18 -08:00
9317cbaaf0 Code formatting.
All checks were successful
continuous-integration/drone/push Build is passing
2022-02-10 10:23:34 -08:00
1b5f04b79f When using the "remote_rate_limit" option, tailor the flags passed to Borg depending on the Borg version (#394).
Some checks failed
continuous-integration/drone/push Build is failing
2022-02-10 10:16:09 -08:00
948c86f62c When using the "numeric_owner" option with the "extract" action, tailor the flags passed to Borg depending on the Borg version (#394).
All checks were successful
continuous-integration/drone/push Build is passing
2022-02-10 10:09:18 -08:00
7e7209322a When using the "numeric_owner" option, tailor the flags passed to Borg depending on the Borg version (#394).
All checks were successful
continuous-integration/drone/push Build is passing
2022-02-10 09:51:13 -08:00
00a57fd947 Code formatting.
All checks were successful
continuous-integration/drone/push Build is passing
2022-02-09 21:20:28 -08:00
6bf6ac310b When using the "bsd_flags" option, tailor the flags passed to Borg depending on the Borg version (#394).
Some checks failed
continuous-integration/drone/push Build is failing
2022-02-09 21:11:00 -08:00
4b5af2770d When the "atime" option is used, tailor the flags passed to Borg depending on version (#394).
All checks were successful
continuous-integration/drone/push Build is passing
2022-02-09 16:54:35 -08:00
b525e70e1c Run "compact" action by default when no actions are specified (#394). 2022-02-09 14:33:12 -08:00
4498671233 Remove references to removed long-deprecated options (#394).
All checks were successful
continuous-integration/drone/push Build is passing
2022-02-09 11:08:02 -08:00
9997aa9a92 Fix capitalization on compact help.
All checks were successful
continuous-integration/drone/push Build is passing
2022-02-08 15:58:09 -08:00
cbf7284f64 Add compact action to command-line reference documentation.
All checks were successful
continuous-integration/drone/push Build is passing
2022-02-08 15:37:24 -08:00
ee466f870d Fixing ruamel.yaml.clib breakages harder.
All checks were successful
continuous-integration/drone/push Build is passing
2022-02-08 13:21:11 -08:00
e3f4bf0293 Build fix for ruamel.yaml.clib error.
Some checks failed
continuous-integration/drone/push Build is failing
2022-02-08 12:52:45 -08:00
46688f10b1 Merge branch 'master' of ssh://projects.torsion.org:3022/borgmatic-collective/borgmatic
Some checks failed
continuous-integration/drone/push Build is failing
2022-02-08 12:10:57 -08:00
48f44d2f3d Add tests for compact action (#394). 2022-02-08 12:05:02 -08:00
bff1347ba3 Fix some test failures (#394).
Some checks failed
continuous-integration/drone/push Build is failing
2022-02-08 09:35:03 -08:00
9582324c88 Compact repository segments with new "borgmatic compact" action (#394).
Some checks failed
continuous-integration/drone/push Build is failing
2022-02-07 23:29:44 -08:00
bb0716421d Add comment about systemd service setting that may interfere with external commands in hooks (#492).
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-25 09:26:11 -08:00
bec73245e9 Fix traceback when a YAML validation error occurs (#480, #482).
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-19 20:39:03 -08:00
dcead12e86 Attempt to fix documentation build error introduced by Eleventy upgrade.
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-09 14:21:27 -08:00
0119514c11 Add Python version requirements to setup.py.
Some checks failed
continuous-integration/drone/push Build is failing
2022-01-09 10:19:53 -08:00
b39f08694d Merge branch 'master' into pr-working-directory
All checks were successful
continuous-integration/drone/pr Build is passing
2022-01-05 09:30:27 +00:00
80bdf1430b Bump version for release.
All checks were successful
continuous-integration/drone/tag Build is passing
2022-01-04 20:20:13 -08:00
2ee75546f5 Add MongoDB database hook documentation.
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-04 16:26:38 -08:00
07d7ae60d5 Add MongoDB database hook (#288).
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #483
2022-01-04 23:50:25 +00:00
87001337b4 Merge master into mongodb_hook
All checks were successful
continuous-integration/drone/pr Build is passing
2022-01-04 22:20:44 +01:00
2e9964c200 Remove references to Lima Labs (shut down their storage business).
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #488
2022-01-03 17:34:38 +00:00
3ec3d8d045 Remove references to Lima Labs
All checks were successful
continuous-integration/drone/pr Build is passing
From their homepage:
> Lima Labs is shutting down our storage business. We will try to keep data available as long as possible. No promises but we are targeting 3/1/2022 to bring down Archive and Canada.
2022-01-03 02:29:38 -05:00
96384d5ee1 Attempt to fix typed-ast build issue by relaxing version requirements in test.
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-02 23:22:24 -08:00
8ed5467435 Drop support for Python 3.6. Add support for 3.10.
Some checks failed
continuous-integration/drone/push Build is failing
2022-01-02 23:17:57 -08:00
7c6ce9399c fix integration tests and mongodb auth
Some checks failed
continuous-integration/drone/pr Build is failing
2021-12-29 22:18:50 +01:00
6b7653484b Add mongodb dump hook
Some checks failed
continuous-integration/drone/pr Build is failing
2021-12-26 01:00:58 +01:00
Fabian Schilling
85e0334826 Add missing working_directory arg to pass tests
All checks were successful
continuous-integration/drone/pr Build is passing
2021-12-10 18:24:41 +01:00
Fabian Schilling
2a80e48a92 Pass working directory to execute functions 2021-12-10 18:23:44 +01:00
Fabian Schilling
5821c6782e Add defaults to not set in schema 2021-12-10 18:23:08 +01:00
Fabian Schilling
f15498f6d9 Add working_directory to borgmatic schema 2021-12-10 17:58:27 +01:00
a1673d1fa1 Fix unicode error when restoring particular MySQL databases (#476).
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-08 16:40:25 -08:00
2e99a1898c Fix f-string with missing expression.
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-29 14:05:36 -08:00
7a086d8430 Fix import ordering.
Some checks reported errors
continuous-integration/drone/push Build was killed
2021-11-29 14:00:14 -08:00
0e8e9ced64 When command-line configuration override produces a parse error, error cleanly (#471).
Some checks failed
continuous-integration/drone/push Build is failing
2021-11-29 12:49:21 -08:00
f34951c088 Add MySQL dump command adjustment to NEWS.
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-29 12:10:04 -08:00
c6f47d4d56 Move mysqldump options to the beginning of the command due to MySQL bug 30994 (#470).
Some checks failed
continuous-integration/drone/push Build is failing
Reviewed-on: #470
2021-11-29 20:08:59 +00:00
c3e76585fc
move mysqldump options to the beginning of the command due to MySQL bug 30994.
All checks were successful
continuous-integration/drone/pr Build is passing
2021-11-26 17:16:03 +01:00
0014b149f8 remove configuration_filename as it's already set.
All checks were successful
continuous-integration/drone/pr Build is passing
2021-11-26 11:38:58 +08:00
091c07bbe2 Add context for various hooks.
All checks were successful
continuous-integration/drone/pr Build is passing
2021-11-26 11:35:10 +08:00
240547102f Enable auto-play on linked asciicast.
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-25 13:09:55 -08:00
2bbd53e25a
Merge pull request #43 from acsfer/patch-1
Github doesn't allow script embedding
2021-11-25 13:06:43 -08:00
58f2f63977
Switch to HTML 2021-11-25 22:03:26 +01:00
7df6a78c30
Github doesn't allow script embedding 2021-11-25 21:36:31 +01:00
c646edf2c7 Bump version for release.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2021-11-22 13:19:15 -08:00
bcc820d646 Add list_options setting (#306).
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #464
2021-11-22 21:14:02 +00:00
3729ba5ca3
add list_options setting, fixes #306
All checks were successful
continuous-integration/drone/pr Build is passing
2021-11-20 15:43:58 +01:00
9c19591768 Revise hosting provider links.
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-15 20:06:09 -08:00
38ebfd2969 Rename retry_timeout to retry_wait and standardize log formatting (#28).
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-15 11:51:17 -08:00
180018fd81 Retry failing backups (#28, #432).
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #432
2021-11-15 19:34:24 +00:00
794ae94ac4 Attempt to limit documentation pushing to commits (so, not pull requests).
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-15 11:08:26 -08:00
4eb6359ed3 Remove now-unneeded build image workaround.
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-15 10:56:12 -08:00
cadamswaite
976a877a25 Formatting
Some checks failed
continuous-integration/drone/pr Build is failing
2021-11-14 22:37:42 +00:00
cadamswaite
b4117916b8 Add timeout and tests 2021-11-14 22:15:22 +00:00
cadamswaite
19cad89978 Add some tests for retry logic 2021-11-14 21:35:23 +00:00
6b182c9d2d Merge branch 'master' into master
Some checks failed
continuous-integration/drone/pr Build is failing
2021-11-14 18:24:17 +00:00
4d6ed27f73 Add to changelog: Add support for old version (2.x) of jsonschema library.
All checks were successful
continuous-integration/drone/push Build is passing
2021-10-23 09:49:16 -07:00
745a8f9b8a Add support for both jsonschema v3 and old v2 (#459).
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #459
2021-10-23 16:47:53 +00:00
6299d8115d Limit documentation build to master of main repo, as it pushes a Docker image.
All checks were successful
continuous-integration/drone/push Build is passing
2021-10-23 09:45:17 -07:00
717cfd2d37 validate: add support for both jsonschema v3 and old v2
Some checks failed
continuous-integration/drone/pr Build is failing
RHEL8 and RHEL7 have old jsonschema v2. Try v3 (Draft7) first but
fallback to v2 (Draft4) if needed.
2021-10-23 15:04:07 +03:00
7881327004 Upgrade CI test dependencies.
All checks were successful
continuous-integration/drone/push Build is passing
2021-10-22 14:07:14 -07:00
549aa9a25f Update editable link.
All checks were successful
continuous-integration/drone/push Build is passing
2021-10-22 14:06:27 -07:00
1c6890492b Bump version for release.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2021-10-11 17:02:32 -07:00
a7c8e7c823 Bump version for release.
All checks were successful
continuous-integration/drone/push Build is passing
2021-10-11 11:13:32 -07:00
c8fcf6b336 Mention changing borgmatic path in cron documentation (#455).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2021-10-11 11:02:08 -07:00
449896f661 Fix error when configured source directories are not present on the filesystem at the time of backup (#387).
All checks were successful
continuous-integration/drone/push Build is passing
2021-10-11 10:40:10 -07:00
1004500d65 Update sample systemd service file comments about more granular read-only filesystem settings.
All checks were successful
continuous-integration/drone/push Build is passing
2021-10-11 09:33:07 -07:00
0a8d4e5dfb
Add more strict ProtectHome to systemd sample configuration.
Merge pull request #42 from VTimofeenko/systemd_protecthome
2021-10-11 09:26:28 -07:00
38e35bdb12 Skip TLS verify in documentation build clone to work around old drone/git CA certs.
All checks were successful
continuous-integration/drone/push Build is passing
2021-10-04 14:31:15 -07:00
65503e38b6 Sigh.
Some checks failed
continuous-integration/drone/push Build is failing
2021-10-04 13:14:19 -07:00
d0c5bf6f6f Another attempt to unbreak build.
Some checks failed
continuous-integration/drone/push Build is failing
2021-10-04 13:13:35 -07:00
f129e4c301 Attempt to work-around outdated CA certificates in drone/git Docker image.
Some checks failed
continuous-integration/drone/push Build is failing
2021-10-04 13:09:44 -07:00
fbbb096cec Note in documentation that borgmatic requires Python 3.6+.
Some checks failed
continuous-integration/drone/push Build is failing
2021-10-04 11:15:51 -07:00
77980511c6 Add another glob pattern example to exclude patterns.
All checks were successful
continuous-integration/drone/push Build is passing
2021-09-16 09:51:40 -07:00
4ba206f8f4 Update build server URL to new organization namespace.
All checks were successful
continuous-integration/drone/push Build is passing
2021-09-14 11:35:34 -07:00
ecc849dd07 Move Gitea hosting from a personal namespace to an organization. 2021-09-14 11:32:01 -07:00
7ff6066d47 Move GitHub hosting from a personal namespace to an organization.
All checks were successful
continuous-integration/drone/push Build is passing
2021-09-14 10:18:10 -07:00
2bb1fc9826 Mention Docker Compose under installation options.
All checks were successful
continuous-integration/drone/push Build is passing
2021-09-12 13:15:34 -07:00
Vladimir Timofeenko
6df6176f3a
Added more strict ProtectHome to systemd unit
This commit changes the comment in sample systemd service.

Using a combination of 'ProtectHome' and 'BindPaths' it's possible to
hide the irrelevant paths inside /root from borgmatic service when it is
run.

ReadWritePaths are suggested to be used only for paths that contain borg
repositories and the backup sources can be specified as ReadOnlyPaths.
2021-08-30 11:20:34 -07:00
acb2ca79d9 Fix traceback that can occur when dumping a database (#440).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2021-08-06 08:58:11 -07:00
c9211320e1 Fix dev version in changelog.
All checks were successful
continuous-integration/drone/push Build is passing
2021-08-04 15:32:51 -07:00
760286abe1 Dev release bump.
Some checks failed
continuous-integration/drone/push Build is failing
2021-07-30 09:49:07 -07:00
5890a1cb48 Fix "message too long" error when logging to rsyslog (#389).
Some checks reported errors
continuous-integration/drone/push Build was killed
2021-07-30 09:48:13 -07:00
b3f5a9d18f Fix error when configuration file contains "umask" option (#437).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2021-07-27 10:04:22 -07:00
80b33fbf8a Code style reformatting.
All checks were successful
continuous-integration/drone/push Build is passing
2021-07-27 09:39:48 -07:00
5389ff6160
Merge pull request #41 from mkszuba/tests_no_xxd
tests/integration/test_execute: use plain Python rather than xxd
2021-07-27 09:39:02 -07:00
Marek Szuba
e8b8d86592 tests/integration/test_execute: use plain Python rather than xxd
Removes this test's dependencies on vim and /dev/urandom.

Signed-off-by: Marek Szuba <marek.szuba@cern.ch>
2021-07-27 13:50:16 +01:00
92d729a9dd Try temporary work around for Drone build bug: https://github.com/drone-plugins/drone-docker/pull/327
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2021-07-26 16:33:41 -07:00
c63219936e Wording tweaks to security policy.
Some checks failed
continuous-integration/drone/push Build is failing
2021-07-26 13:44:14 -07:00
0aff497430 Bump version for release.
Some checks failed
continuous-integration/drone/push Build is failing
2021-07-26 10:17:49 -07:00
1f3907a6a5 Fix for failing PostgreSQL directory format test (#430).
Some checks failed
continuous-integration/drone/push Build is failing
2021-07-26 09:42:14 -07:00
2a8692c64f Fix integration test to hopefully work on Alpine (#430).
Some checks failed
continuous-integration/drone/push Build is failing
2021-07-25 22:50:00 -07:00
1709f57ff0 Fix hang when restoring a PostgreSQL "tar" format database dump (#430).
Some checks failed
continuous-integration/drone/push Build is failing
2021-07-25 22:30:15 -07:00
cadamswaite
89baf757cf Sort imports
Some checks failed
continuous-integration/drone/pr Build is failing
2021-07-14 23:17:35 +01:00
cadamswaite
4f36fe2b9f Run Black on changed file
Some checks failed
continuous-integration/drone/pr Build is failing
2021-07-14 22:53:01 +01:00
cadamswaite
510449ce65 Change default retries to 0 2021-07-14 22:49:03 +01:00
cadamswaite
4cc4b8d484 Add queue based retry logic 2021-07-14 22:46:02 +01:00
9c972cb0e5 Add documentation note about systemd configuration with alternate install methods (#428).
All checks were successful
continuous-integration/drone/push Build is passing
2021-06-29 21:38:53 -07:00
9b1779065e Pin ruamel.yaml.clib to work around docs build issue. 2021-06-29 21:35:46 -07:00
057ec3e59b Add NEWS entry for #379: Suppress console output in sample crontab and systemd service files.
All checks were successful
continuous-integration/drone/push Build is passing
2021-06-23 10:35:41 -07:00
bc2e611a74 Suppress console output in sample crontab/systemd service files (#379).
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: witten/borgmatic#379
2021-06-23 17:32:47 +00:00
b6d3a1e02f Merge branch 'master' of ssh://projects.torsion.org:3022/witten/borgmatic
All checks were successful
continuous-integration/drone/push Build is passing
2021-06-23 10:22:07 -07:00
54d57e1349 Add test for #407: Fix syslog logging on FreeBSD. 2021-06-23 10:21:45 -07:00
af0b3da8ed Fix syslog logging on FreeBSD (#407).
Some checks reported errors
continuous-integration/drone/push Build was killed
Reviewed-on: witten/borgmatic#407
2021-06-23 17:21:25 +00:00
27d37b606b Better error messages! Switch the library used for validating configuration files (from pykwalify to jsonschema).
All checks were successful
continuous-integration/drone/push Build is passing
2021-06-22 13:27:59 -07:00
77a860cc62 Link borgmatic Ansible role from installation documentation.
All checks were successful
continuous-integration/drone/push Build is passing
2021-06-19 19:04:22 -07:00
7bd6374751 Bump version for release.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2021-06-17 20:44:54 -07:00
cf8882f2bc Run arbitrary Borg commands with new "borgmatic borg" action (#425).
All checks were successful
continuous-integration/drone/push Build is passing
2021-06-17 20:41:44 -07:00
b37dd1a79e Document use case of running backups conditionally based on laptop power level (#419).
All checks were successful
continuous-integration/drone/push Build is passing
2021-06-09 10:03:35 -07:00
fd59776f91 Bump version for release.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2021-06-08 11:44:53 -07:00
9fd28d2eed Fix error handling to error loudly when Borg gets killed due to running out of memory (#423)! 2021-06-08 11:43:55 -07:00
f5c61c8013 Move #borgmatic IRC channel from Freenode to Libera Chat due to Freenode takeover drama.
All checks were successful
continuous-integration/drone/push Build is passing
2021-06-06 21:09:40 -07:00
88cb49dcc4 Fix release script based on GitHub authentication query parameter deprecation.
All checks were successful
continuous-integration/drone/push Build is passing
2021-04-24 20:27:53 -07:00
73235e59be Upgrade "py" test dependency (security).
All checks were successful
continuous-integration/drone/push Build is passing
2021-04-20 10:39:49 -07:00
7076a7ff86 Add link to Hetzner storage offering from the documentation (#390).
All checks were successful
continuous-integration/drone/push Build is passing
2021-04-18 18:03:43 -07:00
d6e376d32d Fix end-to-end test broken by change in source directory examples.
All checks were successful
continuous-integration/drone/push Build is passing
2021-04-18 17:54:54 -07:00
9016f4be43 Clarify that spaces in path names should not be backslashed in path names (#406).
Some checks failed
continuous-integration/drone/push Build is failing
2021-04-18 17:28:11 -07:00
d1c403999f
Reduce console output in sample crontab/systemd service files.
Some checks failed
continuous-integration/drone/pr Build is failing
As borgmatic will log to syslog in the sample crontab/systemd service
files, this makes console output redundant. (cron will mail any console
output to the root user; systemd will log any console output to syslog.)

This adds --verbosity -1 to both files to reduce console output to the
minimum.
2021-04-13 01:40:57 +08:00
d543109ef4 "Fix" build failure with Alpine Edge by switching from Edge to Alpine 3.13.
All checks were successful
continuous-integration/drone/push Build is passing
2021-04-09 15:58:23 -07:00
7085a45649 Fix build so as not to attempt to build and push documentation for a non-master branch.
Some checks failed
continuous-integration/drone/push Build is failing
2021-04-09 15:04:09 -07:00
cf4c603f1d Clarify canonical home of borgmatic in documentation (#398).
Some checks failed
continuous-integration/drone/push Build is failing
2021-04-09 14:54:21 -07:00
d2533313bc
Fix syslog logging on FreeBSD
Some checks failed
continuous-integration/drone/pr Build is failing
The UNIX domain socket to use on FreeBSD is /var/run/log.
See syslogd FreeBSD man page: https://www.freebsd.org/cgi/man.cgi?query=syslogd&sektion=8
2021-04-02 14:11:50 +02:00
c43b50b6e6 Upgrade PyYAML.
All checks were successful
continuous-integration/drone/push Build is passing
2021-03-30 22:29:20 -07:00
c072678936 Add support for ruamel.yaml 0.17.x YAML parsing library (#404).
All checks were successful
continuous-integration/drone/push Build is passing
2021-03-30 15:53:19 -07:00
631da1465e Add support for Python 3.9. 2021-03-30 15:36:26 -07:00
f29519a5cd
Merge pull request #38 from lukehsiao/patch-1
Fix link to issue tracker in documentation
2021-03-20 15:45:15 -07:00
Luke Hsiao
5d82b42ab8
Fix link to issue tracker in documentation
Fixes: a1d986d952
2021-03-18 17:26:37 -07:00
4897a78fd3 Fix database tests broken by PostgreSQL upgrade in Alpine Edge.
All checks were successful
continuous-integration/drone/push Build is passing
2020-12-24 22:23:09 -08:00
a1d986d952 Replace "improve this documentation" form with link to support and ticket tracker. 2020-12-24 14:57:51 -08:00
717c90a7d0 Clarify in systemd service file comment that security settings are optional.
Some checks failed
continuous-integration/drone/push Build is failing
2020-12-09 10:08:07 -08:00
8fde19a7dc Update systemd service example to return a permission error when a system call isn't permitted.
All checks were successful
continuous-integration/drone/push Build is passing
2020-11-30 22:14:28 -08:00
ad7198ba66 Tweak to test failing on some machines.
All checks were successful
continuous-integration/drone/push Build is passing
2020-11-26 16:22:42 -08:00
eb4b4cc92b Fix line length in schema.
All checks were successful
continuous-integration/drone/push Build is passing
2020-11-25 19:21:06 -08:00
41bf520585 Document that passphrase is used for Borg keyfile encryption, not just repokey encryption (#373).
Some checks failed
continuous-integration/drone/push Build is failing
2020-11-25 18:36:23 -08:00
c0ae01f5d5 Code formatting.
All checks were successful
continuous-integration/drone/push Build is passing
2020-11-25 17:46:57 -08:00
8b8f92d717 Prevent newer (borgmatic-unsupported) version of Black code formatter installing in Alpine Edge. 2020-11-25 17:42:04 -08:00
ccd1627175 Fix timing-related test error in Alpine Edge.
Some checks failed
continuous-integration/drone/push Build is failing
2020-11-25 15:48:33 -08:00
b8a7e23f46 Add missing pip to test script.
All checks were successful
continuous-integration/drone/push Build is passing
2020-11-22 17:42:58 -08:00
1f4f28b4dc Drop support for Python 3.5. Only support black code formatter on Python 3.8+.
Some checks failed
continuous-integration/drone/push Build is failing
2020-11-22 17:27:21 -08:00
ea6cd53067 Update versions of test dependencies (test_requirements.txt and test containers).
Some checks failed
continuous-integration/drone/push Build is failing
2020-11-22 14:48:07 -08:00
267138776d Add protection for accidentally releasing a dev version.
All checks were successful
continuous-integration/drone/push Build is passing
2020-11-21 14:03:39 -08:00
604b3d5e17 Bump version.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2020-11-21 13:56:19 -08:00
667e1e5b15 Update document about new --override behavior (#361).
All checks were successful
continuous-integration/drone/push Build is passing
2020-11-19 11:01:53 -08:00
9b819f32f8 Fix traceback when upgrading old INI-style configuration with upgrade-borgmatic-config (#367).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2020-11-18 15:01:10 -08:00
b619bde037 Fix broken end-to-end test.
All checks were successful
continuous-integration/drone/push Build is passing
2020-11-18 14:20:07 -08:00
97af16bd86 Add Lima-Labs to examples.
Some checks failed
continuous-integration/drone/push Build is failing
2020-11-18 12:05:38 -08:00
fa75f89acc Merge ssh://projects.torsion.org:3022/witten/borgmatic
Some checks failed
continuous-integration/drone/push Build is failing
2020-11-18 11:54:44 -08:00
222b61b577 Update changelog with note about #369. 2020-11-18 11:26:20 -08:00
e77757f0fd Mention placeholders for repositories in documentation; fix #369
Some checks failed
continuous-integration/drone/push Build is failing
Reviewed-on: witten/borgmatic#371
2020-11-18 19:24:59 +00:00
ebac02f118 Mention placeholders for repositories in documentation; fix #369 2020-11-18 20:22:41 +01:00
1c9ae81987 Fix signal forwarding from borgmatic to Borg resulting in recursion traceback (#368).
All checks were successful
continuous-integration/drone/push Build is passing
2020-11-18 10:29:03 -08:00
7b1fb68c18 Add referral link to Lima-Labs.
All checks were successful
continuous-integration/drone/push Build is passing
2020-11-17 14:04:24 -08:00
8aa7830f0d Fix broken "--override" action in Python 3.7 and below.
All checks were successful
continuous-integration/drone/push Build is passing
2020-11-15 13:39:15 -08:00
79bee755ee
Merge pull request #37 from ThorpeJosh/patch-1
Some checks failed
continuous-integration/drone/push Build is failing
Fix typo in large backup docs.
2020-11-03 22:22:12 -08:00
Josh Thorpe
cde0ee96ff
Fix typo in large backup docs 2020-11-04 17:20:32 +11:00
1ea04aedf0 Merge override values when specifying the "--override" flag multiple times (#361).
Some checks failed
continuous-integration/drone/push Build is failing
2020-10-23 16:06:00 -07:00
446a2bc15a
Fixed minor typo in help for "info" command.
All checks were successful
continuous-integration/drone/push Build is passing
2020-10-11 15:08:43 -07:00
Diego Blanco
2d10e758e0 Fixed minor typo in help for "info" command 2020-10-12 00:04:15 +02:00
0e978299cf Fix traceback when a database hook value is null in a configuration file (#355).
All checks were successful
continuous-integration/drone/push Build is passing
2020-10-07 15:41:45 -07:00
d06c1f2943 Minor edit.
All checks were successful
continuous-integration/drone/push Build is passing
2020-09-21 10:00:38 -07:00
d768b50b97 Add note about empty source_directories.
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: witten/borgmatic#358
2020-09-21 16:59:18 +00:00
034ade48f2
Add note about empty source_directories 2020-09-21 17:35:26 +02:00
d1e9f74087 Restore referal link.
All checks were successful
continuous-integration/drone/push Build is passing
2020-08-27 15:21:53 -07:00
f262f77dbd Add temporary_directory option to changelog.
All checks were successful
continuous-integration/drone/push Build is passing
2020-08-26 09:51:55 -07:00
a3387953a9 Add configuration option for settings Borg's temporary directory (#341).
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: witten/borgmatic#356
2020-08-26 16:54:49 +00:00
root
7cad5a8608 Add temporary_directory as a configuration option defaulting to $TMPDIR 2020-08-26 15:29:02 +00:00
9b83fcbf06 Add comment about MemoryDenyWriteExecute value and the tradeoffs thereof.
All checks were successful
continuous-integration/drone/push Build is passing
2020-08-23 14:11:19 -07:00
32a93ce8a2 Loosen systemd memory security setting to allow Healthchecks ping.
All checks were successful
continuous-integration/drone/push Build is passing
2020-08-22 13:37:34 -07:00
e428329c03 Add systemd security improvement to NEWS.
All checks were successful
continuous-integration/drone/push Build is passing
2020-08-22 09:49:06 -07:00
e844bbee15 Improve systemd security settings (#352).
All checks were successful
continuous-integration/drone/push Build is passing
2020-08-22 16:50:06 +00:00
631c3068a9 systemd security settings 2020-08-22 15:41:25 +02:00
79d4888e22 Add documentation navigation links on left side of all documentation pages.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2020-08-21 14:27:47 -07:00
de61fdef48 Mention "before_extract"/"after_extract" in README.
All checks were successful
continuous-integration/drone/push Build is passing
2020-08-12 14:12:58 -07:00
93caeba200 Add before_extract and after_extract hooks (#347).
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: witten/borgmatic#347
2020-08-12 21:14:15 +00:00
3c723e8d99 Merge branch 'master' into master 2020-08-12 21:11:45 +00:00
c5776447b9 fixed description strings for before_extract and after_extract 2020-08-12 23:07:57 +02:00
5356f487a5 Move before/after_everything hooks so they're easier to find.
All checks were successful
continuous-integration/drone/push Build is passing
2020-08-12 13:46:31 -07:00
72bd96c656 Fix traceback when a configuration directory is non-readable due to directory permissions (#350).
All checks were successful
continuous-integration/drone/push Build is passing
2020-08-12 11:32:00 -07:00
f611fe7be3 Clarify documentation overview of monitoring options.
All checks were successful
continuous-integration/drone/push Build is passing
2020-08-12 10:40:39 -07:00
dd6ea40a36 Clarify encryption section: It's not just for cron users.
All checks were successful
continuous-integration/drone/push Build is passing
2020-08-10 14:43:03 -07:00
ea1274d1c6 Remove inactive referral link.
All checks were successful
continuous-integration/drone/push Build is passing
2020-08-07 10:55:05 -07:00
8526468975
Fix configuration schema comment on after_everything option.
All checks were successful
continuous-integration/drone/push Build is passing
2020-08-07 09:49:25 -07:00
Jakub Duchateau
95c415f416
Change "before" to "after" in desc 2020-08-07 16:41:35 +02:00
06dc336481 Fix schema exclude patterns example path.
All checks were successful
continuous-integration/drone/push Build is passing
2020-08-06 09:59:48 -07:00
893fca2816 Add before_extract and after_extract hooks 2020-08-01 16:08:32 +02:00
99590cb6b6 Clarify documentation on configuration overrides, specifically the portion about list syntax.
All checks were successful
continuous-integration/drone/push Build is passing
2020-07-23 21:33:42 -07:00
b3fd1be5f6 Add "borgmatic export-tar" action to export an archive to a tar-formatted file or stream (#300).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2020-07-22 21:53:55 -07:00
a23083f737 Clarify schema documentation about skipping pruning.
All checks were successful
continuous-integration/drone/push Build is passing
2020-07-22 10:35:16 -07:00
8306b758e8 Add documentation on how to make backups redundant with multiple repositories.
All checks were successful
continuous-integration/drone/push Build is passing
2020-07-17 16:00:50 -07:00
218cbd5289 In database documentation, include command for finding named pipes and special devices.
All checks were successful
continuous-integration/drone/push Build is passing
2020-07-13 10:56:59 -07:00
2ac58670d5 Clarify database documentation about excluding named pipes and character/block devices to prevent hangs.
All checks were successful
continuous-integration/drone/push Build is passing
2020-07-13 10:45:58 -07:00
6f82c9979b Add #339 to NEWS and add test.
All checks were successful
continuous-integration/drone/push Build is passing
2020-07-07 22:31:17 -07:00
0a659a397f Attempt to fix no-repro test failure of log_outputs() (#339).
All checks were successful
continuous-integration/drone/push Build is passing
2020-07-07 22:05:53 -07:00
2781873faf Bump version for release.
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build is failing
2020-06-30 21:47:34 -07:00
3aaa89fb08 Formatting.
Some checks failed
continuous-integration/drone/push Build is failing
2020-06-25 20:25:29 -07:00
35d542a676 Fix for traceback when running Cronitor, Cronhub, and PagerDuty monitor hooks (#336).
Some checks reported errors
continuous-integration/drone/push Build was killed
2020-06-25 20:23:25 -07:00
d0b9c436b1 Bump version for release.
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2020-06-23 11:21:43 -07:00
37cc229749 Fix duplicate logging to Healthchecks and send "after_*" hooks output to Healthchecks (#328).
Some checks failed
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is failing
2020-06-23 11:01:03 -07:00
17c2d109e5 Add tests for pass-through of BORG_* environment variables.
All checks were successful
continuous-integration/drone/push Build is passing
2020-06-21 14:41:22 -07:00
c8d5de2179 Fix broken pass-through of BORG_* environment variables to Borg (#327).
Some checks failed
continuous-integration/drone/push Build is failing
Reviewed-on: witten/borgmatic#327
2020-06-21 21:29:59 +00:00
32e15dc905 Add a few more mocks to PostgreSQL SSL tests.
All checks were successful
continuous-integration/drone/push Build is passing
2020-06-20 14:39:16 -07:00
f5ebca4907 Add SSL support to PostgreSQL database configuration (#331).
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: witten/borgmatic#331
2020-06-20 21:24:14 +00:00
01db676d68 Change the example for the ssl_mode parameter 2020-06-20 23:32:24 +03:00
d2d92b1f1a Add tests for the PostgreSQL SSL options 2020-06-20 23:32:24 +03:00
27cbe9dfc0 Fix for potential data loss (data not getting backed up) when borgmatic omitted configured source directories in certain situations (#333).
All checks were successful
continuous-integration/drone/push Build is passing
2020-06-19 20:16:38 -07:00
8fb830099f Re-add the ilbpq-ssl documentation URL to the schema
It's been moved from describing `ssl_mode` to the general
postgresql_database description key.
2020-06-19 13:22:39 +03:00
463a133a63 Ensure schema lines are less than 80 characters in length 2020-06-19 13:22:39 +03:00
a16fed8887 Rename PostgreSQL SSL config variables
e.g. s/sslmode/ssl_mode/g to conform with borgmatic naming conventions.
2020-06-19 13:20:14 +03:00
33113890f5 Reduce duplication with a common function 2020-06-19 12:32:36 +03:00
abd47fc14e Add SSL support to PostgreSQL hooks 2020-06-19 02:19:17 +03:00
7fb4061759 Improve configuration reference documentation readability via more aggressive word-wrapping in configuration schema descriptions.
All checks were successful
continuous-integration/drone/push Build is passing
2020-06-17 23:15:12 -07:00
b320e74ad5 Update documentation code fragments theme to better match the rest of the page.
All checks were successful
continuous-integration/drone/push Build is passing
2020-06-17 16:02:57 -07:00
0ed8f67b9d Documentation feedback: Clarify that a Borg manual install is required, separate from installing borgmatic.
All checks were successful
continuous-integration/drone/push Build is passing
2020-06-17 11:42:40 -07:00
a12a1121b6 Use values from BORG_* env variables if they are not specified in config.yaml 2020-06-15 19:50:11 +02:00
795e18773b Bump version for release.
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2020-06-06 15:01:56 -07:00
aa14449857 Add "borgmatic extract --strip-components" flag to remove leading path components when extracting an archive (#324).
All checks were successful
continuous-integration/drone/push Build is passing
2020-06-06 14:57:14 -07:00
ed7b1cd3d7 Add some no-cover pragmas on functions that don't need tests.
All checks were successful
continuous-integration/drone/push Build is passing
2020-06-06 14:33:06 -07:00
a155eefa23 Fix for certain configuration options like ssh_command impacting Borg invocations for separate configuration files (#323). 2020-06-06 14:30:04 -07:00
398665be9e Allow before_backup and similiar hooks to exit with a soft failure without altering the monitoring status (#292).
All checks were successful
continuous-integration/drone/push Build is passing
2020-06-02 14:33:41 -07:00
6db232d4ac Link to Borgmacator GNOME AppIndicator from monitoring documentation.
All checks were successful
continuous-integration/drone/push Build is passing
2020-06-02 12:53:08 -07:00
d7277893fb Fix hang when a stale database dump named pipe from an aborted borgmatic run remains on disk (#316).
All checks were successful
continuous-integration/drone/push Build is passing
2020-06-02 12:40:32 -07:00
00033bf0a8 Tweak comment indentation in generated configuration file for clarity.
All checks were successful
continuous-integration/drone/push Build is passing
2020-06-02 11:37:13 -07:00
adda33dc4e Bump version for release.
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2020-05-26 13:15:01 -07:00
097a09578a Fix enabled database hooks to implicitly set one_file_system configuration option to true to prevent Borg hang. (#315).
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-26 09:20:14 -07:00
65472c8de2 Fix error message when there are no MySQL databases to dump for "all" databases (#319).
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-26 08:59:04 -07:00
602ad9e7ee Add note about indirect dbus dependency.
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-21 19:56:32 -07:00
96df52ec50 Fix hang when streaming a database dump to Borg with implicit duplicate source directories by deduplicating them first (#316).
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-20 13:33:53 -07:00
244dc35bae Global install documentation.
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-19 14:19:39 -07:00
d9c9d7d2ee Improve documentation around the installation process. Specifically, making borgmatic commands runnable via the system PATH.
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-18 20:38:43 -07:00
89cb5eb76d Fix regression in support for PostgreSQL's "directory" dump format (#314).
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-18 11:31:29 -07:00
6d3802335e Adding docs note about upgrading to get --files flag.
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-18 08:43:32 -07:00
c1d6232b79 Fix documentation to mention new "--files" flag.
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-15 10:45:58 -07:00
048a9ebb52 Add an additional end-to-end database test.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2020-05-15 10:12:49 -07:00
de478f6ff7 Clarify wording in changelog.
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-14 23:23:21 -07:00
3e5a19d95a Add missing test coverage.
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-14 23:21:43 -07:00
2ddf38f99c Fix error handling when executing commands to handle more edge cases.
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-14 23:04:01 -07:00
d88f321cef Fix legitimate database dump command errors (exit code 1) not being treated as errors by borgmatic (#310).
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-14 22:38:38 -07:00
74adac6c70 Bump version for release.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2020-05-12 21:03:09 -07:00
15ea70a71b Flesh out missing test coverage for execute.py.
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-12 15:49:49 -07:00
8b91c01a4c Add some missing test coverage. 2020-05-11 11:34:14 -07:00
3bcef72050 Add some missing test mocks that were masking lack of unit coverage.
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-11 11:17:24 -07:00
695c764a01 Merge log output functions into one. 2020-05-11 10:55:50 -07:00
f7c93ea2e8 Wait for process to finish before trying to check exit status.
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-09 23:09:48 -07:00
1ea047dd94 Remove "borgmatic restore --progress" flag, as it now conflicts with streaming database restores. 2020-05-09 21:53:16 -07:00
4b523f9e2c Make database restore output only show at verbosity 2.
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-08 19:38:33 -07:00
6a61070d85 Use shell redirection rather than the --file flag to sidestep synchronization issues when pg_dump/pg_dumpall tries to write to a named pipe.
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-08 19:11:26 -07:00
f36082938e Additional test coverage. 2020-05-08 09:48:04 -07:00
1ba996ad93 Additional test coverage.
Some checks reported errors
continuous-integration/drone/push Build encountered an error
2020-05-07 12:14:27 -07:00
a23fdf946d Stream database dumps and restores directly to/from Borg without using any additional filesystem space (#258).
Some checks reported errors
continuous-integration/drone/push Build encountered an error
2020-05-07 11:44:04 -07:00
12cf6913ef Remove unused function parameter.
All checks were successful
continuous-integration/drone/push Build is passing
2020-05-03 14:07:34 -07:00
a4eef383c3 Spell out repository consistency check options in more detail.
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-29 11:08:41 -07:00
ac124612ad Documentation on macOS launchd permissions issues with work-around for Full Disk Access (#293).
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-26 16:10:52 -07:00
95a479a86e Fix path in release script.
Some checks failed
continuous-integration/drone/push Build is failing
2020-04-24 16:05:50 -07:00
e4eff0e3dc Bump version for release.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2020-04-24 15:56:56 -07:00
dce1928dc4
Fix PostgreSQL restore error on "all" database dump. 2020-04-24 15:50:33 -07:00
Nathan Beals
3c8dc4929f Added test_restore_all_database_dump unit test.
Updated the other unit tests, as I had to re-arrange argument order
Added an 'all' test for the postgres end-to-end test.

Ran black formatter on it all.
2020-04-24 18:32:53 -04:00
e511014a28 Fix MySQL restore error on "all" database dump by excluding system tables (#301).
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-22 12:17:22 -07:00
bae5f88824 Upgrade test database versions.
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-21 10:01:26 -07:00
41ad98653a https://github.com/docker/compose/issues/2127
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-21 09:39:20 -07:00
6a138aeb6e Move root vs. non-root instructions.
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-18 13:14:35 -07:00
f0ce37801b Add root vs. non-root to set up guide.
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-17 20:30:10 -07:00
35f6aba365 Clarify that borgmatic should be run with sudo after a root --user install.
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-17 09:46:50 -07:00
Nathan Beals
f6407bafcb Remove the --create flag, was causing an error 2020-04-10 11:24:13 -04:00
Nathan Beals
d5e9f67cec Finished. Now uses 'psql' to run the plain-text scripts that pg_dumpall creates 2020-04-10 10:55:53 -04:00
Nathan Beals
b14f371c05 First attempt at fixing this pg_dumpall/restoring issue 2020-04-10 09:20:00 -04:00
31a5d1b9c4 Docs feedback: Clarify PagerDuty integration instructions.
All checks were successful
continuous-integration/drone/push Build is passing
2020-03-26 14:14:53 -07:00
fb4305a953 Add link for Alpine packages of borgmatic to README.
All checks were successful
continuous-integration/drone/push Build is passing
2020-03-10 21:10:02 -07:00
eab872823c Clarify license version.
All checks were successful
continuous-integration/drone/push Build is passing
2020-03-09 15:50:54 -07:00
3332750243 More documentation examples of a la carte actions.
All checks were successful
continuous-integration/drone/push Build is passing
2020-03-09 11:20:18 -07:00
4942b7ce4d Feedback on PagerDuty hook documentation.
All checks were successful
continuous-integration/drone/push Build is passing
2020-02-13 13:11:25 -08:00
a2af77f363 Maybe fix release signing. 2020-02-03 09:57:34 -08:00
a7490b56d1 Bump version for release.
All checks were successful
continuous-integration/drone/tag Build is passing
2020-02-03 09:45:10 -08:00
66eb18d5ea Upgrade pip and tox in tests.
All checks were successful
continuous-integration/drone/push Build is passing
2020-02-02 14:30:26 -08:00
46486138b6 Fix PagerDuty link.
All checks were successful
continuous-integration/drone/push Build is passing
2020-02-01 13:43:37 -08:00
d6562c4b1e Fix the "--stats" and "--files" flags so that they yield output at verbosity 0 (#290).
All checks were successful
continuous-integration/drone/push Build is passing
2020-01-31 10:23:36 -08:00
1ddde0910c Add security policy, such as it is.
All checks were successful
continuous-integration/drone/push Build is passing
2020-01-30 15:42:48 -08:00
79f3b84ca2 Documentation for "--archive latest" (#289).
All checks were successful
continuous-integration/drone/push Build is passing
2020-01-29 17:08:03 -08:00
55141bda67 Specify "--archive latest" to all actions that accept an archive (#289). 2020-01-29 16:59:02 -08:00
bc02c123e6 Monitor backups with PagerDuty hook integration (#245).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2020-01-27 15:32:09 -08:00
e76d5ad988 Fix tests.
All checks were successful
continuous-integration/drone/push Build is passing
2020-01-27 12:56:12 -08:00
8ad8a9c422 Add per-action hooks: "before_prune", "after_prune", "before_check", and "after_check" (#255).
Some checks failed
continuous-integration/drone/push Build is failing
2020-01-27 11:07:07 -08:00
b15c9b7dab Add missing "how to" text.
All checks were successful
continuous-integration/drone/push Build is passing
2020-01-24 21:02:56 -08:00
2405e97c38 Backup to a removable drive or intermittent server via "soft failure" feature (#284).
All checks were successful
continuous-integration/drone/push Build is passing
2020-01-24 20:52:48 -08:00
fdbb2ee905 View consistency check progress via "--progress" flag for "check" action (#287).
All checks were successful
continuous-integration/drone/push Build is passing
2020-01-24 11:27:16 -08:00
94b9ef56be Change "exclude_if_present" option to support multiple filenames, rather than just a single filename (#280).
All checks were successful
continuous-integration/drone/push Build is passing
2020-01-23 13:41:37 -08:00
952168ce25 Fix unwanted console log messages with "list --json" and "info --json". 2020-01-23 13:40:54 -08:00
5273037a94 For "list" and "info" actions, show repository names even at verbosity 0.
Some checks failed
continuous-integration/drone/push Build is failing
2020-01-23 11:17:39 -08:00
53e6ff9524 No longer list files or show stats by default at verbosity 2.
All checks were successful
continuous-integration/drone/push Build is passing
2020-01-22 15:23:49 -08:00
f66fd1caaa Customize Healthchecks log level via borgmatic "--monitoring-verbosity" flag (#277).
All checks were successful
continuous-integration/drone/push Build is passing
2020-01-22 15:10:47 -08:00
d93fdbc5ad Support "--files" and "--stats" flags at verbosity level 0.
All checks were successful
continuous-integration/drone/push Build is passing
2020-01-22 13:28:24 -08:00
58e0439daf Disable per-file logging by default at verbosity 1; opt-in via new --files option.
All checks were successful
continuous-integration/drone/push Build is passing
2020-01-22 20:36:59 +00:00
palto42
75b5e7254e changes as per comments in PR #283 2020-01-22 19:03:26 +01:00
39550a7fe9 Add ~/.config/borgmatic.d as another configuration directory default (#274).
All checks were successful
continuous-integration/drone/push Build is passing
2020-01-22 09:26:58 -08:00
palto42
5f0c084bee Merge 'upstream/master' into list-files 2020-01-22 18:12:26 +01:00
88f06f7921 Revert "Use absolute paths in systemd commands."
All checks were successful
continuous-integration/drone/push Build is passing
This reverts commit 24e1516ec5.
2020-01-21 16:03:24 -08:00
8d12079386 Bump version.
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2020-01-21 10:47:29 -08:00
7824a034ca Add test for database dump directory removal.
All checks were successful
continuous-integration/drone/push Build is passing
2020-01-21 10:34:46 -08:00
8ef0ba2fae
After a backup of a database dump in directory format, properly remove the dump directory. 2020-01-21 10:29:40 -08:00
cc384f4324 Second ticket for --json color bug.
All checks were successful
continuous-integration/drone/push Build is passing
2020-01-21 08:33:41 -08:00
8a91c79fb0 Support directory format dump cleanup.
Previously, only deleting a dump in a single-file format was supported.
This led to errors when performing a PostgreSQL directory format backup.
2020-01-19 15:15:47 +01:00
ac1d63bb0d Use more realistic repository examples in README.
All checks were successful
continuous-integration/drone/push Build is passing
2020-01-18 20:00:18 -08:00
palto42
83632448be updated NEWS for mod. --stats & new --files opt. 2020-01-18 14:57:50 +01:00
palto42
e108526bab disable --stats by default 2020-01-18 14:38:59 +01:00
palto42
e27ba0d08a less detail at v1 + option "--files" for details 2020-01-11 16:38:07 +01:00
5afe0e3d63 Disable colored output when "--json" flag is used, so as to produce valid JSON ouput (#276).
All checks were successful
continuous-integration/drone/push Build is passing
2020-01-04 15:50:41 -08:00
c52f82f9ce Documentation: Enable and start borgmatic with a single systemctl command.
All checks were successful
continuous-integration/drone/push Build is passing
2020-01-04 13:37:56 -08:00
d0c533555e In "borgmatic --help", don't expand $HOME in listing of default "--config" paths.
All checks were successful
continuous-integration/drone/push Build is passing
2020-01-02 10:37:31 -08:00
1995c80e60 Add comment about old versions of systemd and option compatibility (#275).
All checks were successful
continuous-integration/drone/push Build is passing
2020-01-02 10:05:32 -08:00
24e1516ec5 Use absolute paths in systemd commands.
All checks were successful
continuous-integration/drone/push Build is passing
2020-01-01 17:14:55 -08:00
5b1beda82b Add logrotate documentation suggestion.
All checks were successful
continuous-integration/drone/push Build is passing
2019-12-31 15:06:53 -08:00
e4f1094569 Bump version for release.
All checks were successful
continuous-integration/drone/tag Build is passing
2019-12-20 14:04:49 -08:00
911668f0c8 Only trigger "on_error" hooks and monitoring failures for "prune", "create", and "check" actions, and not for other actions (#270).
All checks were successful
continuous-integration/drone/push Build is passing
2019-12-20 13:58:02 -08:00
6bfa0783b9 Clarify that the documentation suggestion form is only for documentation.
All checks were successful
continuous-integration/drone/push Build is passing
2019-12-17 20:16:13 -08:00
d64bcd5e83 When pruning with verbosity level 1, list pruned and kept archives.
All checks were successful
continuous-integration/drone/push Build is passing
2019-12-17 20:12:41 -08:00
ed2ca9f476 Sign release files.
All checks were successful
continuous-integration/drone/push Build is passing
2019-12-17 20:06:25 -08:00
f787dfe809 Override particular configuration options from the command-line via "--override" flag (#268).
All checks were successful
continuous-integration/drone/push Build is passing
2019-12-17 11:46:27 -08:00
afaabd14a8 Clarify documentation on how /etc/borgmatic.d/ configuration files are interpreted.
All checks were successful
continuous-integration/drone/push Build is passing
2019-12-13 11:42:17 -08:00
e009bfeaa2 Update Healthchecks/Cronitor/Cronhub monitoring integrations to fire for "check" and "prune" actions, not just "create" (#249).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-12-12 22:54:45 -08:00
f1358d52aa Add "borgmatic init" repository probing fix to NEWS. 2019-12-12 21:50:24 -08:00
b04b333466
Use --remote-path, --debug and --info when checking for repo existence. 2019-12-13 05:47:47 +00:00
Matthew Daley
dd16504329 Use --remote-path, --debug and --info when checking for repo existence
These are currently not being used in the call to `borg info` performed
as part of the borgmatic init command to check whether or not the repo
already exists.
2019-12-13 15:45:12 +13:00
c6cb21a748 Switch to read-only container filesystem to avoid *.pyc getting created with busted permissions.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-12-11 21:24:37 -08:00
78aa4626fa Remove user switch in container due to CI permission issue.
All checks were successful
continuous-integration/drone/push Build is passing
2019-12-11 16:58:08 -08:00
d2df224da8 Use busybox short option to su.
Some checks failed
continuous-integration/drone/push Build is failing
2019-12-11 16:46:24 -08:00
464ff2fe96 Run end-to-end tests on developer machines with Docker Compose for approximate parity with continuous integration tests.
Some checks reported errors
continuous-integration/drone/push Build was killed
2019-12-11 16:43:01 -08:00
0cc711173a Merge branch 'master' into end-to-end-database-tests
All checks were successful
continuous-integration/drone/push Build is passing
2019-12-11 12:27:14 -08:00
14e5cfc8f8 Support piping "borgmatic list" output to grep. Retain colored output when piping/redirecting (#271).
All checks were successful
continuous-integration/drone/push Build is passing
2019-12-11 12:12:25 -08:00
b8b888090d Select Postgres service to work with particular client version.
All checks were successful
continuous-integration/drone/push Build is passing
2019-12-10 21:41:15 -08:00
68281339b7 Black.
Some checks failed
continuous-integration/drone/push Build is failing
2019-12-10 16:57:12 -08:00
2e5be3d3f1 Add missing psql.
Some checks reported errors
continuous-integration/drone/push Build was killed
2019-12-10 16:52:59 -08:00
abd31a94fb Ports fix?
Some checks reported errors
continuous-integration/drone/push Build was killed
2019-12-10 16:47:09 -08:00
01e2cf08d1 Fix Drone CI services syntax. 2019-12-10 16:43:43 -08:00
9f821862b7 End-to-end tests for database dump and restore. 2019-12-10 16:41:01 -08:00
8660af745e Optionally change the internal database dump path via "borgmatic_source_directory" option in location configuration section (#259).
All checks were successful
continuous-integration/drone/push Build is passing
2019-12-10 16:04:34 -08:00
826e4352d1 Filter listed paths via "borgmatic list --path" flag (#269).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-12-08 14:07:02 -08:00
b94999bba4 Fix "borgmatic umount" so it only runs Borg once instead of once per repository / configuration file.
All checks were successful
continuous-integration/drone/push Build is passing
2019-12-07 21:36:51 -08:00
65cc4c9429 Fix "--repository" flag to accept relative paths.
All checks were successful
continuous-integration/drone/push Build is passing
2019-12-06 16:29:41 -08:00
df2be9620b Mount whole repositories via "borgmatic mount" without any "--archive" flag (#253).
All checks were successful
continuous-integration/drone/push Build is passing
2019-12-06 15:58:54 -08:00
2ab9daaa0f Attempt to repair any inconsistencies found during a consistency check via "borgmatic check --repair" flag (#266).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-12-04 16:07:00 -08:00
0c6c61a272 Pass extra options directly to particular Borg commands, handy for Borg options that borgmatic does not yet support natively (#235).
All checks were successful
continuous-integration/drone/push Build is passing
2019-12-04 15:48:10 -08:00
00f62ca023 Fix for "before_backup" hook not triggering an error when the command contains "borg" and has an exit code of 1 (#256).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-11-30 16:55:05 -08:00
9b2ca15de6 Fix for garbled Borg file listing when using "borgmatic create --progress" with verbosity level 1 or 2 (#257).
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-30 15:31:36 -08:00
c4aa34bf5c Fix for missing Healthchecks monitoring payload or HTTP 500 due to incorrect unicode encoding (#260).
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-30 14:51:32 -08:00
4385f2a36a Merge branch 'master' of github.com:witten/borgmatic
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-11-25 15:28:21 -08:00
ed6a9dadf8
Fix for database dump removal incorrectly skipping some database dumps. 2019-11-25 23:28:15 +00:00
d978a2d190 Fix for database dump removal incorrectly skipping some database dumps. 2019-11-25 15:27:59 -08:00
375036e409 Support for mounting an archive as a FUSE filesystem via "borgmatic mount" action, and unmounting via "borgmatic umount" (#123).
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-25 14:56:20 -08:00
Raphael Heinrich
99168c1035 Fix error on cleanup multiple database dumps 2019-11-25 22:07:42 +01:00
f4a231420f Show summary log errors regardless of verbosity. Log the "summary:" header with level based on the contained logs.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-11-25 10:31:09 -08:00
55ebfdda39 Show full error logs at "--verbosity 0" so you can see command output without upping the verbosity level.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-11-19 10:09:25 -08:00
e63e2e0852 Rephrasing verbosity levels.
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-17 22:52:26 -08:00
edc4b9e60e Update the command-line help description.
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-17 22:49:16 -08:00
78ff734e6c Add note about error logs only flowing to Healthchecks for the "create" action.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-11-17 19:10:11 -08:00
2cc743cf47 With "borgmatic check", consider Borg warnings as errors (#247). 2019-11-17 19:06:28 -08:00
d99e6d1994 Remove obnoxious log message when Healthchecks hook sends failure for check action. 2019-11-17 18:55:40 -08:00
50f62d73b7 When using the Healthchecks monitoring hook, include borgmatic logs in the payloads for completion and failure pings (#241).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-11-17 16:54:27 -08:00
26a89de790 Higher resolution BorgBase logo.
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-14 12:39:33 -08:00
c2276b18c5 Add troubleshooting documentation for MySQL lock table errors (#244).
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-14 10:33:47 -08:00
693434f8aa Icon spacing hack that'll show up on GitHub.
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-14 09:45:38 -08:00
1e8edc05e9 Marketing.
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-14 09:34:53 -08:00
1f166a47e9 Fix failing test due to dictionary order (or the lack thereof..) in Python 3.5.
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-13 16:42:58 -08:00
9ee6151999 Add link to unofficial Fedora package of borgmatic that's more up-to-date.
Some checks failed
continuous-integration/drone/push Build is failing
2019-11-13 14:59:49 -08:00
6cdc92bd0c Fix for "borgmatic restore" showing success and incorrectly extracting archive files, even when no databases are configured to restore (#246).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-11-13 10:41:57 -08:00
612e1fea67 Add database version to issue template.
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-13 08:38:58 -08:00
0a9f4e8708 Reopen the file given by "--log-file" flag if an external program rotates the log file while borgmatic is running.
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-12 16:13:25 -08:00
781fac3266 Refactor ping monitors (Healthchecks, Cronitor, Cronhub) to share a common invocation and function signature.
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-12 15:31:07 -08:00
4c38810a32 Add note about rsyslog rate limiting.
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-12 12:32:32 -08:00
bf0d38ff2a Update docs about MySQL/MariaDB database dumps and restores (#228).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-11-12 11:59:01 -08:00
04e5b42606 Fix repository does not exist error with "borgmatic extract" when repository is remote (#243).
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-12 11:47:24 -08:00
30525c43bf Another edge case: Don't error on non-matching restore path globs (#228).
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-12 11:24:31 -08:00
ebeb5efe05 More accurately detecting restore of unconfigured database (#228).
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-12 11:10:47 -08:00
a3e939f34b Factor out filtering of database configuration to function with tests (#228).
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-12 10:39:36 -08:00
2a771161e7 Finish test coverage for MySQL restore (#228).
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-12 09:50:26 -08:00
ded042d8cc First crack at MySQL/MariaDB database restore (#228).
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-11 21:59:30 -08:00
4ed43ae4dc Indicate in AUTHORS that it's not an exhaustive list.
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-10 14:50:28 -08:00
9d29ecf304 Remove MySQL/MariaDB database dumps after backing them up (#228).
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-08 11:53:27 -08:00
427b57e2a9 Database dump hooks for MySQL/MariaDB (#228).
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-08 11:17:52 -08:00
e4f0a336c2 Fix installation path in docs.
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-07 11:09:27 -08:00
68459c6795 Add note about setting PATH environment variable when installing borgmatic.
Some checks reported errors
continuous-integration/drone/push Build was killed
2019-11-07 11:05:41 -08:00
17fda7281a Monitor backups with Cronhub hook integration. Fix Healthchecks/Cronitor hooks to respect dry run.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-11-07 10:08:44 -08:00
ac777965d0 Fix regression of generate-borgmatic-config working without --source flag (#239).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-11-06 09:52:21 -08:00
31d3bc9bd8 In documentation, clarify when Healthchecks/Cronitor hooks fire in relation to other hooks (#238).
Some checks reported errors
continuous-integration/drone/push Build was killed
2019-11-06 09:44:46 -08:00
2115eeb6a2 Upgrade your borgmatic configuration to get new options and comments via "generate-borgmatic-config --source" (#239).
Some checks failed
continuous-integration/drone/push Build is failing
2019-11-06 09:31:00 -08:00
08f017bc3e Remove broken Tox Python version filter when running Black (code formatter) environment directly.
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-05 09:36:30 -08:00
7bc9482970 Add verbosity level -1 to NEWS.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-11-03 17:03:19 -08:00
57ffad4e04 Verbosity level "-1" for even quieter output: Errors only (#236).
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-04 01:02:13 +00:00
5422d14f93 Add Python 3.8.
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-03 14:12:46 -08:00
e6d8c736d0 Documentation feedback: Don't hard-code Python 3.7 for Black.
Some checks reported errors
continuous-integration/drone/push Build was killed
2019-11-03 14:08:19 -08:00
palto42
18d3542fbc new verbosity level "-1" for errors 2019-11-03 09:55:19 +01:00
93f453cecf Add Python 3.8 to build matrix.
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-02 16:38:50 -07:00
505bb778fa Fix logging docs typo.
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-02 12:54:03 -07:00
b09d464162 Add missing PR link.
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-02 11:27:05 -07:00
a9104ed090 Handle log file error more consistently with other error. Add --log-file-verbosity flag. Add docs.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-11-02 11:23:18 -07:00
06f134cc71 Log to file instead of syslog via command-line "--log-file" flag (#233).
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-02 17:43:39 +00:00
palto42
584359b6c0 .gitignore 2019-11-02 14:39:16 +01:00
palto42
26a1a3d1e0 test cases for logfile option 2019-11-02 14:34:16 +01:00
palto42
6da05cbe2d Exception handling for logfile option 2019-11-02 14:33:57 +01:00
f48f52079d Support for Borg --keep-exclude-tags and --exclude-nodump options (#234).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-11-01 15:50:59 -07:00
76c569cf84 Update test requirements.
All checks were successful
continuous-integration/drone/push Build is passing
2019-11-01 12:18:35 -07:00
palto42
b121290c0f Merge remote-tracking branch 'upstream/master' into logging 2019-11-01 19:44:04 +01:00
8fd46b8c70 Monitor backups with Cronitor hook integration.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-11-01 11:33:15 -07:00
603f525352 Clarify --archive help. 2019-11-01 10:50:20 -07:00
palto42
8c8640d0ab file-logger replaces syslog 2019-11-01 18:42:24 +01:00
e3dd545345 Extract files to a particular directory via "borgmatic extract --destination" flag. Also rename "--restore-path" to "--path" to reduce confusion.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-11-01 10:00:26 -07:00
589fc30fc8 To orient the reader, add "borgmatic" to the top of each documentation page.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-10-31 22:04:38 -07:00
bd3c51fc5a Documentation for database restores (#229). 2019-10-31 21:45:47 -07:00
2c46f53ef6 Attempt to upgrade version of pip used in CI.
All checks were successful
continuous-integration/drone/push Build is passing
2019-10-31 20:37:01 -07:00
939f4d4e3d Add additional tests for database restores.
All checks were successful
continuous-integration/drone/push Build is passing
2019-10-31 14:11:19 -07:00
3006db0cae Restore backed up PostgreSQL databases via "borgmatic restore" sub-command (#229).
All checks were successful
continuous-integration/drone/push Build is passing
2019-10-31 12:57:36 -07:00
palto42
22640a9ca0 new option for log-file 2019-10-31 10:44:22 +01:00
ca23c3b8b3 Remove unnecessary word from documentation.
All checks were successful
continuous-integration/drone/push Build is passing
2019-10-30 10:55:40 -07:00
74607fdd43 Documentation on how to develop borgmatic's documentation.
Some checks reported errors
continuous-integration/drone/push Build was killed
2019-10-30 10:54:42 -07:00
b53684a8f0 Fix incorrect link to hooks documentation.
All checks were successful
continuous-integration/drone/push Build is passing
2019-10-29 09:53:45 -07:00
f055f5dea8 Clarify borgmatic restore example with no leading slash.
All checks were successful
continuous-integration/drone/push Build is passing
2019-10-28 12:00:54 -07:00
4dc4fe0b8d Reordering hooks a bit so that pre-backup ordering mirrors post-backup ordering.
All checks were successful
continuous-integration/drone/push Build is passing
2019-10-27 14:47:55 -07:00
5e3c2da79c Database dump hooks documentation (#225).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-10-23 15:35:37 -07:00
37dc94bc79 Add test for removal of database dumps.
All checks were successful
continuous-integration/drone/push Build is passing
2019-10-23 13:36:03 -07:00
fc274b43f0 Rename "borgmatic list --pattern-from" flag to "--patterns-from" to match Borg (#230).
All checks were successful
continuous-integration/drone/push Build is passing
2019-10-22 22:42:36 -07:00
9ab12e4312 Tests for database dumping (#225).
All checks were successful
continuous-integration/drone/push Build is passing
2019-10-22 21:39:30 -07:00
a5ff35c198 Update NEWS with PostgreSQL database dump hook.
All checks were successful
continuous-integration/drone/push Build is passing
2019-10-22 16:31:26 -07:00
458e7776c5 Database dump hooks for PostgreSQL, so you can easily dump your databases before backups run (#225).
All checks were successful
continuous-integration/drone/push Build is passing
2019-10-22 16:28:42 -07:00
fa5fa1c11b Move hooks into directory, so there can be one source file per type of hook (#225).
All checks were successful
continuous-integration/drone/push Build is passing
2019-10-21 15:52:14 -07:00
f8bc67be8d Config generation support for sequences of maps, needed for database dump hooks (#225).
All checks were successful
continuous-integration/drone/push Build is passing
2019-10-21 15:17:47 -07:00
17586d49ac Bump version of tox in CI.
All checks were successful
continuous-integration/drone/push Build is passing
2019-10-21 11:05:37 -07:00
2f75c9aa9e Bump Tox minimum version.
Some checks failed
continuous-integration/drone/push Build is failing
2019-10-20 21:47:57 +00:00
60650ccfc7
Follow latest Tox developments 2019-10-20 12:49:14 +02:00
c12c47cace Fix "borgmatic list --successful" with a slightly better heuristic for listing successful (non-checkpoint) archives.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-10-16 10:24:58 -07:00
d6aaab8a09 Remove parentheses from docs sentence. 2019-10-15 13:02:54 -07:00
128ebf04ce Dead man's switch via healthchecks.io integration (#223) + new monitoring documentation.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-10-15 10:49:14 -07:00
b1941bcce9 Automatically rewrite links to localhost when developing on docs locally. 2019-10-14 13:13:41 -07:00
7b3b28616d Add "borgmatic list --successful" flag to only list successful (non-checkpoint) archives (#86).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-10-13 15:58:11 -07:00
f3910f49ca Fix incorrect help on borg list --last flag. 2019-10-13 14:46:28 -07:00
59e1cac92c Correct Arch Linux borgmatic package link.
All checks were successful
continuous-integration/drone/push Build is passing
2019-10-11 14:35:07 -07:00
b1f0287fdb Add documentation link to community AUR (Arch Linux) borgmatic package.
All checks were successful
continuous-integration/drone/push Build is passing
2019-10-11 13:35:57 -07:00
99c35d4077 "flags" -> "actions" a few places in the docs.
All checks were successful
continuous-integration/drone/push Build is passing
2019-10-11 10:46:30 -07:00
07b9ff61f2 Remove documentation link to the AUR (Arch Linux) borgmatic package, which apparently has been deleted. 2019-10-11 10:42:19 -07:00
f573c1810a Add a suggestion form to all documentation pages, so users can submit ideas for improving the documentation.
All checks were successful
continuous-integration/drone/push Build is passing
2019-10-10 14:27:48 -07:00
1d37b14356 More detailed error alerting via runtime context available in "on_error" hook (#174).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-10-01 12:23:16 -07:00
6c617eddd5 When backups to one of several repositories fails, keep backing up to the other repositories (#144).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-09-30 22:19:31 -07:00
e14ebee4e0 User-defined hooks for global setup or cleanup that run before/after all actions. (#192).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-09-28 16:18:10 -07:00
a897ffd514 Fix "borgmatic create --progress" output so that it updates on the console in real-time (#221).
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2019-09-25 12:03:10 -07:00
a472735616 Merge sample cron files.
All checks were successful
continuous-integration/drone/push Build is passing
2019-09-24 10:49:46 -07:00
b3fec03cf4 Up the syslog verbosity in sample cron files.
All checks were successful
continuous-integration/drone/push Build is passing
2019-09-24 10:47:39 -07:00
89dccc25c3 Add AC power condition for systemd service (#205).
All checks were successful
continuous-integration/drone/push Build is passing
2019-09-24 10:43:30 -07:00
3846155d62 More robust sample systemd service: boot delay, network dependency, lowered CPU/IO priority, etc (#205).
All checks were successful
continuous-integration/drone/push Build is passing
2019-09-24 10:16:30 -07:00
386979ebb4 Mention --stats option in documentation.
All checks were successful
continuous-integration/drone/push Build is passing
2019-09-23 13:13:34 -07:00
07222cd984 Fix visibility of "borgmatic prune --stats" output (#219).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-09-23 13:07:51 -07:00
cf4c6c274d Upgrade build to Alpine 3.10.
All checks were successful
continuous-integration/drone/push Build is passing
2019-09-23 09:07:17 -07:00
340bd72176 Fix regression of argument parsing for default actions (#220).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-09-22 11:30:58 -07:00
1a1bb71af1 Fix error with "borgmatic check --only" command-line flag with "extract" consistency check (#217).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-09-20 11:43:27 -07:00
ae45dfe63a Clarify command-like help for check --only.
All checks were successful
continuous-integration/drone/push Build is passing
2019-09-19 15:20:05 -07:00
d6ac7a9192 Upgrade various dependencies.
All checks were successful
continuous-integration/drone/push Build is passing
2019-09-19 13:04:59 -07:00
d959fdbf8d Document new "check --only" command-line flag.
All checks were successful
continuous-integration/drone/push Build is passing
2019-09-19 11:50:29 -07:00
81739791e0 Override configured consistency checks via "borgmatic check --only" command-line flag (#210).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-09-19 11:43:53 -07:00
4cdff74e9b Support for Borg check --verify-data flag via borgmatic "data" consistency check (#210).
All checks were successful
continuous-integration/drone/push Build is passing
2019-09-18 16:52:27 -07:00
11e830bb1d Fix flake8 warning.
All checks were successful
continuous-integration/drone/push Build is passing
2019-09-18 14:11:56 -07:00
cba00a9c4e Add NEWS entry for generate-borgmatic-config comment change.
Some checks reported errors
continuous-integration/drone/push Build was killed
2019-09-18 14:06:03 -07:00
f2198de151 Merge branch 'comments-white-space' of polyzen/borgmatic into master
Some checks reported errors
continuous-integration/drone/push Build was killed
2019-09-18 21:03:56 +00:00
0c439c0c02
Add space to separate comments from tokens
https://yaml.org/spec/1.2/spec.html#id2780069
2019-09-17 20:00:58 -04:00
f11a9bb4aa Revert "Fix for spurious Borg traceback when initializing a repository in an empty directory (#201)."
All checks were successful
continuous-integration/drone/push Build is passing
This reverts commit 9585c8f908.
2019-09-14 16:14:20 -07:00
ee6f390910 Merge branch 'point-to-stable-docs' of polyzen/borgmatic into master
Some checks failed
continuous-integration/drone/push Build is failing
2019-09-14 21:53:34 +00:00
9a5117db14
Consistently point to stable Borg docs 2019-09-14 17:30:28 -04:00
9585c8f908 Fix for spurious Borg traceback when initializing a repository in an empty directory (#201).
Some checks failed
continuous-integration/drone/push Build is failing
2019-09-13 13:08:23 -07:00
3495484ddd Bump version for release.
All checks were successful
continuous-integration/drone/tag Build is passing
2019-09-12 21:35:00 -07:00
67ab2acb82 Fix for hook erroring with exit code 1 not being interpreted as an error (#214).
All checks were successful
continuous-integration/drone/push Build is passing
2019-09-12 16:37:43 -07:00
c085bacccf Reorder arguments passed to Borg to fix duplicate directories when using Borg patterns (#213).
All checks were successful
continuous-integration/drone/push Build is passing
2019-09-12 15:27:04 -07:00
896401088e Fix for traceback when the "checks" option has an empty value (#208).
All checks were successful
continuous-integration/drone/push Build is passing
2019-08-26 09:52:32 -07:00
ef3dda9213 Bypass Borg error about a moved repository (#209).
All checks were successful
continuous-integration/drone/push Build is passing
2019-08-26 09:39:41 -07:00
c9f5d9b048 In issue template, use python3 instead of python.
All checks were successful
continuous-integration/drone/push Build is passing
2019-08-24 13:08:18 -07:00
ccbd0b608b Do not treat Borg warnings (exit code 1) as failures (#204).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-08-03 15:13:54 -07:00
a7cc2ea803 When validating configuration files, require strings instead of allowing any scalar type. 2019-08-03 14:52:12 -07:00
9ec75ccf3f Fit inadvertent conversion of ordered dict to dict.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-07-27 14:15:24 -07:00
7c890be76d Black formatting. 2019-07-27 14:08:47 -07:00
39e5aac479 If a "prefix" option in borgmatic's configuration has an empty value (blank or ""), then disable default prefix.
Some checks failed
continuous-integration/drone/push Build is failing
2019-07-27 14:04:13 -07:00
e25f2c4e6c Clarify documentation/schema about on_error hook running if there's an error in another hook (#202).
All checks were successful
continuous-integration/drone/push Build is passing
2019-07-19 09:25:01 -07:00
7ad8f9ac6f Link to borgmatic-binary installation method.
All checks were successful
continuous-integration/drone/push Build is passing
2019-07-13 15:40:26 -07:00
2add3ff7ad Fix redirect.
All checks were successful
continuous-integration/drone/push Build is passing
2019-07-05 09:19:51 -07:00
0602ca1862 Add how-to redirect. Fix capitalization.
All checks were successful
continuous-integration/drone/push Build is passing
2019-07-05 09:03:08 -07:00
e973802fc1 Iterate on how-to document name wording.
All checks were successful
continuous-integration/drone/push Build is passing
2019-07-05 08:57:25 -07:00
2bdf6dfd70 Merge branch 'master' of ssh://projects.torsion.org:3022/witten/borgmatic 2019-07-05 08:52:06 -07:00
f894c49540 Merge branch 'rename_howto_guide' of duncanbetts/borgmatic into master
All checks were successful
continuous-integration/drone/push Build is passing
2019-07-05 15:52:21 +00:00
7900e5ea53 Update 'README.md' 2019-07-05 14:40:41 +00:00
5587f48bda Update 'docs/how-to/run-preparation-steps-before-backups.md' 2019-07-05 14:39:21 +00:00
de3ee07566 Update 'README.md'
Improved description of what the resource provides.
2019-07-05 14:37:42 +00:00
fe39453598 Change example filename to be more descriptive. 2019-06-30 17:23:09 -07:00
9c75063c05 Unbreak console snippet in docs.
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-30 17:09:34 -07:00
5cf2ef1732 Add note to documentation about using spaces instead of tabs for indentation, as YAML does not allow tabs (#199).
Some checks failed
continuous-integration/drone/push Build is failing
2019-06-30 16:58:01 -07:00
f35e6ea7ad Upgrade base layers.
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-27 15:38:00 -07:00
90595e9c18 Only log to syslog when run from a non-interactive console (e.g. a cron job). Related to #197.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-06-27 14:41:21 -07:00
032d4adee3 Remove unicode byte order mark from syslog output. (Related to #197.)
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-27 10:03:49 -07:00
4444219e17 Support for Borg --noatime, --noctime, and --nobirthtime flags (mentioned in #193).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-06-25 11:30:55 -07:00
56fd78089d Sort generated flags before passing them to Borg.
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-25 11:04:10 -07:00
86dbc00cbe Support for several more borgmatic/borg info command-line flags (#193). 2019-06-25 10:46:55 -07:00
c644270599 Pass through several "borg list" flags (#193).
Some checks failed
continuous-integration/drone/push Build is failing
2019-06-25 10:18:30 -07:00
1676a98c51 Fix for Borg create error output not showing up at borgmatic verbosity level zero (#198).
Some checks reported errors
continuous-integration/drone/tag Build was killed
continuous-integration/drone/push Build is passing
2019-06-24 09:55:41 -07:00
358ed53da0 Only show build status badge for master branch.
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-23 16:53:33 -07:00
90925c9428 Provide tips about old-style flags for those on older versions.
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-23 16:42:23 -07:00
cd192a6909 Bump version for release.
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build is failing
2019-06-23 16:30:16 -07:00
7185146481 A bunch of tests for parse_subparser_arguments().
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-23 16:06:39 -07:00
c15e6c5fe5 More actions help.
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-23 09:46:22 -07:00
79c2b9df06 Don't make major version bump after all. 2019-06-23 09:23:51 -07:00
acd6772148 Update documentation to refer to dashless action sub-commands.
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-22 22:09:50 -07:00
cd91dbd4f7 Include sub-command help in documentation. 2019-06-22 22:04:56 -07:00
8fc4efff88 Add subcommand note to NEWS. 2019-06-22 21:35:40 -07:00
4bf3e906a1 Break out main borgmatic arguments-parsing code into a separate file. 2019-06-22 21:32:27 -07:00
0ca43ef67a Get tests passing.
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-22 21:23:48 -07:00
603e055a39 Fix borgmatic command unit tests for new parsed arguments. 2019-06-22 16:29:25 -07:00
75c04611dc Refactor to support subparsed-based parsed arguments. 2019-06-22 16:10:07 -07:00
881dc9b01e Make each subparser get a crack all all arguments. 2019-06-21 23:12:37 -07:00
8c72e909a7 Initial stab at subparsers for argument parsing. Not yet fully working. 2019-06-21 22:27:16 -07:00
74ac148747 Disable console color via "color" option in borgmatic configuration output section (#191).
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-06-19 20:48:54 -07:00
be7887c071 Demote log level of unhelpful info log (#194).
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-19 12:01:03 -07:00
da459d95b8 Bump version for release.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-06-17 12:16:23 -07:00
b3aa6af859 Don't color syslog output (#197).
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-17 11:53:08 -07:00
b816af1b13 Undo purge.
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-16 22:10:25 -07:00
276aeb9875 Fix tests that assert on default syslog verbosity.
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-16 21:58:41 -07:00
de94001508 Change default syslog verbosity to show errors only.
Some checks reported errors
continuous-integration/drone/push Build was killed
2019-06-16 21:57:14 -07:00
7cfab3620b Don't prune docs image after push, so watchtower can pick it up.
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-16 21:52:09 -07:00
6c136ebbf1 Fix for unclear error message for invalid YAML merge include (#196).
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-16 21:33:40 -07:00
eaa5eb4174 Note about including config file.
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-15 14:28:32 -07:00
acc2a39454 Include note about debug output.
Some checks reported errors
continuous-integration/drone/push Build was killed
2019-06-15 14:27:53 -07:00
a10c7a8496 Trying out a Gitea issue template for somewhat more structured bug reports.
Some checks reported errors
continuous-integration/drone/push Build was killed
2019-06-15 14:23:45 -07:00
de82919e39 Skip coverage on a particular annoying-to-trigger branch in execution code.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2019-06-13 21:38:06 -07:00
1ba56d5262 Fix tests in Python 3.6.
Some checks reported errors
continuous-integration/drone/push Build was killed
2019-06-13 21:34:04 -07:00
1c825b5d84 Bump version for release.
Some checks reported errors
continuous-integration/drone/push Build was killed
2019-06-13 20:50:06 -07:00
d6d66de251 Set umask used when executing hooks via "umask" option in borgmatic hooks section (#189).
Some checks failed
continuous-integration/drone/push Build is failing
2019-06-13 17:05:26 -07:00
76d79f0331 Suppress part of an obnoxious warning about disabling coverage (for end-to-end tests). 2019-06-13 14:15:08 -07:00
dc43c38e29 Complete test coverage for logging branch.
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-13 11:11:42 -07:00
7d7308a80d Integration tests for execute.py. 2019-06-13 10:48:21 -07:00
b43ef9d76d Move test file to correspond to its code under test. 2019-06-13 10:27:00 -07:00
28cdd67743 Error hook test.
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-13 10:14:16 -07:00
7f126ce127 Move hook.py file up a level. 2019-06-13 10:09:16 -07:00
a6c4debf78 Additional test coverage, and upgrade test requirements. 2019-06-13 10:01:55 -07:00
a74ad5475e Run all Borg commands such that they log to syslog as well as console.
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-12 20:56:20 -07:00
fa293828df Run hooks such that their output goes to syslog as well as console.
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-12 13:09:04 -07:00
f5582b1754 Move borgmatic.borg.execute module up a level for broader use. 2019-06-12 12:13:59 -07:00
1af95714c2 Collapse two execute_command() parameters into one output log level parameter. 2019-06-12 12:11:36 -07:00
0406d18cfd Log Borg --stats output as warning so it shows up at any verbosity level. 2019-06-12 11:49:35 -07:00
66e9ec9c3c A few tests for JSON flag suppressing Borg output. 2019-06-12 11:31:46 -07:00
899a7c8318 Add some wheel metadata do .gitignore.
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-11 21:40:28 -07:00
7c01b69498 Details on where to view logs. 2019-06-11 21:35:43 -07:00
4f0d3bf4ed Add docs/default about systemd journald rate limiting.
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-11 17:03:40 -07:00
9a5e7a3abb Successfully convert Borg output to Python logging entries.
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-11 16:42:04 -07:00
02eb6c7e09 Merge branch 'master' into logging
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-10 10:27:22 -07:00
418c09398c Fix incorrect compression default in schema comment.
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-09 21:21:46 -07:00
cdbd4c55e8 Fix 404 links harder.
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-01 13:23:48 -07:00
2374410891 Fix 404 documentation links by switching to absolute links.
All checks were successful
continuous-integration/drone/push Build is passing
2019-06-01 13:02:39 -07:00
d2c46e91fe Add rsync.net to hosting providers; includ random link rotation.
All checks were successful
continuous-integration/drone/push Build is passing
2019-05-29 15:35:04 -07:00
12441331e6 Fix formatting / import ordering.
All checks were successful
continuous-integration/drone/push Build is passing
2019-05-27 15:46:38 -07:00
9ceeae2de0 Add separate syslog verbosity flag.
Some checks reported errors
continuous-integration/drone/push Build was killed
2019-05-27 15:44:48 -07:00
e0e493c2f1 Factor out configuring of logging into a common function.
Some checks failed
continuous-integration/drone/push Build is failing
2019-05-27 15:05:26 -07:00
0f05f7ad93 Log to syslog in addition to existing standard out logging (#53).
All checks were successful
continuous-integration/drone/push Build is passing
2019-05-26 16:34:46 -07:00
9bc1b71017 Clarify description in setup.py.
All checks were successful
continuous-integration/drone/push Build is passing
2019-05-26 13:36:53 -07:00
b3776871b5 Rewrite the borgmatic overview a bit to clarify its place in the world.
Some checks reported errors
continuous-integration/drone/push Build was killed
2019-05-26 13:35:51 -07:00
308cb31bf9 Remove some of the link rewriting to hopefully fix broken docs links.
All checks were successful
continuous-integration/drone/push Build is passing
2019-05-25 21:55:28 -07:00
e1f4643215 In README, use absolute links to properly rendered documentation (to cut down on confusion).
Some checks reported errors
continuous-integration/drone/push Build was killed
2019-05-25 21:48:05 -07:00
bc4fb322b5 Move documenation build step last in CI. Refactor docs build scripts.
All checks were successful
continuous-integration/drone/push Build is passing
2019-05-21 21:33:25 -07:00
2c4f192e43 Attempt to build documentation image in CI.
All checks were successful
continuous-integration/drone/push Build is passing
2019-05-21 21:13:35 -07:00
fb7a6dccaa Link to docs on skipping pruning entirely.
All checks were successful
continuous-integration/drone/push Build is passing
2019-05-21 12:32:19 -07:00
2826b7bd7c Add files for building documentation into a Docker image for web serving.
All checks were successful
continuous-integration/drone/push Build is passing
2019-05-21 03:16:32 +00:00
932848f6c1 Merge branch 'master' into docs-image.
All checks were successful
continuous-integration/drone/push Build is passing
2019-05-20 19:23:12 -07:00
9255940c6b Upgrade Drone build file format from 0.8 to 1.x.
All checks were successful
continuous-integration/drone/push Build is passing
2019-05-21 02:21:46 +00:00
3eadd16856 Add build server upgrade to NEWS.
Some checks reported errors
continuous-integration/drone/push Build was killed
2019-05-20 19:20:05 -07:00
61f46c5ad5 Try without explicit "sh".
All checks were successful
continuous-integration/drone/push Build is passing
2019-05-20 19:06:13 -07:00
aad47d1741 bash -> sh.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2019-05-20 18:19:42 -07:00
079dd3fe4c Another try.
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2019-05-20 18:18:30 -07:00
d47f1bff4d Try to run script.
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2019-05-20 18:17:25 -07:00
53967f6324 Trigger build.
Some checks reported errors
continuous-integration/drone/pr Build was killed
continuous-integration/drone/push Build was killed
2019-05-20 17:48:39 -07:00
f5a70dc2a5 Drone + jsonnet apparently requires an extension, so switching back to plain YAML.
Some checks reported errors
continuous-integration/drone/push Build was killed
continuous-integration/drone/pr Build was killed
2019-05-20 17:30:07 -07:00
31ae1013d7 Add missing close curly. 2019-05-20 17:18:30 -07:00
071945e558 Re-order. 2019-05-20 17:15:01 -07:00
5c4d6a6e83 Upgrade Drone build file format from 0.8 to 1.x. 2019-05-20 17:05:29 -07:00
9c9be65b2b Add files for building documentation into a Docker image for web serving.
All checks were successful
the build was successful
2019-05-20 11:41:39 -07:00
c164684703 Allow to only run unit tests with Tox.
Some checks reported errors
the build was successful
continuous-integration/drone/push Build was killed
2019-05-19 22:07:15 +00:00
842c9001ba Auto-join #borgmatic from IRC web chat.
All checks were successful
the build was successful
2019-05-19 15:04:01 -07:00
481e47076e Add #borgmatic Freenode IRC channel to documentation.
All checks were successful
the build was successful
2019-05-19 15:01:03 -07:00
917a0dd0a0
Pass posargs to pytest in main testenv
All checks were successful
the build was successful
2019-05-19 23:53:43 +02:00
358aed7c31
Allow to only run unit tests with Tox 2019-05-19 23:53:42 +02:00
9893834e85 Pass positional arguments to Tox environments commands.
All checks were successful
the build was successful
2019-05-19 21:28:38 +00:00
32cf3225c5 Update NEWS.
All checks were successful
the build was successful
2019-05-19 14:17:00 -07:00
2bfd7518c5 Look for .yml configuration file extension in addition to .yaml (#178).
All checks were successful
the build was successful
2019-05-19 21:16:25 +00:00
4ba56684d1 Update NEWS with remove Python cache files before each Tox run.
All checks were successful
the build was successful
2019-05-19 10:07:28 -07:00
0b1e38e5f6 Remove Python cache files before each Tox run.
All checks were successful
the build was successful
2019-05-19 17:07:11 +00:00
7974219389
Make sure to pass posargs for Tox testenvs
All checks were successful
the build was successful
2019-05-19 13:11:22 +02:00
8424e443a9
Also read .yml ending configuration files
All checks were successful
the build was successful
Closes witten/borgmatic#178.
2019-05-19 13:04:42 +02:00
85251cf5d4
Ensure to remove cache files for Tox runs
All checks were successful
the build was successful
2019-05-19 12:46:32 +02:00
8f882ea3ea Switch to more standard "utm_source" for hosting provider link.
All checks were successful
the build was successful
2019-05-18 21:33:39 -07:00
7a2bcc96bb Add Borg/borgmatic hosting providers to documentation.
All checks were successful
the build was successful
2019-05-18 20:59:50 -07:00
8b41e58e1f Mention isort import ordering in documentation.
All checks were successful
the build was successful
2019-05-16 12:06:55 -07:00
9417359da3 Fix for regression with missing verbose log entries (#177).
All checks were successful
the build was successful
2019-05-16 10:50:19 -07:00
1cf0e1bd84 Support for various Borg directory environment variables (#153).
All checks were successful
the build was successful
2019-05-16 10:34:52 -07:00
223f803e87 Fix formatting.
All checks were successful
the build was successful
2019-05-14 13:09:36 -07:00
6cb901d083 Bump version for release.
All checks were successful
the build was successful
2019-05-14 13:07:49 -07:00
096be14230 Run tests for all installed versions of Python (#166).
All checks were successful
the build was successful
2019-05-14 20:06:08 +00:00
bb8b1e58e8 PR feedback: Consistency.
All checks were successful
the build was successful
2019-05-14 12:19:56 -07:00
06261d8c86 Merge branch 'master' into tox-skip-missing-interpreters
All checks were successful
the build was successful
2019-05-14 12:18:30 -07:00
869cccf884 Upgrade pip to a particular version during local test and CI.
All checks were successful
the build was successful
2019-05-14 19:17:30 +00:00
0defaf9cb5 Run tests for all installed versions of Python (#166).
All checks were successful
the build was successful
2019-05-14 12:09:07 -07:00
60b1f9921d Don't use pip wrapper script in CI.
All checks were successful
the build was successful
2019-05-14 12:01:40 -07:00
f61bc91b0f Merge branch 'master' into upgrade-pip
Some checks failed
the build failed
2019-05-14 10:31:03 -07:00
ed2c6053de Upgrade pip to a particular version during local test and CI.
Some checks failed
the build failed
2019-05-14 10:28:04 -07:00
2cffa8deaa Add missing ticket number to NEWS item.
All checks were successful
the build was successful
2019-05-14 10:07:46 -07:00
f0581271f6 Automatically sort Python imports in code.
All checks were successful
the build was successful
2019-05-14 10:02:41 -07:00
99522234ea Automatically sort Python imports in code.
All checks were successful
the build was successful
2019-05-14 17:02:37 +00:00
67f2862fb1 Change paths to reflect new pip install --user documentation.
All checks were successful
the build was successful
2019-05-14 10:00:50 -07:00
1c0dc3f904
Run isort over the source
All checks were successful
the build was successful
2019-05-14 18:59:19 +02:00
b94dbff216
Add isort configuration
Closes witten/borgmatic#169.
2019-05-14 18:59:19 +02:00
7388c723cd Mention tox.ini refactoring in NEWS.
All checks were successful
the build was successful
2019-05-14 09:45:39 -07:00
128be3c17d Factor out build/test configuration from tox.ini file.
All checks were successful
the build was successful
2019-05-14 16:45:24 +00:00
4c30c94258
Add workaround for editable failure
All checks were successful
the build was successful
See witten/borgmatic#165 (comment).
2019-05-14 13:17:15 +02:00
20b8b45aeb
Remove all configuration from Tox file
This puts tool configuration in their familiar and standard
locations and simplifies the Tox configuration to just laying
out the environments and factors.

This also allows users who do not want to deal with overhead of Tox (for
whatever reasons ...) to run pytest/black/etc. and have the same
behaviour.
2019-05-14 13:17:15 +02:00
2dd899f287 Linkify build status badge.
All checks were successful
the build was successful
2019-05-13 22:33:28 -07:00
a13cc0ab17 More tests for colored logging.
All checks were successful
the build was successful
2019-05-13 21:10:26 -07:00
620f9e64d6 A few more tests for new colored logging.
All checks were successful
the build was successful
2019-05-13 20:49:20 -07:00
25c320b281 Pin pip version: cherrypick of witten/borgmatic#172
All checks were successful
the build was successful
2019-05-13 20:01:25 -07:00
f19eec56ac Add tox pin to NEWS.
All checks were successful
the build was successful
2019-05-13 17:07:20 -07:00
7cbcff2e9b Pin tox version.
All checks were successful
the build was successful
2019-05-14 00:06:07 +00:00
9f6407ada6 Mention continuous integration badge in NEWS.
All checks were successful
the build was successful
2019-05-13 14:54:24 -07:00
e933ecf046 Add drone CI note and badge.
All checks were successful
the build was successful
2019-05-13 21:51:00 +00:00
4010a2ed77
Add note about Drone CI to contributing docs
All checks were successful
the build was successful
2019-05-13 23:43:11 +02:00
2f36096e1a
Add Drone build badge 2019-05-13 23:42:11 +02:00
82ec45e375
Pin tox version
All checks were successful
the build was successful
Towards more reproducible results with Tox.
2019-05-13 23:12:18 +02:00
37362150fe Color records that are logged via logger.handle() as well.
All checks were successful
the build was successful
2019-05-13 13:50:32 -07:00
a7ba97803f Add colored output to NEWS.
All checks were successful
the build was successful
2019-05-13 19:52:54 +00:00
31dc903877 Integrate colorama for colored output.
All checks were successful
the build was successful
2019-05-13 19:50:36 +00:00
8943867433 Bump to dev version.
All checks were successful
the build was successful
2019-05-13 19:07:27 +00:00
d9cb110563 Document installing borgmatic with pip install --user instead of a system Python install.
Some checks failed
the build failed
2019-05-13 19:06:42 +00:00
32113cee67 Document installing borgmatic with pip install --user instead of a system Python install.
All checks were successful
the build was successful
2019-05-13 19:04:24 +00:00
a621ce199a
Add tests for borgmatic.logger.to_bool
All checks were successful
the build was successful
2019-05-13 13:40:23 +02:00
1f524d6c87
Add borgmatic custom logger 2019-05-13 13:40:18 +02:00
0320d449ec
Add documentation about colorama 2019-05-13 13:40:17 +02:00
30f007687a
Add colorama to testing dependencies 2019-05-13 13:40:17 +02:00
adf7856162
Add new colorama dependency 2019-05-13 13:40:17 +02:00
f9dce8b2d3
Recommend user installs when upgrading
All checks were successful
the build was successful
2019-05-13 13:18:59 +02:00
15cb6270ef
Recommend a tox user install for developing 2019-05-13 13:18:45 +02:00
ed14fdbac9
Recommend root user package install
This can do bad things to a system Python install. So, we try to
mitigate this by recommending a root user user site installation.
2019-05-13 13:18:37 +02:00
8650a15db1 Document validate-borgmatic-config and add a few tests.
All checks were successful
the build was successful
2019-05-11 14:05:16 -07:00
6a10022543 Add validate-borgmatic-config command.
Some checks failed
the build failed
2019-05-11 20:15:06 +00:00
52e4f48eb9
Add validate-borgmatic-config command
Some checks failed
the build failed
Useful when generating the borgmatic configuration file with
configuration management and before moving the generated file in place
checking if it is actually valid.
2019-05-10 00:10:28 +02:00
f5e1e8bec9 In continuous integration build matrix, use newer Alpine 3.9 instead of 3.8.
All checks were successful
the build was successful
2019-05-07 16:19:03 -07:00
a291477c19 Fix for hooks executing when using --dry-run (#160).
All checks were successful
the build was successful
2019-05-07 16:06:31 -07:00
1c88dda76a Fix for invalid JSON output when using multiple borgmatic configuration files (#155).
All checks were successful
the build was successful
2019-04-02 22:30:14 -07:00
0b59c22c23 Fix for seemingly random filename ordering when running through a directory of configuration files (#157).
All checks were successful
the build was successful
2019-03-30 16:41:21 -07:00
576377e2b2 Clarify differences between Docker images.
All checks were successful
the build was successful
2019-03-16 15:04:48 -07:00
6ff1867312 Configuration files includes and merging (#148).
All checks were successful
the build was successful
2019-03-06 12:06:27 -08:00
3cb52423d2 Support for Borg create/extract --numeric-owner flag (#147).
All checks were successful
the build was successful
2019-03-05 09:11:35 -08:00
5a5b6491ac Add note about uncommenting section names.
All checks were successful
the build was successful
2019-03-04 15:15:49 -08:00
4272c6b077 List the files within an archive via --list --archive option (#140).
All checks were successful
the build was successful
2019-02-23 23:02:17 -08:00
26071de2e7 Update extraction docs.
All checks were successful
the build was successful
2019-02-18 22:43:32 -08:00
fe92d9e838 Fix restore paths list to tuple conversion.
All checks were successful
the build was successful
2019-02-18 21:59:09 -08:00
5ea2d644a2 Fix error handling when --extract repository guard fails.
All checks were successful
the build was successful
2019-02-18 21:52:56 -08:00
c35f90154f Only guard repository when --extract is used.
All checks were successful
the build was successful
2019-02-18 21:43:30 -08:00
36305c50b1 Update push script to support branches.
All checks were successful
the build was successful
2019-02-18 13:51:33 -08:00
2b3b8eab71 Add archive extract to end-to-end test.
All checks were successful
the build was successful
2019-02-18 13:47:18 -08:00
aa7c7651e5 Fix config repositories consumption. 2019-02-18 13:27:35 -08:00
c41ffb5ceb If no extract repository is given, then error if there are multiple configured repositories. 2019-02-18 13:22:14 -08:00
766a03375a Guard that the given repository occurs in config exactly once.
All checks were successful
the build was successful
2019-02-18 12:58:39 -08:00
2a4d4247e3 Tests for extract_archive(). 2019-02-18 10:31:52 -08:00
9de5083a7e Additional test coverage for extract options in borgmatic command. 2019-02-18 09:52:56 -08:00
d0557b2bcd Initial work on #123: Support for Borg extract. 2019-02-18 09:30:34 -08:00
1a980d6321 Organize options within command-line help into logical groups.
All checks were successful
the build was successful
2019-02-12 22:27:04 -08:00
fb21d4e645 Remove dead code.
All checks were successful
the build was successful
2019-02-09 21:17:55 -08:00
5933a4d778 Note tests exclusion in changelog.
All checks were successful
the build was successful
2019-02-08 20:59:50 -08:00
8cf16c7831 Exclude tests from distribution packages.
All checks were successful
the build was successful
2019-02-09 05:02:19 +00:00
fcf4e03c2f
exclude tests from distribution packages
All checks were successful
the build was successful
2019-02-08 19:22:56 +01:00
d1b29e82da borgmatic command-line reference.
All checks were successful
the build was successful
2019-02-04 22:27:40 -08:00
290e969a22 Include a sample borgmatic configuration file in the documentation (#119).
All checks were successful
the build was successful
2019-02-04 22:12:33 -08:00
18ae91ea6e Strike some unnecessary words from docs.
All checks were successful
the build was successful
2019-02-04 20:58:27 -08:00
0bce77a2ac Distribute troubleshooting among relevant how-to guides.
All checks were successful
the build was successful
2019-02-04 20:53:47 -08:00
19155607af Include link to development how-to.
All checks were successful
the build was successful
2019-02-03 22:42:33 -08:00
f357c37e2c Fix/remove some documentation links.
All checks were successful
the build was successful
2019-02-03 22:35:38 -08:00
2980c14728 Fix README links on GitHub.
All checks were successful
the build was successful
2019-02-03 22:26:39 -08:00
7e0e00d45d Refactor documentation into multiple separate pages for clarity and findability.
All checks were successful
the build was successful
2019-02-03 22:20:59 -08:00
8b4ac0017b Fix ticket number in changelog.
All checks were successful
the build was successful
2019-01-27 14:00:24 -08:00
8ec1ec527e Bump version for release.
All checks were successful
the build was successful
2019-01-27 13:54:26 -08:00
6096a7181c Leave exclude_patterns glob expansion to Borg, since doing it in borgmatic leads to confusing behavior (#132).
All checks were successful
the build was successful
2019-01-27 13:47:26 -08:00
fa9dfb8ff7 Remove date echo from schema example, as it's not a substitute for real logging (#127).
All checks were successful
the build was successful
2019-01-27 12:22:22 -08:00
2dc006aab4 Allow use of --stats flag when --create or --prune flags are implied (#139).
All checks were successful
the build was successful
2019-01-27 12:15:47 -08:00
031b9d6faf Handle and format validation errors raised during argument parsing (#136).
All checks were successful
the build was successful
2019-01-27 11:58:04 -08:00
d9018a47f6
Add link to openSUSE packages from README.
All checks were successful
the build was successful
2019-01-21 09:57:05 -08:00
Antonio Larrosa
e893a20dfd
Add link to openSUSE packages
Add a link to the software.opensuse.org page were both official and community packages of borgmatic are available to be downloaded or installed using 1-click-install.
2019-01-21 13:13:40 +01:00
09d521661f Remove weasel words like "easily" and "simply".
All checks were successful
the build was successful
2018-12-25 22:03:34 -08:00
fd46efb193 Add borgmatic --version command-line flag to get the current installed version number.
All checks were successful
the build was successful
2018-12-25 21:01:08 -08:00
426f54c9cc When generating sample configuration, document the defaults for each option (#103).
All checks were successful
the build was successful
2018-12-25 17:05:22 -08:00
45a537b6b1 When running multiple configuration files, attempt all of them even if one errors (#116).
All checks were successful
the build was successful
2018-12-25 15:23:54 -08:00
d6feca169c Fix duplicate issue number.
All checks were successful
the build was successful
2018-12-24 22:35:16 -08:00
05e2900ab0 Rev version.
All checks were successful
the build was successful
2018-12-24 22:29:41 -08:00
30b52e5523 With --init command-line flag, if a repository already exists, proceed without erroring (#117). 2018-12-24 22:28:02 -08:00
14aeddc11f Black re-formatting.
All checks were successful
the build was successful
2018-12-24 14:38:57 -08:00
066399ecdb Mention --stats command-line flag in NEWS file.
Some checks failed
the build failed
2018-12-23 16:06:08 -08:00
d4bbac4467 Support for --stats command-line flag independent of --verbosity (#100).
All checks were successful
the build was successful
2018-12-24 00:04:23 +00:00
7516443a89 fix changes requested about stats
All checks were successful
the build was successful
2018-12-22 23:46:03 +01:00
73d67e29b4 Support for Borg create & prune --stats via borgmatic command-line flag (#100) 2018-12-22 23:27:24 +01:00
c3e7425f4c Some late-breaking README additions (new borgmatic packages).
All checks were successful
the build was successful
2018-12-10 22:30:10 -08:00
cc9dbb1def Support for Borg repository initialization via borgmatic --init command-line flag (#110).
All checks were successful
the build was successful
2018-12-10 22:20:57 -08:00
2045edc11b Fix warning about classifiers as tuple. 2018-12-09 15:49:58 -08:00
1dcac44d6c Fix broken test of deprecated --excludes option.
Some checks failed
the build failed
2018-12-09 15:49:05 -08:00
300ead65d3 Error when deprecated --excludes command-line option is used.
Some checks failed
the build failed
2018-12-09 14:57:14 -08:00
6a0219a7a4 Update README with link to a new/forked Docker image (#113).
All checks were successful
the build was successful
2018-12-02 15:16:52 -08:00
80c69aac05 Fix incomplete test coverage around --progress argument validation. 2018-12-02 15:08:42 -08:00
7417a3cd00 Update Borg create --filter values so a dry run lists files to back up. (#111).
All checks were successful
the build was successful
2018-12-02 15:03:07 -08:00
9ca80a54d8 Support for Borg create --progress via borgmatic command-line flag (#108).
All checks were successful
the build was successful
2018-11-21 22:03:39 -08:00
5c0b17ef39 Support for Borg --chunker-params create option via "chunker_params" in borgmatic's storage section (#105).
All checks were successful
the build was successful
2018-10-27 15:57:28 -07:00
1697d8aaef Silence curl when posting release description to Gitea.
All checks were successful
the build was successful
2018-10-15 22:32:13 -07:00
fef441a8ff More concessions for Python 3.5 compatibility.
All checks were successful
the build was successful
2018-10-15 09:37:26 -07:00
c1ddc4268b We can't have nice things.
Some checks failed
the build failed
2018-10-15 09:30:04 -07:00
e323290e61 Switch from bash to sh for black wrapper.
Some checks failed
the build failed
2018-10-15 09:25:57 -07:00
1ab44d4201 Wrap black with script that skips it if Python version < 3.6.
Some checks failed
the build failed
2018-10-15 09:20:35 -07:00
71b1c3dfb0 Make automated tests support running in Python 3.5.
Some checks failed
the build failed
2018-10-15 09:04:29 -07:00
695930a607 Fix for syntax error that occurred in Python 3.5 and below (#102).
Some checks failed
the build failed
2018-10-15 08:47:15 -07:00
eb2a4ff1f0 Add Python 3.5 to continuous integration.
Some checks failed
the build failed
2018-10-15 08:17:34 -07:00
531d5c80c0 Fix quoting and escaping in release script.
All checks were successful
the build was successful
2018-10-14 12:14:29 -07:00
067ed27689 Rev to 1.2.8.
All checks were successful
the build was successful
2018-10-14 11:45:34 -07:00
fa38de2de7 Enable consistency checks for only certain repositories via "check_repositories" (#73).
All checks were successful
the build was successful
2018-10-13 20:34:51 -07:00
e4d1b49c39 Switch some functions with many arguments to kwargs only. 2018-10-13 15:19:16 -07:00
af7caec509 Mention minimum Borg version to install in README.
All checks were successful
the build was successful
2018-10-13 13:35:42 -07:00
90c1f899fc Use newer Alpine (with newer version of Borg) in matrix builds. 2018-10-13 13:35:18 -07:00
a0691ae4cd Run continuous integration tests on a matrix of Python and Borg versions.
Some checks failed
the build failed
2018-10-13 13:09:12 -07:00
2f20e6f808 Include link to issue tracker within various command output.
All checks were successful
the build was successful
2018-10-07 22:29:56 -07:00
7a4636ae0f Remove curl --verbose in release script.
All checks were successful
the build was successful
2018-10-06 22:35:00 -07:00
53435dcc3e Post release changelogs to projects.evoworx.org.
All checks were successful
the build was successful
2018-10-06 22:24:46 -07:00
4d01278037 Update release file to post changelogs to GitHub release descriptions.
All checks were successful
the build was successful
2018-10-06 15:18:21 -07:00
2299e5d41e Additional dependency version pins in test requirements.
All checks were successful
the build was successful
2018-10-06 14:17:47 -07:00
d16f5d5df3 Add backticks to path literal in README.
All checks were successful
the build was successful
2018-10-06 13:23:54 -07:00
da8e9638f4 Support for Borg --keep-secondly prune option (#98).
All checks were successful
the build was successful
2018-10-04 21:54:23 -07:00
900ea80a42 Hack to uncomment all options in config file used for finding unsupported Borg options.
All checks were successful
the build was successful
2018-10-04 21:45:31 -07:00
4b92d0f685 Remove unneeded Dockerfile for end-to-end tests.
All checks were successful
the build was successful
2018-10-03 22:44:23 -07:00
3ce5533103 Make end-to-end test clean up after itself, and drop unnecessary use of Docker for it.
All checks were successful
the build was successful
2018-10-03 22:36:25 -07:00
4a1ee8c911 Pull new base Docker images during CI.
All checks were successful
the build was successful
2018-10-03 19:35:42 -07:00
3f22a99412 Rev pykwalify.
All checks were successful
the build was successful
2018-10-03 08:59:08 -07:00
caf95cc913 Rebuild.
All checks were successful
the build was successful
2018-09-30 22:58:23 -07:00
fd3130b4d9 Install tox before using it. 2018-09-30 22:47:07 -07:00
65bb5a49e2 CI? 2018-09-30 22:43:49 -07:00
4bcc517326 Attempted Drone CI configuration. 2018-09-30 22:09:53 -07:00
0b164973e0 Add an end-to-end automated test that actually integrates with Borg. 2018-09-30 17:30:04 -07:00
a125df991b Move tests to the root of the repository, in keeping with more common convention. 2018-09-30 13:57:20 -07:00
f9a9b42c58 A little introductory text for the screencast. 2018-09-30 11:11:07 -07:00
56ad1d164a Use Flake8 code checker as part of running automated tests. 2018-09-29 23:15:18 -07:00
3cce18919c Switch Black link to documentation. 2018-09-29 22:46:34 -07:00
76d6a69f5a Use Black code formatter as part of running automated tests. 2018-09-29 22:45:00 -07:00
3db17277b4 Replace broken screencast thumbnail with embedded player. 2018-09-29 21:38:38 -07:00
ece49eb500 Update screencast. 2018-09-29 18:56:39 -07:00
746428ed44 Fix generated configuration to also include a "keep_daily" value so pruning works out of the box. 2018-09-29 15:44:37 -07:00
219 changed files with 25881 additions and 3418 deletions

2
.dockerignore Normal file
View file

@ -0,0 +1,2 @@
.git
.tox

56
.drone.yml Normal file
View file

@ -0,0 +1,56 @@
kind: pipeline
name: python-3-8-alpine-3-13
services:
- name: postgresql
image: postgres:13.1-alpine
environment:
POSTGRES_PASSWORD: test
POSTGRES_DB: test
- name: mysql
image: mariadb:10.5
environment:
MYSQL_ROOT_PASSWORD: test
MYSQL_DATABASE: test
- name: mongodb
image: mongo:5.0.5
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: test
clone:
skip_verify: true
steps:
- name: build
image: alpine:3.13
pull: always
commands:
- scripts/run-full-tests
---
kind: pipeline
name: documentation
clone:
skip_verify: true
steps:
- name: build
image: plugins/docker
settings:
username:
from_secret: docker_username
password:
from_secret: docker_password
registry: projects.torsion.org
repo: projects.torsion.org/borgmatic-collective/borgmatic
tags: docs
dockerfile: docs/Dockerfile
trigger:
repo:
- borgmatic-collective/borgmatic
branch:
- master
event:
- push

47
.eleventy.js Normal file
View file

@ -0,0 +1,47 @@
const pluginSyntaxHighlight = require("@11ty/eleventy-plugin-syntaxhighlight");
const inclusiveLangPlugin = require("@11ty/eleventy-plugin-inclusive-language");
const navigationPlugin = require("@11ty/eleventy-navigation");
module.exports = function(eleventyConfig) {
eleventyConfig.addPlugin(pluginSyntaxHighlight);
eleventyConfig.addPlugin(inclusiveLangPlugin);
eleventyConfig.addPlugin(navigationPlugin);
let markdownIt = require("markdown-it");
let markdownItAnchor = require("markdown-it-anchor");
let markdownItReplaceLink = require("markdown-it-replace-link");
let markdownItOptions = {
html: true,
breaks: false,
linkify: true,
replaceLink: function (link, env) {
if (process.env.NODE_ENV == "production") {
return link;
}
return link.replace('https://torsion.org/borgmatic/', 'http://localhost:8080/');
}
};
let markdownItAnchorOptions = {
permalink: markdownItAnchor.permalink.headerLink()
};
eleventyConfig.setLibrary(
"md",
markdownIt(markdownItOptions)
.use(markdownItAnchor, markdownItAnchorOptions)
.use(markdownItReplaceLink)
);
eleventyConfig.addPassthroughCopy({"docs/static": "static"});
eleventyConfig.setLiquidOptions({dynamicPartials: false});
return {
templateFormats: [
"md",
"txt"
]
}
};

35
.gitea/issue_template.md Normal file
View file

@ -0,0 +1,35 @@
#### What I'm trying to do and why
#### Steps to reproduce (if a bug)
Include (sanitized) borgmatic configuration files if applicable.
#### Actual behavior (if a bug)
Include (sanitized) `--verbosity 2` output if applicable.
#### Expected behavior (if a bug)
#### Other notes / implementation ideas
#### Environment
**borgmatic version:** [version here]
Use `sudo borgmatic --version` or `sudo pip show borgmatic | grep ^Version`
**borgmatic installation method:** [e.g., Debian package, Docker container, etc.]
**Borg version:** [version here]
Use `sudo borg --version`
**Python version:** [version here]
Use `python3 --version`
**Database version (if applicable):** [version here]
Use `psql --version` or `mysql --version` on client and server.
**operating system and version:** [OS here]

8
.gitignore vendored
View file

@ -2,8 +2,10 @@
*.pyc
*.swp
.cache
.coverage
.coverage*
.pytest_cache
.tox
build
dist
__pycache__
build/
dist/
pip-wheel-metadata/

View file

@ -7,6 +7,8 @@ Johannes Feichtner: Support for user hooks
Michele Lazzeri: Custom archive names
Nick Whyte: Support prefix filtering for archive consistency checks
newtonne: Read encryption password from external file
Robin `ypid` Schneider: Support additional options of Borg
Robin `ypid` Schneider: Support additional options of Borg and add validate-borgmatic-config command
Scott Squires: Custom archive names
Thomas LÉVEIL: Support for a keep_minutely prune option. Support for the --json option
And many others! See the output of "git log".

View file

@ -1 +1,2 @@
include borgmatic/config/schema.yaml
graft sample/systemd

675
NEWS
View file

@ -1,3 +1,676 @@
1.7.0
* #463: Add "before_actions" and "after_actions" command hooks that run before/after all the
actions for each repository. These new hooks are a good place to run per-repository steps like
mounting/unmounting a remote filesystem.
* #463: Update documentation to cover per-repository configurations:
https://torsion.org/borgmatic/docs/how-to/make-per-application-backups/
* #557: Support for Borg 2 while still working with Borg 1. This includes new borgmatic actions
like "rcreate" (replaces "init"), "rlist" (list archives in repository), "rinfo" (show repository
info), and "transfer" (for upgrading Borg repositories). For the most part, borgmatic tries to
smooth over differences between Borg 1 and 2 to make your upgrade process easier. However, there
are still a few cases where Borg made breaking changes. See the Borg 2.0 changelog for more
information: https://www.borgbackup.org/releases/borg-2.0.html
* #557: If you install Borg 2, you'll need to manually upgrade your existing Borg 1 repositories
before use. Note that Borg 2 stable is not yet released as of this borgmatic release, so don't
use Borg 2 for production until it is! See the documentation for more information:
https://torsion.org/borgmatic/docs/how-to/upgrade/#upgrading-borg
* #557: Rename several configuration options to match Borg 2: "remote_rate_limit" is now
"upload_rate_limit", "numeric_owner" is "numeric_ids", and "bsd_flags" is "flags". borgmatic
still works with the old options.
* #557: Remote repository paths without the "ssh://" syntax are deprecated but still supported for
now. Remote repository paths containing "~" are deprecated in borgmatic and no longer work in
Borg 2.
* #557: Omitting the "--archive" flag on the "list" action is deprecated when using Borg 2. Use
the new "rlist" action instead.
* #557: The "--dry-run" flag can now be used with the "rcreate"/"init" action.
* #565: Fix handling of "repository" and "data" consistency checks to prevent invalid Borg flags.
* #566: Modify "mount" and "extract" actions to require the "--repository" flag when multiple
repositories are configured.
* #571: BREAKING: Remove old-style command-line action flags like "--create, "--list", etc. If
you're already using actions like "create" and "list" instead, this change should not affect you.
* #571: BREAKING: Rename "--files" flag on "prune" action to "--list", as it lists archives, not
files.
* #571: Add "--list" as alias for "--files" flag on "create" and "export-tar" actions.
* Add support for disabling TLS verification in Healthchecks monitoring hook with "verify_tls"
option.
1.6.6
* #559: Update documentation about configuring multiple consistency checks or multiple databases.
* #560: Fix all database hooks to error when the requested database to restore isn't present in the
Borg archive.
* #561: Fix command-line "--override" flag to continue supporting old configuration file formats.
* #563: Fix traceback with "create" action and "--json" flag when a database hook is configured.
1.6.5
* #553: Fix logging to include the full traceback when Borg experiences an internal error, not just
the first few lines.
* #554: Fix all monitoring hooks to warn if the server returns an HTTP 4xx error. This can happen
with Healthchecks, for instance, when using an invalid ping URL.
* #555: Fix environment variable plumbing so options like "encryption_passphrase" and
"encryption_passcommand" in one configuration file aren't used for other configuration files.
1.6.4
* #546, #382: Keep your repository passphrases and database passwords outside of borgmatic's
configuration file with environment variable interpolation. See the documentation for more
information: https://torsion.org/borgmatic/docs/how-to/provide-your-passwords/
1.6.3
* #541: Add "borgmatic list --find" flag for searching for files across multiple archives, useful
for hunting down that file you accidentally deleted so you can extract it. See the documentation
for more information:
https://torsion.org/borgmatic/docs/how-to/inspect-your-backups/#searching-for-a-file
* #543: Add a monitoring hook for sending push notifications via ntfy. See the documentation for
more information: https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/#ntfy-hook
* Fix Bash completion script to no longer alter your shell's settings (complain about unset
variables or error on pipe failures).
* Deprecate "borgmatic list --successful" flag, as listing only non-checkpoint (successful)
archives is now the default in newer versions of Borg.
1.6.2
* #523: Reduce the default consistency check frequency and support configuring the frequency
independently for each check. Also add "borgmatic check --force" flag to ignore configured
frequencies. See the documentation for more information:
https://torsion.org/borgmatic/docs/how-to/deal-with-very-large-backups/#check-frequency
* #536: Fix generate-borgmatic-config to support more complex schema changes like the new
Healthchecks configuration options when the "--source" flag is used.
* #538: Add support for "borgmatic borg debug" command.
* #539: Add "generate-borgmatic-config --overwrite" flag to replace an existing destination file.
* Add Bash completion script so you can tab-complete the borgmatic command-line. See the
documentation for more information:
https://torsion.org/borgmatic/docs/how-to/set-up-backups/#shell-completion
1.6.1
* #294: Add Healthchecks monitoring hook "ping_body_limit" option to configure how many bytes of
logs to send to the Healthchecks server.
* #402: Remove the error when "archive_name_format" is specified but a retention prefix isn't.
* #420: Warn when an unsupported variable is used in a hook command.
* #439: Change connection failures for monitoring hooks (Healthchecks, Cronitor, PagerDuty, and
Cronhub) to be warnings instead of errors. This way, the monitoring system failing does not block
backups.
* #460: Add Healthchecks monitoring hook "send_logs" option to enable/disable sending borgmatic
logs to the Healthchecks server.
* #525: Add Healthchecks monitoring hook "states" option to only enable pinging for particular
monitoring states (start, finish, fail).
* #528: Improve the error message when a configuration override contains an invalid value.
* #531: BREAKING: When deep merging common configuration, merge colliding list values by appending
them. Previously, one list replaced the other.
* #532: When a configuration include is a relative path, load it from either the current working
directory or from the directory containing the file doing the including. Previously, only the
working directory was used.
* Add a randomized delay to the sample systemd timer to spread out the load on a server.
* Change the configuration format for borgmatic monitoring hooks (Healthchecks, Cronitor,
PagerDuty, and Cronhub) to specify the ping URL / integration key as a named option. The intent
is to support additional options (some in this release). This change is backwards-compatible.
* Add emojis to documentation table of contents to make it easier to find particular how-to and
reference guides at a glance.
1.6.0
* #381: BREAKING: Greatly simplify configuration file reuse by deep merging when including common
configuration. See the documentation for more information:
https://torsion.org/borgmatic/docs/how-to/make-per-application-backups/#include-merging
* #473: BREAKING: Instead of executing "before" command hooks before all borgmatic actions run (and
"after" hooks after), execute these hooks right before/after the corresponding action. E.g.,
"before_check" now runs immediately before the "check" action. This better supports running
timing-sensitive tasks like pausing containers. Side effect: before/after command hooks now run
once for each configured repository instead of once per configuration file. Additionally, the
"repositories" interpolated variable has been changed to "repository", containing the path to the
current repository for the hook. See the documentation for more information:
https://torsion.org/borgmatic/docs/how-to/add-preparation-and-cleanup-steps-to-backups/
* #513: Add mention of sudo's "secure_path" option to borgmatic installation documentation.
* #515: Fix "borgmatic borg key ..." to pass parameters to Borg in the correct order.
* #516: Fix handling of TERM signal to exit borgmatic, not just forward the signal to Borg.
* #517: Fix borgmatic exit code (so it's zero) when initial Borg calls fail but later retries
succeed.
* Change Healthchecks logs truncation size from 10k bytes to 100k bytes, corresponding to that
same change on Healthchecks.io.
1.5.24
* #431: Add "working_directory" option to support source directories with relative paths.
* #444: When loading a configuration file that is unreadable due to file permissions, warn instead
of erroring. This supports running borgmatic as a non-root user with configuration in ~/.config
even if there is an unreadable global configuration file in /etc.
* #469: Add "repositories" context to "before_*" and "after_*" command action hooks. See the
documentation for more information:
https://torsion.org/borgmatic/docs/how-to/add-preparation-and-cleanup-steps-to-backups/
* #486: Fix handling of "patterns_from" and "exclude_from" options to error instead of warning when
referencing unreadable files and "create" action is run.
* #507: Fix Borg usage error in the "compact" action when running "borgmatic --dry-run". Now, skip
"compact" entirely during a dry run.
1.5.23
* #394: Compact repository segments and free space with new "borgmatic compact" action. Borg 1.2+
only. Also run "compact" by default when no actions are specified, as "prune" in Borg 1.2 no
longer frees up space unless "compact" is run.
* #394: When using the "atime", "bsd_flags", "numeric_owner", or "remote_rate_limit" options,
tailor the flags passed to Borg depending on the Borg version.
* #480, #482: Fix traceback when a YAML validation error occurs.
1.5.22
* #288: Add database dump hook for MongoDB.
* #470: Move mysqldump options to the beginning of the command due to MySQL bug 30994.
* #471: When command-line configuration override produces a parse error, error cleanly instead of
tracebacking.
* #476: Fix unicode error when restoring particular MySQL databases.
* Drop support for Python 3.6, which has been end-of-lifed.
* Add support for Python 3.10.
1.5.21
* #28: Optionally retry failing backups via "retries" and "retry_wait" configuration options.
* #306: Add "list_options" MySQL configuration option for passing additional arguments to MySQL
list command.
* #459: Add support for old version (2.x) of jsonschema library.
1.5.20
* Re-release with correct version without dev0 tag.
1.5.19
* #387: Fix error when configured source directories are not present on the filesystem at the time
of backup. Now, Borg will complain, but the backup will still continue.
* #455: Mention changing borgmatic path in cron documentation.
* Update sample systemd service file with more granular read-only filesystem settings.
* Move Gitea and GitHub hosting from a personal namespace to an organization for better
collaboration with related projects.
* 1k ★s on GitHub!
1.5.18
* #389: Fix "message too long" error when logging to rsyslog.
* #440: Fix traceback that can occur when dumping a database.
1.5.17
* #437: Fix error when configuration file contains "umask" option.
* Remove test dependency on vim and /dev/urandom.
1.5.16
* #379: Suppress console output in sample crontab and systemd service files.
* #407: Fix syslog logging on FreeBSD.
* #430: Fix hang when restoring a PostgreSQL "tar" format database dump.
* Better error messages! Switch the library used for validating configuration files (from pykwalify
to jsonschema).
* Link borgmatic Ansible role from installation documentation:
https://torsion.org/borgmatic/docs/how-to/set-up-backups/#other-ways-to-install
1.5.15
* #419: Document use case of running backups conditionally based on laptop power level:
https://torsion.org/borgmatic/docs/how-to/backup-to-a-removable-drive-or-an-intermittent-server/
* #425: Run arbitrary Borg commands with new "borgmatic borg" action. See the documentation for
more information: https://torsion.org/borgmatic/docs/how-to/run-arbitrary-borg-commands/
1.5.14
* #390: Add link to Hetzner storage offering from the documentation.
* #398: Clarify canonical home of borgmatic in documentation.
* #406: Clarify that spaces in path names should not be backslashed in path names.
* #423: Fix error handling to error loudly when Borg gets killed due to running out of memory!
* Fix build so as not to attempt to build and push documentation for a non-master branch.
* "Fix" build failure with Alpine Edge by switching from Edge to Alpine 3.13.
* Move #borgmatic IRC channel from Freenode to Libera Chat due to Freenode takeover drama.
IRC connection info: https://torsion.org/borgmatic/#issues
1.5.13
* #373: Document that passphrase is used for Borg keyfile encryption, not just repokey encryption.
* #404: Add support for ruamel.yaml 0.17.x YAML parsing library.
* Update systemd service example to return a permission error when a system call isn't permitted
(instead of terminating borgmatic outright).
* Drop support for Python 3.5, which has been end-of-lifed.
* Add support for Python 3.9.
* Update versions of test dependencies (test_requirements.txt and test containers).
* Only support black code formatter on Python 3.8+. New black dependencies make installation
difficult on older versions of Python.
* Replace "improve this documentation" form with link to support and ticket tracker.
1.5.12
* Fix for previous release with incorrect version suffix in setup.py. No other changes.
1.5.11
* #341: Add "temporary_directory" option for changing Borg's temporary directory.
* #352: Lock down systemd security settings in sample systemd service file.
* #355: Fix traceback when a database hook value is null in a configuration file.
* #361: Merge override values when specifying the "--override" flag multiple times. The previous
behavior was to take the value of the last "--override" flag only.
* #367: Fix traceback when upgrading old INI-style configuration with upgrade-borgmatic-config.
* #368: Fix signal forwarding from borgmatic to Borg resulting in recursion traceback.
* #369: Document support for Borg placeholders in repository names.
1.5.10
* #347: Add hooks that run for the "extract" action: "before_extract" and "after_extract".
* #350: Fix traceback when a configuration directory is non-readable due to directory permissions.
* Add documentation navigation links on left side of all documentation pages.
* Clarify documentation on configuration overrides, specifically the portion about list syntax:
http://torsion.org/borgmatic/docs/how-to/make-per-application-backups/#configuration-overrides
* Clarify documentation overview of monitoring options:
http://torsion.org/borgmatic/docs/how-to/monitor-your-backups/
1.5.9
* #300: Add "borgmatic export-tar" action to export an archive to a tar-formatted file or stream.
* #339: Fix for intermittent timing-related test failure of logging function.
* Clarify database documentation about excluding named pipes and character/block devices to prevent
hangs.
* Add documentation on how to make backups redundant with multiple repositories:
https://torsion.org/borgmatic/docs/how-to/make-backups-redundant/
1.5.8
* #336: Fix for traceback when running Cronitor, Cronhub, and PagerDuty monitor hooks.
1.5.7
* #327: Fix broken pass-through of BORG_* environment variables to Borg.
* #328: Fix duplicate logging to Healthchecks and send "after_*" hooks output to Healthchecks.
* #331: Add SSL support to PostgreSQL database configuration.
* #333: Fix for potential data loss (data not getting backed up) when borgmatic omitted configured
source directories in certain situations. Specifically, this occurred when two source directories
on different filesystems were related by parentage (e.g. "/foo" and "/foo/bar/baz") and the
one_file_system option was enabled.
* Update documentation code fragments theme to better match the rest of the page.
* Improve configuration reference documentation readability via more aggressive word-wrapping in
configuration schema descriptions.
1.5.6
* #292: Allow before_backup and similiar hooks to exit with a soft failure without altering the
monitoring status on Healthchecks or other providers. Support this by waiting to ping monitoring
services with a "start" status until after before_* hooks finish. Failures in before_* hooks
still trigger a monitoring "fail" status.
* #316: Fix hang when a stale database dump named pipe from an aborted borgmatic run remains on
disk.
* #323: Fix for certain configuration options like ssh_command impacting Borg invocations for
separate configuration files.
* #324: Add "borgmatic extract --strip-components" flag to remove leading path components when
extracting an archive.
* Tweak comment indentation in generated configuration file for clarity.
* Link to Borgmacator GNOME AppIndicator from monitoring documentation.
1.5.5
* #314: Fix regression in support for PostgreSQL's "directory" dump format. Unlike other dump
formats, the "directory" dump format does not stream directly to/from Borg.
* #315: Fix enabled database hooks to implicitly set one_file_system configuration option to true.
This prevents Borg from reading devices like /dev/zero and hanging.
* #316: Fix hang when streaming a database dump to Borg with implicit duplicate source directories
by deduplicating them first.
* #319: Fix error message when there are no MySQL databases to dump for "all" databases.
* Improve documentation around the installation process. Specifically, making borgmatic commands
runnable via the system PATH and offering a global install option.
1.5.4
* #310: Fix legitimate database dump command errors (exit code 1) not being treated as errors by
borgmatic.
* For database dumps, replace the named pipe on every borgmatic run. This prevent hangs on stale
pipes left over from previous runs.
* Fix error handling to handle more edge cases when executing commands.
1.5.3
* #258: Stream database dumps and restores directly to/from Borg without using any additional
filesystem space. This feature is automatic, and works even on restores from archives made with
previous versions of borgmatic.
* #293: Documentation on macOS launchd permissions issues with work-around for Full Disk Access.
* Remove "borgmatic restore --progress" flag, as it now conflicts with streaming database restores.
1.5.2
* #301: Fix MySQL restore error on "all" database dump by excluding system tables.
* Fix PostgreSQL restore error on "all" database dump by using "psql" for the restore instead of
"pg_restore".
1.5.1
* #289: Tired of looking up the latest successful archive name in order to pass it to borgmatic
actions? Me too. Now you can specify "--archive latest" to all actions that accept an archive
flag.
* #290: Fix the "--stats" and "--files" flags so that they yield output at verbosity 0.
* Reduce the default verbosity of borgmatic logs sent to Healthchecks monitoring hook. Now, it's
warnings and errors only. You can increase the verbosity via the "--monitoring-verbosity" flag.
* Add security policy documentation in SECURITY.md.
1.5.0
* #245: Monitor backups with PagerDuty hook integration. See the documentation for more
information: https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/#pagerduty-hook
* #255: Add per-action hooks: "before_prune", "after_prune", "before_check", and "after_check".
* #274: Add ~/.config/borgmatic.d as another configuration directory default.
* #277: Customize Healthchecks log level via borgmatic "--monitoring-verbosity" flag.
* #280: Change "exclude_if_present" option to support multiple filenames that indicate a directory
should be excluded from backups, rather than just a single filename.
* #284: Backup to a removable drive or intermittent server via "soft failure" feature. See the
documentation for more information:
https://torsion.org/borgmatic/docs/how-to/backup-to-a-removable-drive-or-an-intermittent-server/
* #287: View consistency check progress via "--progress" flag for "check" action.
* For "create" and "prune" actions, no longer list files or show detailed stats at any verbosities
by default. You can opt back in with "--files" or "--stats" flags.
* For "list" and "info" actions, show repository names even at verbosity 0.
1.4.22
* #276, #285: Disable colored output when "--json" flag is used, so as to produce valid JSON ouput.
* After a backup of a database dump in directory format, properly remove the dump directory.
* In "borgmatic --help", don't expand $HOME in listing of default "--config" paths.
1.4.21
* #268: Override particular configuration options from the command-line via "--override" flag. See
the documentation for more information:
https://torsion.org/borgmatic/docs/how-to/make-per-application-backups/#configuration-overrides
* #270: Only trigger "on_error" hooks and monitoring failures for "prune", "create", and "check"
actions, and not for other actions.
* When pruning with verbosity level 1, list pruned and kept archives. Previously, this information
was only shown at verbosity level 2.
1.4.20
* Fix repository probing during "borgmatic init" to respect verbosity flag and remote_path option.
* #249: Update Healthchecks/Cronitor/Cronhub monitoring integrations to fire for "check" and
"prune" actions, not just "create".
1.4.19
* #259: Optionally change the internal database dump path via "borgmatic_source_directory" option
in location configuration section.
* #271: Support piping "borgmatic list" output to grep by logging certain log levels to console
stdout and others to stderr.
* Retain colored output when piping or redirecting in an interactive terminal.
* Add end-to-end tests for database dump and restore. These are run on developer machines with
Docker Compose for approximate parity with continuous integration tests.
1.4.18
* Fix "--repository" flag to accept relative paths.
* Fix "borgmatic umount" so it only runs Borg once instead of once per repository / configuration
file.
* #253: Mount whole repositories via "borgmatic mount" without any "--archive" flag.
* #269: Filter listed paths via "borgmatic list --path" flag.
1.4.17
* #235: Pass extra options directly to particular Borg commands, handy for Borg options that
borgmatic does not yet support natively. Use "extra_borg_options" in the storage configuration
section.
* #266: Attempt to repair any inconsistencies found during a consistency check via
"borgmatic check --repair" flag.
1.4.16
* #256: Fix for "before_backup" hook not triggering an error when the command contains "borg" and
has an exit code of 1.
* #257: Fix for garbled Borg file listing when using "borgmatic create --progress" with
verbosity level 1 or 2.
* #260: Fix for missing Healthchecks monitoring payload or HTTP 500 due to incorrect unicode
encoding.
1.4.15
* Fix for database dump removal incorrectly skipping some database dumps.
* #123: Support for mounting an archive as a FUSE filesystem via "borgmatic mount" action, and
unmounting via "borgmatic umount". See the documentation for more information:
https://torsion.org/borgmatic/docs/how-to/extract-a-backup/#mount-a-filesystem
1.4.14
* Show summary log errors regardless of verbosity level, and log the "summary:" header with a log
level based on the contained summary logs.
1.4.13
* Show full error logs at "--verbosity 0" so you can see command output without upping the
verbosity level.
1.4.12
* #247: With "borgmatic check", consider Borg warnings as errors.
* Dial back the display of inline error logs a bit, so failed command output doesn't appear
multiple times in the logs (well, except for the summary).
1.4.11
* #241: When using the Healthchecks monitoring hook, include borgmatic logs in the payloads for
completion and failure pings.
* With --verbosity level 1 or 2, show error logs both inline when they occur and in the summary
logs at the bottom. With lower verbosity levels, suppress the summary and show error logs when
they occur.
1.4.10
* #246: Fix for "borgmatic restore" showing success and incorrectly extracting archive files, even
when no databases are configured to restore. As this can overwrite files from the archive and
lead to data loss, please upgrade to get the fix before using "borgmatic restore".
* Reopen the file given by "--log-file" flag if an external program rotates the log file while
borgmatic is running.
1.4.9
* #228: Database dump hooks for MySQL/MariaDB, so you can easily dump your databases before backups
run.
* #243: Fix repository does not exist error with "borgmatic extract" when repository is remote.
1.4.8
* Monitor backups with Cronhub hook integration. See the documentation for more information:
https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/#cronhub-hook
* Fix Healthchecks/Cronitor hooks to skip actions when the borgmatic "--dry-run" flag is used.
1.4.7
* #238: In documentation, clarify when Healthchecks/Cronitor hooks fire in relation to other hooks.
* #239: Upgrade your borgmatic configuration to get new options and comments via
"generate-borgmatic-config --source". See the documentation for more information:
https://torsion.org/borgmatic/docs/how-to/upgrade/#upgrading-your-configuration
1.4.6
* Verbosity level "-1" for even quieter output: Errors only (#236).
1.4.5
* Log to file instead of syslog via command-line "--log-file" flag (#233).
1.4.4
* #234: Support for Borg --keep-exclude-tags and --exclude-nodump options.
1.4.3
* Monitor backups with Cronitor hook integration. See the documentation for more information:
https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/#cronitor-hook
1.4.2
* Extract files to a particular directory via "borgmatic extract --destination" flag.
* Rename "borgmatic extract --restore-path" flag to "--path" to reduce confusion with the separate
"borgmatic restore" action. Any uses of "--restore-path" will continue working.
1.4.1
* #229: Restore backed up PostgreSQL databases via "borgmatic restore" action. See the
documentation for more information:
https://torsion.org/borgmatic/docs/how-to/backup-your-databases/
* Documentation on how to develop borgmatic's documentation:
https://torsion.org/borgmatic/docs/how-to/develop-on-borgmatic/#documentation-development
1.4.0
* #225: Database dump hooks for PostgreSQL, so you can easily dump your databases before backups
run.
* #230: Rename "borgmatic list --pattern-from" flag to "--patterns-from" to match Borg.
1.3.26
* #224: Fix "borgmatic list --successful" with a slightly better heuristic for listing successful
(non-checkpoint) archives.
1.3.25
* #223: Dead man's switch to detect when backups start failing silently, implemented via
healthchecks.io hook integration. See the documentation for more information:
https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/#healthchecks-hook
* Documentation on monitoring and alerting options for borgmatic backups:
https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/
* Automatically rewrite links when developing on documentation locally.
1.3.24
* #86: Add "borgmatic list --successful" flag to only list successful (non-checkpoint) archives.
* Add a suggestion form to all documentation pages, so users can submit ideas for improving the
documentation.
* Update documentation link to community Arch Linux borgmatic package.
1.3.23
* #174: More detailed error alerting via runtime context available in "on_error" hook.
1.3.22
* #144: When backups to one of several repositories fails, keep backing up to the other
repositories and report errors afterwards.
1.3.21
* #192: User-defined hooks for global setup or cleanup that run before/after all actions. See the
documentation for more information:
https://torsion.org/borgmatic/docs/how-to/add-preparation-and-cleanup-steps-to-backups/
1.3.20
* #205: More robust sample systemd service: boot delay, network dependency, lowered CPU/IO
priority, etc.
* #221: Fix "borgmatic create --progress" output so that it updates on the console in real-time.
1.3.19
* #219: Fix visibility of "borgmatic prune --stats" output.
1.3.18
* #220: Fix regression of argument parsing for default actions.
1.3.17
* #217: Fix error with "borgmatic check --only" command-line flag with "extract" consistency check.
1.3.16
* #210: Support for Borg check --verify-data flag via borgmatic "data" consistency check.
* #210: Override configured consistency checks via "borgmatic check --only" command-line flag.
* When generating sample configuration with generate-borgmatic-config, add a space after each "#"
comment indicator.
1.3.15
* #208: Fix for traceback when the "checks" option has an empty value.
* #209: Bypass Borg error about a moved repository via "relocated_repo_access_is_ok" option in
borgmatic storage configuration section.
* #213: Reorder arguments passed to Borg to fix duplicate directories when using Borg patterns.
* #214: Fix for hook erroring with exit code 1 not being interpreted as an error.
1.3.14
* #204: Do not treat Borg warnings (exit code 1) as failures.
* When validating configuration files, require strings instead of allowing any scalar type.
1.3.13
* #199: Add note to documentation about using spaces instead of tabs for indentation, as YAML does
not allow tabs.
* #203: Fix compatibility with ruamel.yaml 0.16.x.
* If a "prefix" option in borgmatic's configuration has an empty value (blank or ""), then disable
default prefix.
1.3.12
* Only log to syslog when run from a non-interactive console (e.g. a cron job).
* Remove unicode byte order mark from syslog output so it doesn't show up as a literal in rsyslog
output. See discussion on #197.
1.3.11
* #193: Pass through several "borg list" and "borg info" flags like --short, --format, --sort-by,
--first, --last, etc. via borgmatic command-line flags.
* Add borgmatic info --repository and --archive command-line flags to display info for individual
repositories or archives.
* Support for Borg --noatime, --noctime, and --nobirthtime flags via corresponding options in
borgmatic configuration location section.
1.3.10
* #198: Fix for Borg create error output not showing up at borgmatic verbosity level zero.
1.3.9
* #195: Switch to command-line actions as more traditional sub-commands, e.g. "borgmatic create",
"borgmatic prune", etc. However, the classic dashed options like "--create" still work!
1.3.8
* #191: Disable console color via "color" option in borgmatic configuration output section.
1.3.7
* #196: Fix for unclear error message for invalid YAML merge include.
* #197: Don't color syslog output.
* Change default syslog verbosity to show errors only.
1.3.6
* #53: Log to syslog in addition to existing console logging. Add --syslog-verbosity flag to
customize the log level. See the documentation for more information:
https://torsion.org/borgmatic/docs/how-to/inspect-your-backups/
* #178: Look for .yml configuration file extension in addition to .yaml.
* #189: Set umask used when executing hooks via "umask" option in borgmatic hooks section.
* Remove Python cache files before each Tox run.
* Add #borgmatic Freenode IRC channel to documentation.
* Add Borg/borgmatic hosting providers section to documentation.
* Add files for building documentation into a Docker image for web serving.
* Upgrade project build server from Drone 0.8 to 1.1.
* Build borgmatic documentation during continuous integration.
* We're nearly at 500 ★s on GitHub. We can do this!
1.3.5
* #153: Support for various Borg directory environment variables (BORG_CONFIG_DIR, BORG_CACHE_DIR,
etc.) via options in borgmatic's storage configuration.
* #177: Fix for regression with missing verbose log entries.
1.3.4
* Part of #125: Color borgmatic (but not Borg) output when using an interactive terminal.
* #166: Run tests for all installed versions of Python.
* #168: Update README with continuous integration badge.
* #169: Automatically sort Python imports in code.
* Document installing borgmatic with pip install --user instead of a system Python install.
* Get more reproducible builds by pinning the versions of pip and tox used to run tests.
* Factor out build/test configuration from tox.ini file.
1.3.3
* Add validate-borgmatic-config command, useful for validating borgmatic config generated by
configuration management or even edited by hand.
1.3.2
* #160: Fix for hooks executing when using --dry-run. Now hooks are skipped during a dry run.
1.3.1
* #155: Fix for invalid JSON output when using multiple borgmatic configuration files.
* #157: Fix for seemingly random filename ordering when running through a directory of
configuration files.
* Fix for empty JSON output when using --create --json.
* Now capturing Borg output only when --json flag is used. Previously, borgmatic delayed Borg
output even without the --json flag.
1.3.0
* #148: Configuration file includes and merging via "!include" tag to support reuse of common
options across configuration files.
1.2.18
* #147: Support for Borg create/extract --numeric-owner flag via "numeric_owner" option in
borgmatic's location section.
1.2.17
* #140: List the files within an archive via --list --archive option.
1.2.16
* #119: Include a sample borgmatic configuration file in the documentation.
* #123: Support for Borg archive restoration via borgmatic --extract command-line flag.
* Refactor documentation into multiple separate pages for clarity and findability.
* Organize options within command-line help into logical groups.
* Exclude tests from distribution packages.
1.2.15
* #127: Remove date echo from schema example, as it's not a substitute for real logging.
* #132: Leave exclude_patterns glob expansion to Borg, since doing it in borgmatic leads to
confusing behavior.
* #136: Handle and format validation errors raised during argument parsing.
* #138: Allow use of --stats flag when --create or --prune flags are implied.
1.2.14
* #103: When generating sample configuration with generate-borgmatic-config, document the defaults
for each option.
* #116: When running multiple configuration files, attempt all configuration files even if one of
them errors. Log a summary of results at the end.
* Add borgmatic --version command-line flag to get the current installed version number.
1.2.13
* #100: Support for --stats command-line flag independent of --verbosity.
* #117: With borgmatic --init command-line flag, proceed without erroring if a repository already
exists.
1.2.12
* #110: Support for Borg repository initialization via borgmatic --init command-line flag.
* #111: Update Borg create --filter values so a dry run lists files to back up.
* #113: Update README with link to a new/forked Docker image.
* Prevent deprecated --excludes command-line option from being used.
* Refactor README a bit to flow better for first-time users.
* Update README with a few additional borgmatic packages (Debian and Ubuntu).
1.2.11
* #108: Support for Borg create --progress via borgmatic command-line flag.
1.2.10
* #105: Support for Borg --chunker-params create option via "chunker_params" option in borgmatic's
storage section.
1.2.9
* #102: Fix for syntax error that occurred in Python 3.5 and below.
* Make automated tests support running in Python 3.5.
1.2.8
* #73: Enable consistency checks for only certain repositories via "check_repositories" option in
borgmatic's consistency configuration. Handy for large repositories that take forever to check.
* Include link to issue tracker within various command output.
* Run continuous integration tests on a matrix of Python and Borg versions.
1.2.7
* #98: Support for Borg --keep-secondly prune option.
* Use Black code formatter and Flake8 code checker as part of running automated tests.
* Add an end-to-end automated test that actually integrates with Borg.
* Set up continuous integration for borgmatic automated tests on projects.evoworx.org.
1.2.6
* Fix generated configuration to also include a "keep_daily" value so pruning works out of the
box.
1.2.5
* #57: When generating sample configuration with generate-borgmatic-config, comment out all
optional configuration so as to streamline the initial configuration process.
@ -69,7 +742,7 @@
* #49: Support for Borg experimental --patterns-from and --patterns options for specifying mixed
includes/excludes.
* Moved issue tracker from Taiga to integrated Gitea tracker at
https://projects.torsion.org/witten/borgmatic/issues
https://projects.torsion.org/borgmatic-collective/borgmatic/issues
1.1.12
* #46: Declare dependency on pykwalify 1.6 or above, as older versions yield "Unknown key: version"

504
README.md
View file

@ -1,470 +1,148 @@
---
title: borgmatic
permalink: borgmatic/index.html
permalink: index.html
---
## Overview
<img src="https://projects.torsion.org/witten/borgmatic/raw/branch/master/static/borgmatic.png" width="150px" style="float: right; padding-left: 1em;">
## It's your data. Keep it that way.
borgmatic is a simple Python wrapper script for the
[Borg](https://www.borgbackup.org/) backup software that initiates a backup,
prunes any old backups according to a retention policy, and validates backups
for consistency. The script supports specifying your settings in a declarative
configuration file rather than having to put them all on the command-line, and
handles common errors.
<img src="docs/static/borgmatic.png" alt="borgmatic logo" width="150px" style="float: right; padding-left: 1em;">
Here's an example config file:
borgmatic is simple, configuration-driven backup software for servers and
workstations. Protect your files with client-side encryption. Backup your
databases too. Monitor it all with integrated third-party services.
The canonical home of borgmatic is at <a href="https://torsion.org/borgmatic">https://torsion.org/borgmatic</a>.
Here's an example configuration file:
```yaml
location:
# List of source directories to backup. Globs are expanded.
# List of source directories to backup.
source_directories:
- /home
- /etc
- /var/log/syslog*
# Paths to local or remote repositories.
# Paths of local or remote repositories to backup to.
repositories:
- user@backupserver:sourcehostname.borg
# Any paths matching these patterns are excluded from backups.
exclude_patterns:
- /home/*/.cache
- ssh://1234@usw-s001.rsync.net/./backups.borg
- ssh://k8pDxu32@k8pDxu32.repo.borgbase.com/./repo
- /var/lib/backups/local.borg
retention:
# Retention policy for how many backups to keep in each category.
# Retention policy for how many backups to keep.
keep_daily: 7
keep_weekly: 4
keep_monthly: 6
consistency:
# List of consistency checks to run: "repository", "archives", or both.
# List of checks to run to validate your backups.
checks:
- repository
- archives
- name: repository
- name: archives
frequency: 2 weeks
hooks:
# Custom preparation scripts to run.
before_backup:
- prepare-for-backup.sh
# Databases to dump and include in backups.
postgresql_databases:
- name: users
# Third-party services to notify you if backups aren't happening.
healthchecks: https://hc-ping.com/be067061-cf96-4412-8eae-62b0c50d6a8c
```
borgmatic is hosted at <https://torsion.org/borgmatic> with [source code
available](https://projects.torsion.org/witten/borgmatic). It's also mirrored
on [GitHub](https://github.com/witten/borgmatic) for convenience.
Want to see borgmatic in action? Check out the <a
href="https://asciinema.org/a/203761?autoplay=1" target="_blank">screencast</a>.
<a href="https://asciinema.org/a/164143" target="_blank"><img src="https://asciinema.org/a/164143.png" width="100%" /></a>
<a href="https://asciinema.org/a/203761?autoplay=1" target="_blank"><img src="https://asciinema.org/a/203761.png" width="480"></a>
borgmatic is powered by [Borg Backup](https://www.borgbackup.org/).
## Installation
## Integrations
To get up and running, follow the [Borg Quick
Start](https://borgbackup.readthedocs.org/en/latest/quickstart.html) to create
a repository on a local or remote host. Note that if you plan to run borgmatic
on a schedule with cron, and you encrypt your Borg repository with a
passphrase instead of a key file, you'll either need to set the borgmatic
`encryption_passphrase` configuration variable or set the `BORG_PASSPHRASE`
environment variable. See the [repository encryption
section](https://borgbackup.readthedocs.io/en/latest/quickstart.html#repository-encryption)
of the Quick Start for more info.
<a href="https://www.postgresql.org/"><img src="docs/static/postgresql.png" alt="PostgreSQL" height="60px" style="margin-bottom:20px;"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="https://www.mysql.com/"><img src="docs/static/mysql.png" alt="MySQL" height="60px" style="margin-bottom:20px;"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="https://mariadb.com/"><img src="docs/static/mariadb.png" alt="MariaDB" height="60px" style="margin-bottom:20px;"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="https://www.mongodb.com/"><img src="docs/static/mongodb.png" alt="MongoDB" height="60px" style="margin-bottom:20px;"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="https://healthchecks.io/"><img src="docs/static/healthchecks.png" alt="Healthchecks" height="60px" style="margin-bottom:20px;"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="https://cronitor.io/"><img src="docs/static/cronitor.png" alt="Cronitor" height="60px" style="margin-bottom:20px;"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="https://cronhub.io/"><img src="docs/static/cronhub.png" alt="Cronhub" height="60px" style="margin-bottom:20px;"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="https://www.pagerduty.com/"><img src="docs/static/pagerduty.png" alt="PagerDuty" height="60px" style="margin-bottom:20px;"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="https://ntfy.sh/"><img src="docs/static/ntfy.png" alt="ntfy" height="60px" style="margin-bottom:20px;"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="https://www.borgbase.com/?utm_source=borgmatic"><img src="docs/static/borgbase.png" alt="BorgBase" height="60px" style="margin-bottom:20px;"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Alternatively, the passphrase can be specified programatically by setting
either the borgmatic `encryption_passcommand` configuration variable or the
`BORG_PASSCOMMAND` environment variable. See the [Borg Security
FAQ](http://borgbackup.readthedocs.io/en/stable/faq.html#how-can-i-specify-the-encryption-passphrase-programmatically)
for more info.
If the repository is on a remote host, make sure that your local root user has
key-based ssh access to the desired user account on the remote host.
## Getting started
To install borgmatic, run the following command to download and install it:
Your first step is to [install and configure
borgmatic](https://torsion.org/borgmatic/docs/how-to/set-up-backups/).
```bash
sudo pip3 install --upgrade borgmatic
```
For additional documentation, check out the links above for <a
href="https://torsion.org/borgmatic/#documentation">borgmatic how-to and
reference guides</a>.
Note that your pip binary may have a different name than "pip3". Make sure
you're using Python 3, as borgmatic does not support Python 2.
### Other ways to install
## Hosting providers
* [A borgmatic Docker image](https://hub.docker.com/r/b3vis/borgmatic/) based
on Alpine Linux.
* [Another borgmatic Docker image](https://hub.docker.com/r/coaxial/borgmatic/) based
on Alpine Linux, updated automatically whenever the Alpine image updates.
* [A borgmatic package for
Fedora](https://bodhi.fedoraproject.org/updates/?search=borgmatic).
* [A borgmatic package for Arch
Linux](https://aur.archlinux.org/packages/borgmatic/).
* [A borgmatic package for OpenBSD](http://ports.su/sysutils/borgmatic).
<br><br>
Need somewhere to store your encrypted off-site backups? The following hosting
providers include specific support for Borg/borgmatic—and fund borgmatic
development and hosting when you use these links to sign up. (These are
referral links, but without any tracking scripts or cookies.)
## Configuration
After you install borgmatic, generate a sample configuration file:
```bash
sudo generate-borgmatic-config
```
If that command is not found, then it may be installed in a location that's
not in your system `PATH`. Try looking in `/usr/local/bin/`.
This generates a sample configuration file at /etc/borgmatic/config.yaml (by
default). You should edit the file to suit your needs, as the values are just
representative. All fields are optional except where indicated, so feel free
to ignore anything you don't need.
You can also have a look at the [full configuration
schema](https://projects.torsion.org/witten/borgmatic/src/master/borgmatic/config/schema.yaml)
for the authoritative set of all configuration options. This is handy if
borgmatic has added new options since you originally created your
configuration file.
### Multiple configuration files
A more advanced usage is to create multiple separate configuration files and
place each one in an /etc/borgmatic.d directory. For instance:
```bash
sudo mkdir /etc/borgmatic.d
sudo generate-borgmatic-config --destination /etc/borgmatic.d/app1.yaml
sudo generate-borgmatic-config --destination /etc/borgmatic.d/app2.yaml
```
With this approach, you can have entirely different backup policies for
different applications on your system. For instance, you may want one backup
configuration for your database data directory, and a different configuration
for your user home directories.
When you set up multiple configuration files like this, borgmatic will run
each one in turn from a single borgmatic invocation. This includes, by
default, the traditional /etc/borgmatic/config.yaml as well.
And if you need even more customizability, you can specify alternate
configuration paths on the command-line with borgmatic's `--config` option.
See `borgmatic --help` for more information.
### Hooks
If you find yourself performing prepraration tasks before your backup runs, or
cleanup work afterwards, borgmatic hooks may be of interest. They're simply
shell commands that borgmatic executes for you at various points, and they're
configured in the `hooks` section of your configuration file.
For instance, you can specify `before_backup` hooks to dump a database to file
before backing it up, and specify `after_backup` hooks to delete the temporary
file afterwards.
borgmatic hooks run once per configuration file. `before_backup` hooks run
prior to backups of all repositories. `after_backup` hooks run afterwards, but
not if an error occurs in a previous hook or in the backups themselves. And
borgmatic runs `on_error` hooks if an error occurs.
An important security note about hooks: borgmatic executes all hook commands
with the user permissions of borgmatic itself. So to prevent potential shell
injection or privilege escalation, do not forget to set secure permissions
(`chmod 0700`) on borgmatic configuration files and scripts invoked by hooks.
See the sample generated configuration file mentioned above for specifics
about hook configuration syntax.
## Upgrading
In general, all you should need to do to upgrade borgmatic is run the
following:
```bash
sudo pip3 install --upgrade borgmatic
```
However, see below about special cases.
### Upgrading from borgmatic 1.0.x
borgmatic changed its configuration file format in version 1.1.0 from
INI-style to YAML. This better supports validation, and has a more natural way
to express lists of values. To upgrade your existing configuration, first
upgrade to the new version of borgmatic.
As of version 1.1.0, borgmatic no longer supports Python 2. If you were
already running borgmatic with Python 3, then you can simply upgrade borgmatic
in-place:
```bash
sudo pip3 install --upgrade borgmatic
```
But if you were running borgmatic with Python 2, uninstall and reinstall instead:
```bash
sudo pip uninstall borgmatic
sudo pip3 install borgmatic
```
The pip binary names for different versions of Python can differ, so the above
commands may need some tweaking to work on your machine.
Once borgmatic is upgraded, run:
```bash
sudo upgrade-borgmatic-config
```
That will generate a new YAML configuration file at /etc/borgmatic/config.yaml
(by default) using the values from both your existing configuration and
excludes files. The new version of borgmatic will consume the YAML
configuration file instead of the old one.
### Upgrading from atticmatic
You can ignore this section if you're not an atticmatic user (the former name
of borgmatic).
borgmatic only supports Borg now and no longer supports Attic. So if you're
an Attic user, consider switching to Borg. See the [Borg upgrade
command](https://borgbackup.readthedocs.io/en/stable/usage.html#borg-upgrade)
for more information. Then, follow the instructions above about setting up
your borgmatic configuration files.
If you were already using Borg with atticmatic, then you can easily upgrade
from atticmatic to borgmatic. Simply run the following commands:
```bash
sudo pip3 uninstall atticmatic
sudo pip3 install borgmatic
```
That's it! borgmatic will continue using your /etc/borgmatic configuration
files.
## Usage
You can run borgmatic and start a backup simply by invoking it without
arguments:
```bash
borgmatic
```
This will also prune any old backups as per the configured retention policy,
and check backups for consistency problems due to things like file damage.
If you'd like to see the available command-line arguments, view the help:
```bash
borgmatic --help
```
Note that borgmatic prunes archives *before* creating an archive, so as to
free up space for archiving. This means that when a borgmatic run finishes,
there may still be prune-able archives. Not to worry, as they will get cleaned
up at the start of the next run.
### Verbosity
By default, the backup will proceed silently except in the case of errors. But
if you'd like to to get additional information about the progress of the
backup as it proceeds, use the verbosity option:
```bash
borgmatic --verbosity 1
```
Or, for even more progress spew:
```bash
borgmatic --verbosity 2
```
### À la carte
If you want to run borgmatic with only pruning, creating, or checking enabled,
the following optional flags are available:
```bash
borgmatic --prune
borgmatic --create
borgmatic --check
```
You can run with only one of these flags provided, or you can mix and match
any number of them. This supports use cases like running consistency checks
from a different cron job with a different frequency, or running pruning with
a different verbosity level.
Additionally, borgmatic provides convenient flags for Borg's
[list](https://borgbackup.readthedocs.io/en/stable/usage/list.html) and
[info](https://borgbackup.readthedocs.io/en/stable/usage/info.html)
functionality:
```bash
borgmatic --list
borgmatic --info
```
You can include an optional `--json` flag with `--create`, `--list`, or
`--info` to get the output formatted as JSON.
## Autopilot
If you want to run borgmatic automatically, say once a day, the you can
configure a job runner to invoke it periodically.
### cron
If you're using cron, download the [sample cron
file](https://projects.torsion.org/witten/borgmatic/src/master/sample/cron/borgmatic).
Then, from the directory where you downloaded it:
```bash
sudo mv borgmatic /etc/cron.d/borgmatic
sudo chmod +x /etc/cron.d/borgmatic
```
You can modify the cron file if you'd like to run borgmatic more or less frequently.
### systemd
If you're using systemd instead of cron to run jobs, download the [sample
systemd service
file](https://projects.torsion.org/witten/borgmatic/src/master/sample/systemd/borgmatic.service)
and the [sample systemd timer
file](https://projects.torsion.org/witten/borgmatic/src/master/sample/systemd/borgmatic.timer).
Then, from the directory where you downloaded them:
```bash
sudo mv borgmatic.service borgmatic.timer /etc/systemd/system/
sudo systemctl enable borgmatic.timer
sudo systemctl start borgmatic.timer
```
Feel free to modify the timer file based on how frequently you'd like
borgmatic to run.
<ul>
<li class="referral"><a href="https://www.borgbase.com/?utm_source=borgmatic">BorgBase</a>: Borg hosting service with support for monitoring, 2FA, and append-only repos</li>
</ul>
Additionally, [rsync.net](https://www.rsync.net/products/borg.html) and
[Hetzner](https://www.hetzner.com/storage/storage-box) have compatible storage
offerings, but do not currently fund borgmatic development or hosting.
## Support and contributing
### Issues
You've got issues? Or an idea for a feature enhancement? We've got an [issue
tracker](https://projects.torsion.org/witten/borgmatic/issues). In order to
tracker](https://projects.torsion.org/borgmatic-collective/borgmatic/issues). In order to
create a new issue or comment on an issue, you'll need to [login
first](https://projects.torsion.org/user/login). Note that you can login with
an existing GitHub account if you prefer.
Other questions or comments? Contact <mailto:witten@torsion.org>.
If you'd like to chat with borgmatic developers or users, head on over to the
`#borgmatic` IRC channel on Libera Chat, either via <a
href="https://web.libera.chat/#borgmatic">web chat</a> or a
native <a href="ircs://irc.libera.chat:6697">IRC client</a>. If you
don't get a response right away, please hang around a while—or file a ticket
instead.
Also see the [security
policy](https://torsion.org/borgmatic/docs/security-policy/) for any security
issues.
Other questions or comments? Contact
[witten@torsion.org](mailto:witten@torsion.org).
### Contributing
borgmatic [source code is
available](https://projects.torsion.org/borgmatic-collective/borgmatic) and is also mirrored
on [GitHub](https://github.com/borgmatic-collective/borgmatic) for convenience.
borgmatic is licensed under the GNU General Public License version 3 or any
later version.
If you'd like to contribute to borgmatic development, please feel free to
submit a [Pull Request](https://projects.torsion.org/witten/borgmatic/pulls)
or open an [issue](https://projects.torsion.org/witten/borgmatic/issues) first
submit a [Pull Request](https://projects.torsion.org/borgmatic-collective/borgmatic/pulls)
or open an [issue](https://projects.torsion.org/borgmatic-collective/borgmatic/issues) first
to discuss your idea. We also accept Pull Requests on GitHub, if that's more
your thing. In general, contributions are very welcome. We don't bite!
Also, please check out the [borgmatic development
how-to](https://torsion.org/borgmatic/docs/how-to/develop-on-borgmatic/) for
info on cloning source code, running tests, etc.
### Code style
<a href="https://build.torsion.org/borgmatic-collective/borgmatic" alt="build status">![Build Status](https://build.torsion.org/api/badges/borgmatic-collective/borgmatic/status.svg?ref=refs/heads/master)</a>
Start with [PEP 8](https://www.python.org/dev/peps/pep-0008/). But then, apply
the following deviations from it:
* For strings, prefer single quotes over double quotes.
* Limit all lines to a maximum of 100 characters.
* Use trailing commas within multiline values or argument lists.
* For multiline constructs, put opening and closing delimeters on lines
separate from their contents.
* Within multiline constructs, use standard four-space indentation. Don't align
indentation with an opening delimeter.
### Development
To get set up to hack on borgmatic, first clone master via HTTPS or SSH:
```bash
git clone https://projects.torsion.org/witten/borgmatic.git
```
Or:
```bash
git clone ssh://git@projects.torsion.org:3022/witten/borgmatic.git
```
Then, install borgmatic
"[editable](https://pip.pypa.io/en/stable/reference/pip_install/#editable-installs)"
so that you can easily run borgmatic commands while you're hacking on them to
make sure your changes work.
```bash
cd borgmatic/
pip3 install --editable --user .
```
Note that this will typically install the borgmatic commands into
`~/.local/bin`, which may or may not be on your PATH. There are other ways to
install borgmatic editable as well, for instance into the system Python
install (so without `--user`, as root), or even into a
[virtualenv](https://virtualenv.pypa.io/en/stable/). How or where you install
borgmatic is up to you, but generally an editable install makes development
and testing easier.
### Running tests
Assuming you've cloned the borgmatic source code as described above, and
you're in the `borgmatic/` working copy, install tox, which is used for
setting up testing environments:
```bash
sudo pip3 install tox
```
Finally, to actually run tests, run:
```bash
cd borgmatic
tox
```
## Troubleshooting
### Broken pipe with remote repository
When running borgmatic on a large remote repository, you may receive errors
like the following, particularly while "borg check" is validating backups for
consistency:
```text
Write failed: Broken pipe
borg: Error: Connection closed by remote host
```
This error can be caused by an ssh timeout, which you can rectify by adding
the following to the ~/.ssh/config file on the client:
```text
Host *
ServerAliveInterval 120
```
This should make the client keep the connection alive while validating
backups.
### libyaml compilation errors
borgmatic depends on a Python YAML library (ruamel.yaml) that will optionally
use a C YAML library (libyaml) if present. But if it's not installed, then
when installing or upgrading borgmatic, you may see errors about compiling the
YAML library. If so, not to worry. borgmatic should install and function
correctly even without the C YAML library. And borgmatic won't be any faster
with the C library present, so you don't need to go out of your way to install
it.

18
SECURITY.md Normal file
View file

@ -0,0 +1,18 @@
---
title: Security policy
permalink: security-policy/index.html
---
## Supported versions
While we want to hear about security vulnerabilities in all versions of
borgmatic, security fixes are only made to the most recently released version.
It's simply not practical for our small volunteer effort to maintain multiple
release branches and put out separate security patches for each.
## Reporting a vulnerability
If you find a security vulnerability, please [file a
ticket](https://torsion.org/borgmatic/#issues) or [send email
directly](mailto:witten@torsion.org) as appropriate. You should expect to hear
back within a few days at most and generally sooner.

66
borgmatic/borg/borg.py Normal file
View file

@ -0,0 +1,66 @@
import logging
from borgmatic.borg import environment, flags
from borgmatic.execute import execute_command
logger = logging.getLogger(__name__)
REPOSITORYLESS_BORG_COMMANDS = {'serve', None}
BORG_SUBCOMMANDS_WITH_SUBCOMMANDS = {'key', 'debug'}
BORG_SUBCOMMANDS_WITHOUT_REPOSITORY = (('debug', 'info'), ('debug', 'convert-profile'), ())
def run_arbitrary_borg(
repository,
storage_config,
local_borg_version,
options,
archive=None,
local_path='borg',
remote_path=None,
):
'''
Given a local or remote repository path, a storage config dict, the local Borg version, a
sequence of arbitrary command-line Borg options, and an optional archive name, run an arbitrary
Borg command on the given repository/archive.
'''
lock_wait = storage_config.get('lock_wait', None)
try:
options = options[1:] if options[0] == '--' else options
# Borg commands like "key" have a sub-command ("export", etc.) that must follow it.
command_options_start_index = 2 if options[0] in BORG_SUBCOMMANDS_WITH_SUBCOMMANDS else 1
borg_command = tuple(options[:command_options_start_index])
command_options = tuple(options[command_options_start_index:])
except IndexError:
borg_command = ()
command_options = ()
if borg_command in BORG_SUBCOMMANDS_WITHOUT_REPOSITORY:
repository_archive_flags = ()
elif archive:
repository_archive_flags = flags.make_repository_archive_flags(
repository, archive, local_borg_version
)
else:
repository_archive_flags = flags.make_repository_flags(repository, local_borg_version)
full_command = (
(local_path,)
+ borg_command
+ repository_archive_flags
+ command_options
+ (('--info',) if logger.getEffectiveLevel() == logging.INFO else ())
+ (('--debug', '--show-rc') if logger.isEnabledFor(logging.DEBUG) else ())
+ flags.make_flags('remote-path', remote_path)
+ flags.make_flags('lock-wait', lock_wait)
)
return execute_command(
full_command,
output_log_level=logging.WARNING,
borg_local_path=local_path,
extra_environment=environment.make_environment(storage_config),
)

View file

@ -1,40 +1,152 @@
import argparse
import datetime
import json
import logging
import os
import subprocess
import pathlib
from borgmatic.borg import extract
from borgmatic.borg import environment, extract, flags, rinfo, state
from borgmatic.execute import DO_NOT_CAPTURE, execute_command
DEFAULT_CHECKS = ('repository', 'archives')
DEFAULT_CHECKS = (
{'name': 'repository', 'frequency': '1 month'},
{'name': 'archives', 'frequency': '1 month'},
)
DEFAULT_PREFIX = '{hostname}-'
logger = logging.getLogger(__name__)
def _parse_checks(consistency_config):
def parse_checks(consistency_config, only_checks=None):
'''
Given a consistency config with a "checks" list, transform it to a tuple of named checks to run.
Given a consistency config with a "checks" sequence of dicts and an optional list of override
checks, return a tuple of named checks to run.
For example, given a retention config of:
{'checks': ['repository', 'archives']}
{'checks': ({'name': 'repository'}, {'name': 'archives'})}
This will be returned as:
('repository', 'archives')
If no "checks" option is present, return the DEFAULT_CHECKS. If the checks value is the string
"disabled", return an empty tuple, meaning that no checks should be run.
If no "checks" option is present in the config, return the DEFAULT_CHECKS. If a checks value
has a name of "disabled", return an empty tuple, meaning that no checks should be run.
'''
checks = consistency_config.get('checks', [])
if checks == ['disabled']:
checks = only_checks or tuple(
check_config['name']
for check_config in (consistency_config.get('checks', None) or DEFAULT_CHECKS)
)
checks = tuple(check.lower() for check in checks)
if 'disabled' in checks:
if len(checks) > 1:
logger.warning(
'Multiple checks are configured, but one of them is "disabled"; not running any checks'
)
return ()
return tuple(check for check in checks if check.lower() not in ('disabled', '')) or DEFAULT_CHECKS
return checks
def _make_check_flags(checks, check_last=None, prefix=None):
def parse_frequency(frequency):
'''
Given a frequency string with a number and a unit of time, return a corresponding
datetime.timedelta instance or None if the frequency is None or "always".
For instance, given "3 weeks", return datetime.timedelta(weeks=3)
Raise ValueError if the given frequency cannot be parsed.
'''
if not frequency:
return None
frequency = frequency.strip().lower()
if frequency == 'always':
return None
try:
number, time_unit = frequency.split(' ')
number = int(number)
except ValueError:
raise ValueError(f"Could not parse consistency check frequency '{frequency}'")
if not time_unit.endswith('s'):
time_unit += 's'
if time_unit == 'months':
number *= 30
time_unit = 'days'
elif time_unit == 'years':
number *= 365
time_unit = 'days'
try:
return datetime.timedelta(**{time_unit: number})
except TypeError:
raise ValueError(f"Could not parse consistency check frequency '{frequency}'")
def filter_checks_on_frequency(
location_config, consistency_config, borg_repository_id, checks, force
):
'''
Given a location config, a consistency config with a "checks" sequence of dicts, a Borg
repository ID, a sequence of checks, and whether to force checks to run, filter down those
checks based on the configured "frequency" for each check as compared to its check time file.
In other words, a check whose check time file's timestamp is too new (based on the configured
frequency) will get cut from the returned sequence of checks. Example:
consistency_config = {
'checks': [
{
'name': 'archives',
'frequency': '2 weeks',
},
]
}
When this function is called with that consistency_config and "archives" in checks, "archives"
will get filtered out of the returned result if its check time file is newer than 2 weeks old,
indicating that it's not yet time to run that check again.
Raise ValueError if a frequency cannot be parsed.
'''
filtered_checks = list(checks)
if force:
return tuple(filtered_checks)
for check_config in consistency_config.get('checks', DEFAULT_CHECKS):
check = check_config['name']
if checks and check not in checks:
continue
frequency_delta = parse_frequency(check_config.get('frequency'))
if not frequency_delta:
continue
check_time = read_check_time(
make_check_time_path(location_config, borg_repository_id, check)
)
if not check_time:
continue
# If we've not yet reached the time when the frequency dictates we're ready for another
# check, skip this check.
if datetime.datetime.now() < check_time + frequency_delta:
remaining = check_time + frequency_delta - datetime.datetime.now()
logger.info(
f"Skipping {check} check due to configured frequency; {remaining} until next check"
)
filtered_checks.remove(check)
return tuple(filtered_checks)
def make_check_flags(checks, check_last=None, prefix=None):
'''
Given a parsed sequence of checks, transform it into tuple of command-line flags.
@ -47,47 +159,133 @@ def _make_check_flags(checks, check_last=None, prefix=None):
('--repository-only',)
However, if both "repository" and "archives" are in checks, then omit them from the returned
flags because Borg does both checks by default.
flags because Borg does both checks by default. If "data" is in checks, that implies "archives".
Additionally, if a check_last value is given and "archives" is in checks, then include a
"--last" flag. And if a prefix value is given and "archives" is in checks, then include a
"--prefix" flag.
"--glob-archives" flag.
'''
if 'archives' in checks:
last_flags = ('--last', str(check_last)) if check_last else ()
prefix_flags = ('--prefix', prefix) if prefix else ('--prefix', DEFAULT_PREFIX)
glob_archives_flags = ('--glob-archives', f'{prefix}*') if prefix else ()
else:
last_flags = ()
prefix_flags = ()
glob_archives_flags = ()
if check_last:
logger.warning('Ignoring check_last option, as "archives" is not in consistency checks.')
logger.info('Ignoring check_last option, as "archives" is not in consistency checks')
if prefix:
logger.warning('Ignoring consistency prefix option, as "archives" is not in consistency checks.')
if set(DEFAULT_CHECKS).issubset(set(checks)):
return last_flags + prefix_flags
logger.info(
'Ignoring consistency prefix option, as "archives" is not in consistency checks'
)
return tuple(
'--{}-only'.format(check) for check in checks
if check in DEFAULT_CHECKS
) + last_flags + prefix_flags
if 'data' in checks:
data_flags = ('--verify-data',)
checks += ('archives',)
else:
data_flags = ()
common_flags = last_flags + glob_archives_flags + data_flags
if {'repository', 'archives'}.issubset(set(checks)):
return common_flags
return (
tuple('--{}-only'.format(check) for check in checks if check in ('repository', 'archives'))
+ common_flags
)
def check_archives(repository, storage_config, consistency_config, local_path='borg', remote_path=None):
def make_check_time_path(location_config, borg_repository_id, check_type):
'''
Given a local or remote repository path, a storage config dict, a consistency config dict,
and a local/remote commands to run, check the contained Borg archives for consistency.
Given a location configuration dict, a Borg repository ID, and the name of a check type
("repository", "archives", etc.), return a path for recording that check's time (the time of
that check last occurring).
'''
return os.path.join(
os.path.expanduser(
location_config.get(
'borgmatic_source_directory', state.DEFAULT_BORGMATIC_SOURCE_DIRECTORY
)
),
'checks',
borg_repository_id,
check_type,
)
def write_check_time(path): # pragma: no cover
'''
Record a check time of now as the modification time of the given path.
'''
logger.debug(f'Writing check time at {path}')
os.makedirs(os.path.dirname(path), mode=0o700, exist_ok=True)
pathlib.Path(path, mode=0o600).touch()
def read_check_time(path):
'''
Return the check time based on the modification time of the given path. Return None if the path
doesn't exist.
'''
logger.debug(f'Reading check time from {path}')
try:
return datetime.datetime.fromtimestamp(os.stat(path).st_mtime)
except FileNotFoundError:
return None
def check_archives(
repository,
location_config,
storage_config,
consistency_config,
local_borg_version,
local_path='borg',
remote_path=None,
progress=None,
repair=None,
only_checks=None,
force=None,
):
'''
Given a local or remote repository path, a storage config dict, a consistency config dict,
local/remote commands to run, whether to include progress information, whether to attempt a
repair, and an optional list of checks to use instead of configured checks, check the contained
Borg archives for consistency.
If there are no consistency checks to run, skip running them.
Raises ValueError if the Borg repository ID cannot be determined.
'''
checks = _parse_checks(consistency_config)
try:
borg_repository_id = json.loads(
rinfo.display_repository_info(
repository,
storage_config,
local_borg_version,
argparse.Namespace(json=True),
local_path,
remote_path,
)
)['repository']['id']
except (json.JSONDecodeError, KeyError):
raise ValueError(f'Cannot determine Borg repository ID for {repository}')
checks = filter_checks_on_frequency(
location_config,
consistency_config,
borg_repository_id,
parse_checks(consistency_config, only_checks),
force,
)
check_last = consistency_config.get('check_last', None)
lock_wait = None
extra_borg_options = storage_config.get('extra_borg_options', {}).get('check', '')
if set(checks).intersection(set(DEFAULT_CHECKS)):
remote_path_flags = ('--remote-path', remote_path) if remote_path else ()
if set(checks).intersection({'repository', 'archives', 'data'}):
lock_wait = storage_config.get('lock_wait', None)
lock_wait_flags = ('--lock-wait', str(lock_wait)) if lock_wait else ()