Hello community,
here is the log from the commit of package borgmatic for openSUSE:Factory checked in at 2020-08-31 16:52:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/borgmatic (Old)
and /work/SRC/openSUSE:Factory/.borgmatic.new.3399 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "borgmatic"
Mon Aug 31 16:52:54 2020 rev:24 rq:830717 version:1.5.10
Changes:
--------
--- /work/SRC/openSUSE:Factory/borgmatic/borgmatic.changes 2020-07-28 17:29:23.762180962 +0200
+++ /work/SRC/openSUSE:Factory/.borgmatic.new.3399/borgmatic.changes 2020-08-31 16:53:14.188441291 +0200
@@ -1,0 +2,16 @@
+Mon Aug 31 09:35:40 UTC 2020 - Antonio Larrosa
+
+- Update to 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/#confi...
+ * Clarify documentation overview of monitoring options:
+ http://torsion.org/borgmatic/docs/how-to/monitor-your-backups/
+
+-------------------------------------------------------------------
@@ -5,4 +21,4 @@
-* #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.
+ * #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.
@@ -10,2 +26 @@
- character/block devices to prevent
- hangs.
+ character/block devices to prevent hangs.
Old:
----
borgmatic-1.5.9.tar.gz
New:
----
borgmatic-1.5.10.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ borgmatic.spec ++++++
--- /var/tmp/diff_new_pack.jusBsI/_old 2020-08-31 16:53:15.036441702 +0200
+++ /var/tmp/diff_new_pack.jusBsI/_new 2020-08-31 16:53:15.044441706 +0200
@@ -17,7 +17,7 @@
Name: borgmatic
-Version: 1.5.9
+Version: 1.5.10
Release: 0
Summary: Automation tool for borgbackup
License: GPL-3.0-only
++++++ borgmatic-1.5.9.tar.gz -> borgmatic-1.5.10.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/.eleventy.js new/borgmatic-1.5.10/.eleventy.js
--- old/borgmatic-1.5.9/.eleventy.js 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/.eleventy.js 2020-08-21 23:27:47.000000000 +0200
@@ -1,9 +1,11 @@
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");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/NEWS new/borgmatic-1.5.10/NEWS
--- old/borgmatic-1.5.9/NEWS 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/NEWS 2020-08-21 23:27:47.000000000 +0200
@@ -1,3 +1,12 @@
+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/#confi...
+ * 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.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/README.md new/borgmatic-1.5.10/README.md
--- old/borgmatic-1.5.9/README.md 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/README.md 2020-08-21 23:27:47.000000000 +0200
@@ -22,8 +22,8 @@
# Paths of local or remote repositories to backup to.
repositories:
- - 1234@usw-s001.rsync.net:backups.borg
- k8pDxu32@k8pDxu32.repo.borgbase.com:repo
+ - 1234@usw-s001.rsync.net:backups.borg
- /var/lib/backups/local.borg
retention:
@@ -66,31 +66,19 @@
<a href="https://healthchecks.io/"><img src="docs/static/healthchecks.png" alt="Healthchecks" height="60px" style="margin-bottom:20px;"></a>
<a href="https://cronitor.io/"><img src="docs/static/cronitor.png" alt="Cronitor" height="60px" style="margin-bottom:20px;"></a>
<a href="https://cronhub.io/"><img src="docs/static/cronhub.png" alt="Cronhub" height="60px" style="margin-bottom:20px;"></a>
-<a href="https://www.pagerduty.com/"><img src="docs/static/pagerduty.png" alt="PagerDuty" height="60px" style="margin-bottom:20px;"></a>
-<a href="https://www.rsync.net/cgi-bin/borg.cgi?campaign=borg&adgroup=borgmatic"><img src="docs/static/rsyncnet.png" alt="rsync.net" height="60px" style="margin-bottom:20px;"></a>
+<a href="https://www.pagerduty.com/"><img src="docs/static/pagerduty.png" alt="PagerDuty" height="60px" style="margin-bottom:20px;"></a>
<a href="https://www.borgbase.com/?utm_source=borgmatic"><img src="docs/static/borgbase.png" alt="BorgBase" height="60px" style="margin-bottom:20px;"></a>
+<img src="docs/static/rsyncnet.png" alt="rsync.net" height="60px" style="margin-bottom:20px;">
-## How-to guides
-
- * [Set up backups with borgmatic](https://torsion.org/borgmatic/docs/how-to/set-up-backups/) ⬅ *Start here!*
- * [Make per-application backups](https://torsion.org/borgmatic/docs/how-to/make-per-application-backups/)
- * [Make backups redundant](https://torsion.org/borgmatic/docs/how-to/make-backups-redundant/)
- * [Deal with very large backups](https://torsion.org/borgmatic/docs/how-to/deal-with-very-large-backups/)
- * [Inspect your backups](https://torsion.org/borgmatic/docs/how-to/inspect-your-backups/)
- * [Monitor your backups](https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/)
- * [Extract a backup](https://torsion.org/borgmatic/docs/how-to/extract-a-backup/)
- * [Backup your databases](https://torsion.org/borgmatic/docs/how-to/backup-your-databases/)
- * [Add preparation and cleanup steps to backups](https://torsion.org/borgmatic/docs/how-to/add-preparation-and-cleanup-steps-...)
- * [Backup to a removable drive or an intermittent server](https://torsion.org/borgmatic/docs/how-to/backup-to-a-removable-drive-or-an-...)
- * [Upgrade borgmatic](https://torsion.org/borgmatic/docs/how-to/upgrade/)
- * [Develop on borgmatic](https://torsion.org/borgmatic/docs/how-to/develop-on-borgmatic/)
-
+## Getting started
-## Reference guides
+Your first step is to [install and configure
+borgmatic](https://torsion.org/borgmatic/docs/how-to/set-up-backups/).
- * [borgmatic configuration reference](https://torsion.org/borgmatic/docs/reference/configuration/)
- * [borgmatic command-line reference](https://torsion.org/borgmatic/docs/reference/command-line/)
+For additional documentation, check out the links above for https://torsion.org/borgmatic/#documentation">borgmatic how-to and
+reference guides</a>.
## Hosting providers
@@ -101,8 +89,8 @@
links, but without any tracking scripts or cookies.)
<ul>
- <li class="referral"><a href="https://www.rsync.net/cgi-bin/borg.cgi?campaign=borg&adgroup=borgmatic">rsync.net</a>: Cloud Storage provider with full support for borg and any other SSH/SFTP tool</li>
<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>
+ <li>rsync.net: Cloud Storage provider with full support for borg and any other SSH/SFTP tool</li>
</ul>
## Support and contributing
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/borgmatic/commands/borgmatic.py new/borgmatic-1.5.10/borgmatic/commands/borgmatic.py
--- old/borgmatic-1.5.9/borgmatic/commands/borgmatic.py 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/borgmatic/commands/borgmatic.py 2020-08-21 23:27:47.000000000 +0200
@@ -91,6 +91,14 @@
'pre-check',
global_arguments.dry_run,
)
+ if 'extract' in arguments:
+ command.execute_hook(
+ hooks.get('before_extract'),
+ hooks.get('umask'),
+ config_filename,
+ 'pre-extract',
+ global_arguments.dry_run,
+ )
if prune_create_or_check:
dispatch.call_hooks(
'ping_monitor',
@@ -165,6 +173,14 @@
'post-check',
global_arguments.dry_run,
)
+ if 'extract' in arguments:
+ command.execute_hook(
+ hooks.get('after_extract'),
+ hooks.get('umask'),
+ config_filename,
+ 'post-extract',
+ global_arguments.dry_run,
+ )
if prune_create_or_check:
dispatch.call_hooks(
'ping_monitor',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/borgmatic/config/collect.py new/borgmatic-1.5.10/borgmatic/config/collect.py
--- old/borgmatic-1.5.9/borgmatic/config/collect.py 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/borgmatic/config/collect.py 2020-08-21 23:27:47.000000000 +0200
@@ -44,6 +44,9 @@
yield path
continue
+ if not os.access(path, os.R_OK):
+ continue
+
for filename in sorted(os.listdir(path)):
full_filename = os.path.join(path, filename)
matching_filetype = full_filename.endswith('.yaml') or full_filename.endswith('.yml')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/borgmatic/config/schema.yaml new/borgmatic-1.5.10/borgmatic/config/schema.yaml
--- old/borgmatic-1.5.9/borgmatic/config/schema.yaml 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/borgmatic/config/schema.yaml 2020-08-21 23:27:47.000000000 +0200
@@ -123,7 +123,7 @@
patterns" for more details.
example:
- '*.pyc'
- - ~/*/.cache
+ - /home/*/.cache
- /etc/ssl
exclude_from:
seq:
@@ -473,6 +473,14 @@
before consistency checks, run once per configuration file.
example:
- echo "Starting checks."
+ before_extract:
+ seq:
+ - type: str
+ desc: |
+ List of one or more shell commands or scripts to execute
+ before extracting a backup, run once per configuration file.
+ example:
+ - echo "Starting extracting."
after_backup:
seq:
- type: str
@@ -497,6 +505,14 @@
after consistency checks, run once per configuration file.
example:
- echo "Finished checks."
+ after_extract:
+ seq:
+ - type: str
+ desc: |
+ List of one or more shell commands or scripts to execute
+ after extracting a backup, run once per configuration file.
+ example:
+ - echo "Finished extracting."
on_error:
seq:
- type: str
@@ -506,6 +522,26 @@
"check" action or an associated before/after hook.
example:
- echo "Error during prune/create/check."
+ before_everything:
+ seq:
+ - type: str
+ desc: |
+ List of one or more shell commands or scripts to execute
+ before running all actions (if one of them is "create").
+ These are collected from all configuration files and then
+ run once before all of them (prior to all actions).
+ example:
+ - echo "Starting actions."
+ after_everything:
+ seq:
+ - type: str
+ desc: |
+ List of one or more shell commands or scripts to execute
+ after running all actions (if one of them is "create").
+ These are collected from all configuration files and then
+ run once after all of them (after any action).
+ example:
+ - echo "Completed actions."
postgresql_databases:
seq:
- map:
@@ -693,26 +729,6 @@
documentation for details.
example:
https://cronhub.io/start/1f5e3410-254c-11e8-b61d-55875966d01
- before_everything:
- seq:
- - type: str
- desc: |
- List of one or more shell commands or scripts to execute
- before running all actions (if one of them is "create").
- These are collected from all configuration files and then
- run once before all of them (prior to all actions).
- example:
- - echo "Starting actions."
- after_everything:
- seq:
- - type: str
- desc: |
- List of one or more shell commands or scripts to execute
- after running all actions (if one of them is "create").
- These are collected from all configuration files and then
- run once before all of them (prior to all actions).
- example:
- - echo "Completed actions."
umask:
type: scalar
desc: |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/docs/Dockerfile new/borgmatic-1.5.10/docs/Dockerfile
--- old/borgmatic-1.5.9/docs/Dockerfile 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/docs/Dockerfile 2020-08-21 23:27:47.000000000 +0200
@@ -16,6 +16,7 @@
RUN npm install @11ty/eleventy \
@11ty/eleventy-plugin-syntaxhighlight \
@11ty/eleventy-plugin-inclusive-language \
+ @11ty/eleventy-navigation \
markdown-it \
markdown-it-anchor \
markdown-it-replace-link
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/docs/_includes/components/lists.css new/borgmatic-1.5.10/docs/_includes/components/lists.css
--- old/borgmatic-1.5.9/docs/_includes/components/lists.css 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/docs/_includes/components/lists.css 2020-08-21 23:27:47.000000000 +0200
@@ -1,8 +1,7 @@
/* Buzzwords */
@keyframes rainbow {
0% { background-position: 0% 50%; }
- 50% { background-position: 100% 50%; }
- 100% { background-position: 0% 50%; }
+ 100% { background-position: 100% 50%; }
}
.buzzword-list,
.inlinelist {
@@ -25,6 +24,7 @@
margin: 4px 4px 4px 0;
transition: .15s linear outline;
}
+
.inlinelist .inlinelist-item.active {
background-color: #222;
color: #fff;
@@ -36,6 +36,38 @@
}
.inlinelist .inlinelist-item code {
background-color: transparent;
+ font-size: 80%;
+ margin-left: 6px;
+ padding-left: 6px;
+ display: inline-block;
+ position: relative;
+}
+@media (max-width: 26.8125em) { /* 429px */
+ .inlinelist .inlinelist-item {
+ overflow: hidden;
+ }
+ .inlinelist .inlinelist-item code {
+ float: right;
+ line-height: 1.75;
+ }
+}
+@media (min-width: 26.875em) { /* 430px */
+ .inlinelist .inlinelist-item code {
+ float: none;
+ }
+ .inlinelist .inlinelist-item code:before {
+ content: " ";
+ border-left: 1px solid rgba(255,255,255,.8);
+ position: absolute;
+ left: -2px;
+ top: -2px;
+ bottom: 2px;
+ }
+ @media (prefers-color-scheme: dark) {
+ .inlinelist .inlinelist-item code:before {
+ border-left-color: rgba(0,0,0,.8);
+ }
+ }
}
a.buzzword {
text-decoration: underline;
@@ -59,44 +91,74 @@
.buzzword {
background-color: #f7f7f7;
}
+@media (prefers-color-scheme: dark) {
+ .buzzword-list li,
+ .buzzword {
+ background-color: #080808;
+ }
+}
.inlinelist .inlinelist-item {
background-color: #e9e9e9;
}
+@media (prefers-color-scheme: dark) {
+ .inlinelist .inlinelist-item {
+ background-color: #000;
+ }
+ .inlinelist .inlinelist-item a {
+ color: #fff;
+ }
+ .inlinelist .inlinelist-item code {
+ color: inherit;
+ }
+}
.inlinelist .inlinelist-item:hover,
.inlinelist .inlinelist-item:focus,
.buzzword-list li:hover,
.buzzword-list li:focus,
.buzzword:hover,
-.buzzword:focus {
+.buzzword:focus,
+.rainbow-active:hover,
+.rainbow-active:focus {
position: relative;
background-image: linear-gradient(238deg, #ff0000, #ff8000, #ffff00, #80ff00, #00ff00, #00ff80, #00ffff, #0080ff, #0000ff, #8000ff, #ff0080);
background-size: 1200% 1200%;
+ background-position: 2% 80%;
color: #fff;
text-shadow: 0 0 2px rgba(0,0,0,.9);
- animation: rainbow 1.6s infinite;
+ animation: rainbow 4s ease-out alternate infinite;
+}
+.rainbow-active-noanim {
+ animation: none !important;
}
.inlinelist .inlinelist-item:hover a,
.inlinelist .inlinelist-item:focus a,
.buzzword-list li:hover a,
.buzzword-list li:focus a,
a.buzzword:hover,
-a.buzzword:focus {
+a.buzzword:focus,
+a.rainbow-active:hover,
+a.rainbow-active:focus {
color: #fff;
text-decoration: none;
}
-/*
-I wish there were a PE friendly way to do this but media queries don’t work work with @supports
-@media (prefers-reduced-motion: no-preference) {
+@media (prefers-reduced-motion: reduce) {
+ .inlinelist .inlinelist-item:hover,
+ .inlinelist .inlinelist-item:focus,
+ .buzzword-list li:hover,
+ .buzzword-list li:focus,
.buzzword:hover,
- .buzzword:focus {
- animation: rainbow 1s infinite;
+ .buzzword:focus,
+ .rainbow-active:hover,
+ .rainbow-active:focus {
+ animation: none;
}
-}*/
+}
+
.buzzword-list li:hover:after,
.buzzword-list li:focus:after,
.buzzword:hover:after,
.buzzword:focus:after {
- font-family: system-ui, sans-serif;
+ font-family: system-ui, -apple-system, sans-serif;
content: "Buzzword alert!!!";
position: absolute;
left: 0;
@@ -123,4 +185,94 @@
main h3 a.buzzword,
main p a.buzzword {
text-decoration: underline;
-}
\ No newline at end of file
+}
+
+/* Small viewport */
+@media (max-width: 26.8125em) { /* 429px */
+ .inlinelist .inlinelist-item {
+ display: block;
+ width: auto;
+ padding: 0;
+ line-height: 1.4;
+ }
+ .inlinelist .inlinelist-item > a {
+ display: block;
+ padding: .2em .5em;
+ }
+}
+@media (min-width: 26.875em) { /* 430px */
+ .inlinelist .inlinelist-item > a {
+ display: inline-block;
+ white-space: nowrap;
+ }
+}
+
+.numberflag {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ background-color: #dff7ff;
+ border-radius: 50%;
+ width: 1.75em;
+ height: 1.75em;
+ font-weight: 600;
+}
+@media (prefers-color-scheme: dark) {
+ .numberflag {
+ background-color: #00bcd4;
+ color: #222;
+ }
+}
+h1 .numberflag,
+h2 .numberflag,
+h3 .numberflag,
+h4 .numberflag,
+h5 .numberflag {
+ width: 1.25em;
+ height: 1.25em;
+}
+h2 .numberflag {
+ position: relative;
+ margin-right: 0.25em; /* 10px /40 */
+}
+h2 .numberflag:after {
+ content: " ";
+ position: absolute;
+ bottom: -1px;
+ left: 0;
+ height: 1px;
+ background-color: #fff;
+ width: calc(100% + 0.4em); /* 16px /40 */
+}
+@media (prefers-color-scheme: dark) {
+ h2 .numberflag:after {
+ background-color: #222;
+ }
+}
+
+/* Super featured list on home page */
+.list-superfeatured .avatar {
+ width: calc(30px + 5vw);
+ height: calc(30px + 5vw);
+ max-width: 60px;
+ max-height: 60px;
+ margin-left: 0;
+}
+@media (max-width: 26.8125em) { /* 429px */
+ .list-superfeatured .inlinelist-item > a {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+}
+@media (min-width: 26.875em) { /* 430px */
+ .list-superfeatured .inlinelist-item {
+ font-size: 110%;
+ }
+}
+
+/* Only top level */
+.inlinelist-no-nest ul,
+.inlinelist-no-nest ol {
+ display: none;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/docs/_includes/components/minilink.css new/borgmatic-1.5.10/docs/_includes/components/minilink.css
--- old/borgmatic-1.5.9/docs/_includes/components/minilink.css 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/docs/_includes/components/minilink.css 2020-08-21 23:27:47.000000000 +0200
@@ -10,7 +10,20 @@
font-weight: 500;
margin: 0 0.4285714285714em 0.07142857142857em 0; /* 0 6px 1px 0 /14 */
line-height: 1.285714285714; /* 18px /14 */
- font-family: system-ui, sans-serif;
+ font-family: system-ui, -apple-system, sans-serif;
+}
+@media (prefers-color-scheme: dark) {
+ .minilink {
+ background-color: #222;
+ /*
+ !important to override .elv-callout a
+ see _includes/components/callout.css
+ */
+ color: #fff !important;
+ }
+}
+table .minilink {
+ margin-top: 6px;
}
.minilink[href] {
box-shadow: 0 1px 1px 0 rgba(0,0,0,.5);
@@ -19,6 +32,12 @@
.minilink[href]:focus {
background-color: #bbb;
}
+@media (prefers-color-scheme: dark) {
+ .minilink[href]:hover,
+ .minilink[href]:focus {
+ background-color: #444;
+ }
+}
pre + .minilink {
color: #fff;
border-radius: 0 0 0.2857142857143em 0.2857142857143em; /* 4px /14 */
@@ -35,6 +54,54 @@
margin-left: 2em;
margin-bottom: 2em;
}
+h1 .minilink,
+h2 .minilink,
+h3 .minilink,
+h4 .minilink {
+ font-size: 0.9375rem; /* 15px /16 */
+ vertical-align: middle;
+ margin-left: 1em;
+}
+h3 .minilink,
+h4 .minilink {
+ font-size: 0.8125rem; /* 13px /16 */
+}
.minilink + pre[class*=language-] {
clear: both;
-}
\ No newline at end of file
+}
+
+.minilink-addedin {
+ text-transform: none;
+ box-shadow: 0 0 0 1px rgba(0,0,0,0.3);
+}
+@media (prefers-color-scheme: dark) {
+ .minilink-addedin {
+ box-shadow: 0 0 0 1px rgba(255,255,255,0.3);
+ }
+}
+.minilink-addedin:not(:first-child) {
+ margin-left: .5em;
+}
+.minilink-addedin.minilink-inline {
+ margin: 0 4px;
+ background-color: #fff;
+}
+
+.minilink-lower {
+ text-transform: none;
+ background-color: transparent;
+}
+.minilink-lower[href] {
+ box-shadow: 0 0 0 1px rgba(0,0,0,0.5);
+}
+.minilink-lower[href]:hover,
+.minilink-lower[href]:focus {
+ background-color: #eee;
+}
+
+.minilink > .minilink {
+ margin: -.125em .375em -.125em -.375em;
+ box-shadow: none;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/docs/_includes/components/toc.css new/borgmatic-1.5.10/docs/_includes/components/toc.css
--- old/borgmatic-1.5.9/docs/_includes/components/toc.css 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/docs/_includes/components/toc.css 2020-08-21 23:27:47.000000000 +0200
@@ -1,63 +1,111 @@
.elv-toc {
font-size: 1rem; /* Reset */
}
+.elv-toc details {
+ --details-force-closed: (max-width: 63.9375em); /* 1023px */
+}
+.elv-toc details > summary {
+ font-size: 1.375rem; /* 22px /16 */
+ margin-bottom: .5em;
+}
@media (min-width: 64em) { /* 1024px */
.elv-toc {
position: absolute;
- left: -17rem;
+ left: 3rem;
width: 16rem;
+ z-index: 1;
+ }
+ .elv-toc details > summary {
+ margin-top: 0;
+ }
+ .js .elv-toc details > summary {
+ display: none;
}
}
-
.elv-toc-list {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
padding-left: 0;
padding-right: 0;
+ margin: 0 0 2.5em;
list-style: none;
}
+.elv-toc-list li {
+ font-size: 0.9375em; /* 15px /16 */
+ line-height: 1.466666666667; /* 22px /15 */
+}
/* Nested lists */
.elv-toc-list ul {
- padding: 0;
- display: none;
- margin-bottom: 1.5em;
+ padding: 0 0 .75em 0;
+ margin: 0;
list-style: none;
}
-.elv-toc-list ul li {
- padding-left: 0.875em; /* 14px /16 */
+
+/* Menus nested 2 or more deep */
+.elv-toc-list ul ul {
+ padding-bottom: 0;
+ padding-left: 0.625rem; /* 10px /16 */
}
-@media (min-width: 64em) and (min-height: 48em) { /* 1024 x 768px */
- .elv-toc-list ul {
- display: block;
- }
+/* Hide inactive menus 3 or more deep */
+.elv-toc-list ul ul > li:not(.elv-toc-active) > ul > li:not(.elv-toc-active) {
+ display: none;
}
/* List items */
+.elv-toc summary,
+.elv-toc-list a {
+ padding: .15em .25em;
+}
+.elv-toc-list a {
+ display: block;
+}
.elv-toc-list a:not(:hover) {
text-decoration: none;
}
.elv-toc-list li {
- padding-top: 0;
- padding-bottom: 0;
- margin: .1em 0 .5em;
+ margin: 0;
+ padding: 0;
+}
+.elv-toc-list > li {
+ flex-grow: 1;
+ flex-basis: 14.375rem; /* 230px /16 */
}
/* Top level links */
.elv-toc-list > li > a {
- font-weight: 400;
- font-size: 1.0625em; /* 17px /16 */
color: #222;
+ font-weight: 600;
+ border-bottom: 1px solid #ddd;
+ margin-bottom: 0.25em; /* 4px /16 */
+}
+@media (prefers-color-scheme: dark) {
+ .elv-toc-list > li > a {
+ color: #fff;
+ border-color: #444;
+ }
}
/* Active links */
.elv-toc-list li.elv-toc-active > a {
- font-weight: 700;
- text-decoration: underline;
+ background-color: #dff7ff;
+}
+@media (prefers-color-scheme: dark) {
+ .elv-toc-list li.elv-toc-active > a {
+ background-color: #353535;
+ }
}
-.elv-toc-active > a:after {
- content: " ⬅";
- line-height: .5;
+.elv-toc-list ul .elv-toc-active > a:after {
+ content: "";
}
+
/* Show only active nested lists */
.elv-toc-list ul.elv-toc-active,
.elv-toc-list li.elv-toc-active > ul {
display: block;
-}
\ No newline at end of file
+}
+
+/* Footer catgory navigation */
+.elv-cat-list-active {
+ font-weight: 600;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/docs/_includes/index.css new/borgmatic-1.5.10/docs/_includes/index.css
--- old/borgmatic-1.5.9/docs/_includes/index.css 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/docs/_includes/index.css 2020-08-21 23:27:47.000000000 +0200
@@ -234,6 +234,9 @@
max-width: 42rem;
clear: both;
}
+header.elv-layout {
+ padding: 0 1rem;
+}
footer.elv-layout {
margin-bottom: 5em;
}
@@ -242,7 +245,7 @@
}
@media (min-width: 64em) { /* 1024px */
.elv-layout-toc {
- margin-left: 18rem;
+ padding-left: 15rem;
max-width: 60rem;
margin-right: 1rem;
position: relative;
@@ -254,7 +257,6 @@
/* Header */
.elv-header {
- color: #222;
position: relative;
}
.elv-header-default {
@@ -262,6 +264,13 @@
flex-direction: column;
justify-content: center;
align-items: center;
+ padding-top: 0;
+}
+.elv-header-c {
+ width: 100%;
+}
+.elv-header-docs .elv-header-c {
+ padding: 1rem 0;
}
.elv-header-docs:before,
.elv-header-docs:after {
@@ -272,53 +281,89 @@
clear: both;
}
/* Header Hero */
-.elv-hero img {
- max-width: 80vw;
- max-height: 60vh;
+.elv-hero {
+ background-color: #222;
+}
+@media (prefers-color-scheme: dark) {
+ .elv-hero {
+ background-color: #292929;
+ }
+}
+.elv-hero img,
+.elv-hero svg {
+ width: 42.95774646vh;
+ height: 60vh;
+}
+.elv-hero:hover img,
+.elv-hero:hover svg {
+ background-color: inherit;
+}
+.elv-header-default .elv-hero {
+ display: flex;
+ justify-content: center;
+ width: calc(100% + 2rem);
+ margin-left: -1rem;
+ margin-right: -1rem;
+}
+.elv-hero:hover {
+ background-color: #333;
}
+
.elv-header-docs .elv-hero {
float: left;
- margin-right: 1.5em;
+ margin-right: .5em;
+}
+.elv-header-default .elv-hero img,
+.elv-header-default .elv-hero svg {
+ position: relative;
+ background-color: transparent;
+ z-index: 1;
}
-.elv-header-docs .elv-hero img {
+.elv-header-docs .elv-hero img,
+.elv-header-docs .elv-hero svg {
+ width: auto;
height: 3em;
}
-@media (min-width: 37.5em) { /* 600px */
- .elv-header-docs .elv-hero img {
+@media (min-width: 43.75em) { /* 700px */
+ .elv-header-docs .elv-hero {
+ margin-right: 1em;
+ }
+ .elv-header-docs .elv-hero img,
+ .elv-header-docs .elv-hero svg {
width: 4.303125em; /* 68.85px /16 */
height: 6em;
}
}
/* Header Possum */
+.elv-possum-anchor {
+ display: block;
+}
.elv-possum {
- display: none;
position: absolute;
- right: 1em;
- top: 1em;
- width: 16vmin;
-}
-@media (min-width: 31.25em) { /* 500px */
- .elv-possum {
- display: block;
- }
+ right: .5rem;
+ top: 1rem;
+ transition: .3s opacity ease-out;
+}
+.elv-header-docs .elv-possum {
+ width: 15vw;
+ max-width: 6.25rem; /* 100px /16 */
}
-
-/* Header Heading */
-.elv-hed {
- font-size: 3em;
- margin-top: 1.5em;
- margin-bottom: .25em;
- text-align: center;
- text-transform: none;
-}
-.elv-header-docs .elv-hed {
- font-size: 2.3em;
- margin: 0;
- text-align: left;
-}
-@media (min-width: 37.5em) { /* 600px */
- .elv-header-docs .elv-hed {
- font-size: 3em;
+.elv-header-default {
+ overflow: hidden;
+}
+.elv-header-default .elv-possum {
+ pointer-events: none;
+ width: auto;
+ height: calc((60vh - 2rem) / 1.6);
+ top: 36%;
+ left: 1vw;
+ right: auto;
+ animation-duration: 180s;
+ animation-name: balloonFloat;
+}
+@media (prefers-reduced-motion: reduce) {
+ .elv-header-default .elv-possum {
+ display: none;
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/docs/_includes/layouts/main.njk new/borgmatic-1.5.10/docs/_includes/layouts/main.njk
--- old/borgmatic-1.5.9/docs/_includes/layouts/main.njk 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/docs/_includes/layouts/main.njk 2020-08-21 23:27:47.000000000 +0200
@@ -6,9 +6,27 @@
{% include "header.njk" %}
<main class="elv-layout{% if layoutClass %} {{ layoutClass }}{% endif %}">
- <article>
- {{ content | safe }}
+ <div id="documentation" class="elv-toc">
+ <div>
+ {% set navPages = collections.all | eleventyNavigation %}
+ {% macro renderNavListItem(entry) -%}
+
+ https://torsion.org/borgmatic/docs{{ entry.url | url }}"{% endif %}>{{ entry.title }}</a>
+ {%- if entry.children.length -%}
+ <ul>
+ {%- for child in entry.children %}{{ renderNavListItem(child) }}{% endfor -%}
+ </ul>
+ {%- endif -%}
+ </li>
+ {%- endmacro %}
- {% include 'components/suggestion-form.html' %}
- </article>
+ <ul class="elv-toc-list">
+ {%- for entry in navPages %}{{ renderNavListItem(entry) }}{%- endfor -%}
+ </ul>
+ </div>
+ </div>
+
+ {{ content | safe }}
+
+ {% include 'components/suggestion-form.html' %}
</main>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/docs/how-to/add-preparation-and-cleanup-steps-to-backups.md new/borgmatic-1.5.10/docs/how-to/add-preparation-and-cleanup-steps-to-backups.md
--- old/borgmatic-1.5.9/docs/how-to/add-preparation-and-cleanup-steps-to-backups.md 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/docs/how-to/add-preparation-and-cleanup-steps-to-backups.md 2020-08-21 23:27:47.000000000 +0200
@@ -1,5 +1,9 @@
---
title: How to add preparation and cleanup steps to backups
+eleventyNavigation:
+ key: Add preparation and cleanup steps
+ parent: How-to guides
+ order: 8
---
## Preparation and cleanup hooks
@@ -73,11 +77,3 @@
injection or privilege escalation, do not forget to set secure permissions
on borgmatic configuration files (`chmod 0600`) and scripts (`chmod 0700`)
invoked by hooks.
-
-
-## Related documentation
-
- * [Set up backups with borgmatic](https://torsion.org/borgmatic/docs/how-to/set-up-backups/)
- * [Backup your databases](https://torsion.org/borgmatic/docs/how-to/backup-your-databases/)
- * [Inspect your backups](https://torsion.org/borgmatic/docs/how-to/inspect-your-backups/)
- * [Monitor your backups](https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/docs/how-to/backup-to-a-removable-drive-or-an-intermittent-server.md new/borgmatic-1.5.10/docs/how-to/backup-to-a-removable-drive-or-an-intermittent-server.md
--- old/borgmatic-1.5.9/docs/how-to/backup-to-a-removable-drive-or-an-intermittent-server.md 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/docs/how-to/backup-to-a-removable-drive-or-an-intermittent-server.md 2020-08-21 23:27:47.000000000 +0200
@@ -1,5 +1,9 @@
---
title: How to backup to a removable drive or an intermittent server
+eleventyNavigation:
+ key: Backup to a removable drive or server
+ parent: How-to guides
+ order: 9
---
## Occasional backups
@@ -98,11 +102,3 @@
* The soft failure feature also works for `before_prune`, `after_prune`,
`before_check`, and `after_check` hooks. But it is not implemented for
`before_everything` or `after_everything`.
-
-## Related documentation
-
- * [Set up backups with borgmatic](https://torsion.org/borgmatic/docs/how-to/set-up-backups/)
- * [Make per-application backups](https://torsion.org/borgmatic/docs/how-to/make-per-application-backups/)
- * [Make backups redundant](https://torsion.org/borgmatic/docs/how-to/make-backups-redundant/)
- * [Add preparation and cleanup steps to backups](https://torsion.org/borgmatic/docs/how-to/add-preparation-and-cleanup-steps-...)
- * [Monitor your backups](https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/docs/how-to/backup-your-databases.md new/borgmatic-1.5.10/docs/how-to/backup-your-databases.md
--- old/borgmatic-1.5.9/docs/how-to/backup-your-databases.md 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/docs/how-to/backup-your-databases.md 2020-08-21 23:27:47.000000000 +0200
@@ -1,5 +1,9 @@
---
title: How to backup your databases
+eleventyNavigation:
+ key: Backup your databases
+ parent: How-to guides
+ order: 7
---
## Database dump hooks
@@ -217,11 +221,3 @@
See Limitations above about `read_special`. You may need to exclude certain
paths with named pipes, block devices, or character devices on which borgmatic
is hanging.
-
-
-## Related documentation
-
- * [Set up backups with borgmatic](https://torsion.org/borgmatic/docs/how-to/set-up-backups/)
- * [Add preparation and cleanup steps to backups](https://torsion.org/borgmatic/docs/how-to/add-preparation-and-cleanup-steps-...)
- * [Inspect your backups](https://torsion.org/borgmatic/docs/how-to/inspect-your-backups/)
- * [Extract a backup](https://torsion.org/borgmatic/docs/how-to/extract-a-backup/)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/docs/how-to/deal-with-very-large-backups.md new/borgmatic-1.5.10/docs/how-to/deal-with-very-large-backups.md
--- old/borgmatic-1.5.9/docs/how-to/deal-with-very-large-backups.md 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/docs/how-to/deal-with-very-large-backups.md 2020-08-21 23:27:47.000000000 +0200
@@ -1,5 +1,9 @@
---
title: How to deal with very large backups
+eleventyNavigation:
+ key: Deal with very large backups
+ parent: How-to guides
+ order: 3
---
## Biggish data
@@ -120,8 +124,3 @@
This should make the client keep the connection alive while validating
backups.
-
-
-## Related documentation
-
- * [Set up backups with borgmatic](https://torsion.org/borgmatic/docs/how-to/set-up-backups/)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/docs/how-to/develop-on-borgmatic.md new/borgmatic-1.5.10/docs/how-to/develop-on-borgmatic.md
--- old/borgmatic-1.5.9/docs/how-to/develop-on-borgmatic.md 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/docs/how-to/develop-on-borgmatic.md 2020-08-21 23:27:47.000000000 +0200
@@ -1,5 +1,9 @@
---
title: How to develop on borgmatic
+eleventyNavigation:
+ key: Develop on borgmatic
+ parent: How-to guides
+ order: 11
---
## Source code
@@ -139,7 +143,3 @@
To close the documentation server, ctrl-C the script. Note that it does not
currently auto-reload, so you'll need to stop it and re-run it for any
additional documentation changes to take effect.
-
-## Related documentation
-
- * [Inspect your backups](https://torsion.org/borgmatic/docs/how-to/inspect-your-backups/)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/docs/how-to/extract-a-backup.md new/borgmatic-1.5.10/docs/how-to/extract-a-backup.md
--- old/borgmatic-1.5.9/docs/how-to/extract-a-backup.md 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/docs/how-to/extract-a-backup.md 2020-08-21 23:27:47.000000000 +0200
@@ -1,5 +1,9 @@
---
title: How to extract a backup
+eleventyNavigation:
+ key: Extract a backup
+ parent: How-to guides
+ order: 6
---
## Extract
@@ -132,11 +136,3 @@
```bash
borgmatic umount --mount-point /mnt
```
-
-
-## Related documentation
-
- * [Set up backups with borgmatic](https://torsion.org/borgmatic/docs/how-to/set-up-backups/)
- * [Inspect your backups](https://torsion.org/borgmatic/docs/how-to/inspect-your-backups/)
- * [Monitor your backups](https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/)
- * [Backup your databases](https://torsion.org/borgmatic/docs/how-to/backup-your-databases/)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/docs/how-to/index.md new/borgmatic-1.5.10/docs/how-to/index.md
--- old/borgmatic-1.5.9/docs/how-to/index.md 1970-01-01 01:00:00.000000000 +0100
+++ new/borgmatic-1.5.10/docs/how-to/index.md 2020-08-21 23:27:47.000000000 +0200
@@ -0,0 +1,5 @@
+---
+eleventyNavigation:
+ key: How-to guides
+permalink: false
+---
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/docs/how-to/inspect-your-backups.md new/borgmatic-1.5.10/docs/how-to/inspect-your-backups.md
--- old/borgmatic-1.5.9/docs/how-to/inspect-your-backups.md 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/docs/how-to/inspect-your-backups.md 2020-08-21 23:27:47.000000000 +0200
@@ -1,5 +1,9 @@
---
title: How to inspect your backups
+eleventyNavigation:
+ key: Inspect your backups
+ parent: How-to guides
+ order: 4
---
## Backup progress
@@ -98,11 +102,3 @@
the log file so it doesn't grow too large, for example with
[logrotate](https://wiki.archlinux.org/index.php/Logrotate). Also, there is a
`--log-file-verbosity` flag to customize the log file's log level.
-
-
-## Related documentation
-
- * [Set up backups with borgmatic](https://torsion.org/borgmatic/docs/how-to/set-up-backups/)
- * [Monitor your backups](https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/)
- * [Add preparation and cleanup steps to backups](https://torsion.org/borgmatic/docs/how-to/add-preparation-and-cleanup-steps-...)
- * [Develop on borgmatic](https://torsion.org/borgmatic/docs/how-to/develop-on-borgmatic/)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/docs/how-to/make-backups-redundant.md new/borgmatic-1.5.10/docs/how-to/make-backups-redundant.md
--- old/borgmatic-1.5.9/docs/how-to/make-backups-redundant.md 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/docs/how-to/make-backups-redundant.md 2020-08-21 23:27:47.000000000 +0200
@@ -1,5 +1,9 @@
---
title: How to make backups redundant
+eleventyNavigation:
+ key: Make backups redundant
+ parent: How-to guides
+ order: 2
---
## Multiple repositories
@@ -16,8 +20,8 @@
# Paths of local or remote repositories to backup to.
repositories:
- - 1234@usw-s001.rsync.net:backups.borg
- k8pDxu32@k8pDxu32.repo.borgbase.com:repo
+ - 1234@usw-s001.rsync.net:backups.borg
- /var/lib/backups/local.borg
```
@@ -28,8 +32,8 @@
Here's a way of visualizing what borgmatic does with the above configuration:
-1. Backup `/home` and `/etc` to `1234@usw-s001.rsync.net:backups.borg`
2. Backup `/home` and `/etc` to `k8pDxu32@k8pDxu32.repo.borgbase.com:repo`
+1. Backup `/home` and `/etc` to `1234@usw-s001.rsync.net:backups.borg`
3. Backup `/home` and `/etc` to `/var/lib/backups/local.borg`
This gives you redundancy of your data across repositories and even
@@ -38,10 +42,3 @@
See [Borg repository URLs
documentation](https://borgbackup.readthedocs.io/en/stable/usage/general.html#repository-ur...)
for more information on how to specify local and remote repository paths.
-
-
-## Related documentation
-
- * [Set up backups with borgmatic](https://torsion.org/borgmatic/docs/how-to/set-up-backups/)
- * [Make per-application backups](https://torsion.org/borgmatic/docs/how-to/make-per-application-backups/)
- * [Backup to a removable drive or an intermittent server](https://torsion.org/borgmatic/docs/how-to/backup-to-a-removable-drive-or-an-...)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/docs/how-to/make-per-application-backups.md new/borgmatic-1.5.10/docs/how-to/make-per-application-backups.md
--- old/borgmatic-1.5.9/docs/how-to/make-per-application-backups.md 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/docs/how-to/make-per-application-backups.md 2020-08-21 23:27:47.000000000 +0200
@@ -1,5 +1,9 @@
---
title: How to make per-application backups
+eleventyNavigation:
+ key: Make per-application backups
+ parent: How-to guides
+ order: 1
---
## Multiple backup configurations
@@ -129,12 +133,12 @@
command-line via the `--override` flag. Here's an example:
```bash
-borgmatic create --override location.remote_path=borg1
+borgmatic create --override location.remote_path=/usr/local/bin/borg1
```
What this does is load your configuration files, and for each one, disregard
the configured value for the `remote_path` option in the `location` section,
-and use the value of `borg1` instead.
+and use the value of `/usr/local/bin/borg1` instead.
Note that the value is parsed as an actual YAML string, so you can even set
list values by using brackets. For instance:
@@ -143,14 +147,21 @@
borgmatic create --override location.repositories=[test1.borg,test2.borg]
```
+Or even a single list element:
+
+```bash
+borgmatic create --override location.repositories=[/root/test1.borg]
+```
+
There is not currently a way to override a single element of a list without
replacing the whole list.
+Note that if you override an option of the list type (like
+`location.repositories`), you do need to use the `[ ]` list syntax. See the
+[configuration
+reference](https://torsion.org/borgmatic/docs/reference/configuration/) for
+which options are list types. (YAML list values look like `- this` with an
+indentation and a leading dash.)
+
Be sure to quote your overrides if they contain spaces or other characters
that your shell may interpret.
-
-
-## Related documentation
-
- * [Set up backups with borgmatic](https://torsion.org/borgmatic/docs/how-to/set-up-backups/)
- * [Make backups redundant](https://torsion.org/borgmatic/docs/how-to/make-backups-redundant/)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/docs/how-to/monitor-your-backups.md new/borgmatic-1.5.10/docs/how-to/monitor-your-backups.md
--- old/borgmatic-1.5.9/docs/how-to/monitor-your-backups.md 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/docs/how-to/monitor-your-backups.md 2020-08-21 23:27:47.000000000 +0200
@@ -1,5 +1,9 @@
---
title: How to monitor your backups
+eleventyNavigation:
+ key: Monitor your backups
+ parent: How-to guides
+ order: 5
---
## Monitoring and alerting
@@ -10,48 +14,68 @@
There are several different ways you can monitor your backups and find out
whether they're succeeding. Which of these you choose to do is up to you and
-your particular infrastructure:
+your particular infrastructure.
-1. **Job runner alerts**: The easiest place to start is with failure alerts
-from the [scheduled job
-runner](https://torsion.org/borgmatic/docs/how-to/set-up-backups/#autopilot) (cron,
-systemd, etc.) that's running borgmatic. But note that if the job doesn't even
-get scheduled (e.g. due to the job runner not running), you probably won't get
-an alert at all! Still, this is a decent first line of defense, especially
-when combined with some of the other approaches below.
-2. **borgmatic error hooks**: The `on_error` hook allows you to run an arbitrary
-command or script when borgmatic itself encounters an error running your
-backups. So for instance, you can run a script to send yourself a text message
-alert. But note that if borgmatic doesn't actually run, this alert won't fire.
-See [error
+### Job runner alerts
+
+The easiest place to start is with failure alerts from the [scheduled job
+runner](https://torsion.org/borgmatic/docs/how-to/set-up-backups/#autopilot)
+(cron, systemd, etc.) that's running borgmatic. But note that if the job
+doesn't even get scheduled (e.g. due to the job runner not running), you
+probably won't get an alert at all! Still, this is a decent first line of
+defense, especially when combined with some of the other approaches below.
+
+### Commands run on error
+
+The `on_error` hook allows you to run an arbitrary command or script when
+borgmatic itself encounters an error running your backups. So for instance,
+you can run a script to send yourself a text message alert. But note that if
+borgmatic doesn't actually run, this alert won't fire. See [error
hooks](https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/#error-hooks)
below for how to configure this.
-4. **borgmatic monitoring hooks**: This feature integrates with monitoring
- services like [Healthchecks](https://healthchecks.io/),
-[Cronitor](https://cronitor.io), [Cronhub](https://cronhub.io), and
-[PagerDuty](https://www.pagerduty.com/) and pings these services whenever
-borgmatic runs. That way, you'll receive an alert when something goes wrong or
-(for certain hooks) the service doesn't hear from borgmatic for a configured
-interval. See [Healthchecks
-hook](https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/#healthchecks...), [Cronitor
-hook](https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/#cronitor-hoo...), [Cronhub
-hook](https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/#cronhub-hook), and
-[PagerDuty hook](https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/#pagerduty-ho...)
+
+### Third-party monitoring services
+
+borgmatic integrates with monitoring services like
+[Healthchecks](https://healthchecks.io/), [Cronitor](https://cronitor.io),
+[Cronhub](https://cronhub.io), and [PagerDuty](https://www.pagerduty.com/) and
+pings these services whenever borgmatic runs. That way, you'll receive an
+alert when something goes wrong or (for certain hooks) the service doesn't
+hear from borgmatic for a configured interval. See [Healthchecks
+hook](https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/#healthchecks...),
+[Cronitor
+hook](https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/#cronitor-hoo...),
+[Cronhub
+hook](https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/#cronhub-hook),
+and [PagerDuty
+hook](https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/#pagerduty-ho...)
below for how to configure this.
-3. **Third-party monitoring software**: You can use traditional monitoring
-software to consume borgmatic JSON output and track when the last
-successful backup occurred. See [scripting
+
+While these services offer different features, you probably only need to use
+one of them at most.
+
+### Third-party monitoring software
+
+You can use traditional monitoring software to consume borgmatic JSON output
+and track when the last successful backup occurred. See [scripting
borgmatic](https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/#scripting-bo...)
-and [related software](https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/#related-soft...)
+and [related
+software](https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/#related-soft...)
below for how to configure this.
-5. **Borg hosting providers**: Most [Borg hosting
+
+### Borg hosting providers
+
+Most [Borg hosting
providers](https://torsion.org/borgmatic/#hosting-providers) include
monitoring and alerting as part of their offering. This gives you a dashboard
to check on all of your backups, and can alert you if the service doesn't hear
from borgmatic for a configured interval.
-6. **borgmatic consistency checks**: While not strictly part of monitoring, if you
-really want confidence that your backups are not only running but are
-restorable as well, you can configure particular [consistency
+
+### Consistency checks
+
+While not strictly part of monitoring, if you really want confidence that your
+backups are not only running but are restorable as well, you can configure
+particular [consistency
checks](https://torsion.org/borgmatic/docs/how-to/deal-with-very-large-backups/#cons...)
or even script full [extract
tests](https://torsion.org/borgmatic/docs/how-to/extract-a-backup/).
@@ -289,12 +313,3 @@
```bash
borgmatic info --archive latest
```
-
-
-## Related documentation
-
- * [Set up backups with borgmatic](https://torsion.org/borgmatic/docs/how-to/set-up-backups/)
- * [Inspect your backups](https://torsion.org/borgmatic/docs/how-to/inspect-your-backups/)
- * [Add preparation and cleanup steps to backups](https://torsion.org/borgmatic/docs/how-to/add-preparation-and-cleanup-steps-...)
- * [Extract a backup](https://torsion.org/borgmatic/docs/how-to/extract-a-backup/)
- * [Develop on borgmatic](https://torsion.org/borgmatic/docs/how-to/develop-on-borgmatic/)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/docs/how-to/set-up-backups.md new/borgmatic-1.5.10/docs/how-to/set-up-backups.md
--- old/borgmatic-1.5.9/docs/how-to/set-up-backups.md 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/docs/how-to/set-up-backups.md 2020-08-21 23:27:47.000000000 +0200
@@ -1,5 +1,9 @@
---
-title: How to set up backups with borgmatic
+title: How to set up backups
+eleventyNavigation:
+ key: Set up backups
+ parent: How-to guides
+ order: 0
---
## Installation
@@ -65,8 +69,7 @@
The main downside of a global install is that borgmatic is less cleanly
separated from the rest of your Python software, and there's the theoretical
possibility of libary conflicts. But if you're okay with that, for instance
-on a relatively dedicated system, then a global install can work out just
-fine.
+on a relatively dedicated system, then a global install can work out fine.
### Other ways to install
@@ -96,8 +99,8 @@
links, but without any tracking scripts or cookies.)
<ul>
- <li class="referral"><a href="https://www.rsync.net/cgi-bin/borg.cgi?campaign=borg&adgroup=borgmatic">rsync.net</a>: Cloud Storage provider with full support for borg and any other SSH/SFTP tool</li>
<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>
+ <li>rsync.net: Cloud Storage provider with full support for borg and any other SSH/SFTP tool</li>
</ul>
## Configuration
@@ -135,9 +138,8 @@
### Encryption
-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
+If 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/stable/quickstart.html#repository-encry...)
@@ -313,15 +315,3 @@
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.
-
-
-## Related documentation
-
- * [Make per-application backups](https://torsion.org/borgmatic/docs/how-to/make-per-application-backups/)
- * [Make backups redundant](https://torsion.org/borgmatic/docs/how-to/make-backups-redundant/)
- * [Deal with very large backups](https://torsion.org/borgmatic/docs/how-to/deal-with-very-large-backups/)
- * [Inspect your backups](https://torsion.org/borgmatic/docs/how-to/inspect-your-backups/)
- * [Monitor your backups](https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/)
- * [Upgrade borgmatic](https://torsion.org/borgmatic/docs/how-to/upgrade/)
- * [borgmatic configuration reference](https://torsion.org/borgmatic/docs/reference/configuration/)
- * [borgmatic command-line reference](https://torsion.org/borgmatic/docs/reference/command-line/)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/docs/how-to/upgrade.md new/borgmatic-1.5.10/docs/how-to/upgrade.md
--- old/borgmatic-1.5.9/docs/how-to/upgrade.md 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/docs/how-to/upgrade.md 2020-08-21 23:27:47.000000000 +0200
@@ -1,5 +1,9 @@
---
title: How to upgrade borgmatic
+eleventyNavigation:
+ key: Upgrade borgmatic
+ parent: How-to guides
+ order: 10
---
## Upgrading
@@ -111,8 +115,3 @@
That's it! borgmatic will continue using your /etc/borgmatic configuration
files.
-
-
-## Related documentation
-
- * [Develop on borgmatic](https://torsion.org/borgmatic/docs/how-to/develop-on-borgmatic/)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/docs/reference/command-line.md new/borgmatic-1.5.10/docs/reference/command-line.md
--- old/borgmatic-1.5.9/docs/reference/command-line.md 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/docs/reference/command-line.md 2020-08-21 23:27:47.000000000 +0200
@@ -1,5 +1,9 @@
---
-title: borgmatic command-line reference
+title: Command-line reference
+eleventyNavigation:
+ key: Command-line reference
+ parent: Reference guides
+ order: 1
---
## borgmatic options
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/docs/reference/configuration.md new/borgmatic-1.5.10/docs/reference/configuration.md
--- old/borgmatic-1.5.9/docs/reference/configuration.md 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/docs/reference/configuration.md 2020-08-21 23:27:47.000000000 +0200
@@ -1,5 +1,9 @@
---
-title: borgmatic configuration reference
+title: Configuration reference
+eleventyNavigation:
+ key: Configuration reference
+ parent: Reference guides
+ order: 0
---
## Configuration file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/docs/reference/index.md new/borgmatic-1.5.10/docs/reference/index.md
--- old/borgmatic-1.5.9/docs/reference/index.md 1970-01-01 01:00:00.000000000 +0100
+++ new/borgmatic-1.5.10/docs/reference/index.md 2020-08-21 23:27:47.000000000 +0200
@@ -0,0 +1,5 @@
+---
+eleventyNavigation:
+ key: Reference guides
+permalink: false
+---
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/setup.py new/borgmatic-1.5.10/setup.py
--- old/borgmatic-1.5.9/setup.py 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/setup.py 2020-08-21 23:27:47.000000000 +0200
@@ -1,6 +1,6 @@
from setuptools import find_packages, setup
-VERSION = '1.5.9'
+VERSION = '1.5.10'
setup(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/tests/unit/commands/test_borgmatic.py new/borgmatic-1.5.10/tests/unit/commands/test_borgmatic.py
--- old/borgmatic-1.5.9/tests/unit/commands/test_borgmatic.py 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/tests/unit/commands/test_borgmatic.py 2020-08-21 23:27:47.000000000 +0200
@@ -54,6 +54,17 @@
list(module.run_configuration('test.yaml', config, arguments))
+def test_run_configuration_calls_hooks_for_extract_action():
+ flexmock(module.borg_environment).should_receive('initialize')
+ flexmock(module.command).should_receive('execute_hook').twice()
+ flexmock(module.dispatch).should_receive('call_hooks').never()
+ flexmock(module).should_receive('run_actions').and_return([])
+ config = {'location': {'repositories': ['foo']}}
+ arguments = {'global': flexmock(monitoring_verbosity=1, dry_run=False), 'extract': flexmock()}
+
+ list(module.run_configuration('test.yaml', config, arguments))
+
+
def test_run_configuration_does_not_trigger_hooks_for_list_action():
flexmock(module.borg_environment).should_receive('initialize')
flexmock(module.command).should_receive('execute_hook').never()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/borgmatic-1.5.9/tests/unit/config/test_collect.py new/borgmatic-1.5.10/tests/unit/config/test_collect.py
--- old/borgmatic-1.5.9/tests/unit/config/test_collect.py 2020-07-23 06:53:55.000000000 +0200
+++ new/borgmatic-1.5.10/tests/unit/config/test_collect.py 2020-08-21 23:27:47.000000000 +0200
@@ -45,6 +45,7 @@
mock_path.should_receive('isdir').with_args('config.yaml').and_return(False)
mock_path.should_receive('isdir').with_args('/etc/borgmatic.d').and_return(True)
mock_path.should_receive('isdir').with_args('/etc/borgmatic.d/foo.yml').and_return(False)
+ flexmock(module.os).should_receive('access').and_return(True)
flexmock(module.os).should_receive('listdir')
flexmock(sys.modules['builtins']).should_receive('sorted').and_return(['foo.yml'])
@@ -62,6 +63,7 @@
mock_path.should_receive('isdir').with_args('/etc/borgmatic.d/foo.yaml').and_return(False)
mock_path.should_receive('isdir').with_args('/etc/borgmatic.d/bar').and_return(True)
mock_path.should_receive('isdir').with_args('/etc/borgmatic.d/baz.yaml').and_return(False)
+ flexmock(module.os).should_receive('access').and_return(True)
flexmock(module.os).should_receive('listdir')
flexmock(sys.modules['builtins']).should_receive('sorted').and_return(
['foo.yaml', 'bar', 'baz.yaml']
@@ -84,6 +86,7 @@
mock_path.should_receive('isdir').with_args('/etc/borgmatic.d/foo.yaml').and_return(False)
mock_path.should_receive('isdir').with_args('/etc/borgmatic.d/bar.yaml~').and_return(False)
mock_path.should_receive('isdir').with_args('/etc/borgmatic.d/baz.txt').and_return(False)
+ flexmock(module.os).should_receive('access').and_return(True)
flexmock(module.os).should_receive('listdir')
flexmock(sys.modules['builtins']).should_receive('sorted').and_return(
['foo.yaml', 'bar.yaml~', 'baz.txt']
@@ -94,6 +97,21 @@
assert config_filenames == ('/etc/borgmatic.d/foo.yaml',)
+def test_collect_config_filenames_skips_permission_denied_directories():
+ config_paths = ('config.yaml', '/etc/borgmatic.d')
+ mock_path = flexmock(module.os.path)
+ mock_path.should_receive('exists').and_return(True)
+ mock_path.should_receive('isdir').with_args('config.yaml').and_return(False)
+ mock_path.should_receive('isdir').with_args('/etc/borgmatic.d').and_return(True)
+ flexmock(module.os).should_receive('access').and_return(False)
+ flexmock(module.os).should_receive('listdir')
+ flexmock(sys.modules['builtins']).should_receive('sorted').and_return(['config.yaml'])
+
+ config_filenames = tuple(module.collect_config_filenames(config_paths))
+
+ assert config_filenames == ('config.yaml',)
+
+
def test_collect_config_filenames_skips_etc_borgmatic_config_dot_yaml_if_it_does_not_exist():
config_paths = ('config.yaml', '/etc/borgmatic/config.yaml')
mock_path = flexmock(module.os.path)