diff --git a/.eleventy.js b/.eleventy.js index cc5d9f1ff..94d671c28 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -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 --git a/NEWS b/NEWS index 8d3a52131..6b1d23ae5 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,7 @@ -1.5.10.dev0 +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: diff --git a/README.md b/README.md index 1f7c3a93e..65a857b5b 100644 --- a/README.md +++ b/README.md @@ -71,26 +71,14 @@ borgmatic is powered by [Borg Backup](https://www.borgbackup.org/). rsync.net      -## How-to guides +## Getting started - * [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-to-backups/) - * [Backup to a removable drive or an intermittent server](https://torsion.org/borgmatic/docs/how-to/backup-to-a-removable-drive-or-an-intermittent-server/) - * [Upgrade borgmatic](https://torsion.org/borgmatic/docs/how-to/upgrade/) - * [Develop on borgmatic](https://torsion.org/borgmatic/docs/how-to/develop-on-borgmatic/) +Your first step is to [install and configure +borgmatic](https://torsion.org/borgmatic/docs/how-to/set-up-backups/). - -## Reference guides - - * [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 borgmatic how-to and +reference guides. ## Hosting providers diff --git a/docs/Dockerfile b/docs/Dockerfile index 42bfade22..56857ed60 100644 --- a/docs/Dockerfile +++ b/docs/Dockerfile @@ -16,6 +16,7 @@ WORKDIR /source 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 --git a/docs/_includes/components/lists.css b/docs/_includes/components/lists.css index 202e711a5..d8bdc9972 100644 --- a/docs/_includes/components/lists.css +++ b/docs/_includes/components/lists.css @@ -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 @@ a.buzzword { .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 h2 a.buzzword, 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 --git a/docs/_includes/components/minilink.css b/docs/_includes/components/minilink.css index 916a4de02..395b3b95e 100644 --- a/docs/_includes/components/minilink.css +++ b/docs/_includes/components/minilink.css @@ -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 @@ p.minilink { 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 --git a/docs/_includes/components/toc.css b/docs/_includes/components/toc.css index c70a08b09..6fa4252f3 100644 --- a/docs/_includes/components/toc.css +++ b/docs/_includes/components/toc.css @@ -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; } -.elv-toc-active > a:after { - content: " ⬅"; - line-height: .5; +@media (prefers-color-scheme: dark) { + .elv-toc-list li.elv-toc-active > a { + background-color: #353535; + } } +.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 --git a/docs/_includes/index.css b/docs/_includes/index.css index 7393f7e20..40bf5d636 100644 --- a/docs/_includes/index.css +++ b/docs/_includes/index.css @@ -234,6 +234,9 @@ pre + .note { max-width: 42rem; clear: both; } +header.elv-layout { + padding: 0 1rem; +} footer.elv-layout { margin-bottom: 5em; } @@ -242,7 +245,7 @@ footer.elv-layout { } @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 @@ footer.elv-layout { /* Header */ .elv-header { - color: #222; position: relative; } .elv-header-default { @@ -262,6 +264,13 @@ footer.elv-layout { 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 @@ footer.elv-layout { 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-docs .elv-hero img { +.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 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; + right: .5rem; + top: 1rem; + transition: .3s opacity ease-out; } -@media (min-width: 31.25em) { /* 500px */ - .elv-possum { - display: block; - } +.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-default { + overflow: hidden; } -.elv-header-docs .elv-hed { - font-size: 2.3em; - margin: 0; - text-align: left; +.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 (min-width: 37.5em) { /* 600px */ - .elv-header-docs .elv-hed { - font-size: 3em; +@media (prefers-reduced-motion: reduce) { + .elv-header-default .elv-possum { + display: none; } } diff --git a/docs/_includes/layouts/main.njk b/docs/_includes/layouts/main.njk index fc320ea33..e1d839aac 100644 --- a/docs/_includes/layouts/main.njk +++ b/docs/_includes/layouts/main.njk @@ -6,9 +6,27 @@ headerClass: elv-header-default {% include "header.njk" %}
-
- {{ content | safe }} +
+
+ {% set navPages = collections.all | eleventyNavigation %} + {% macro renderNavListItem(entry) -%} + + {{ entry.title }} + {%- if entry.children.length -%} +
    + {%- for child in entry.children %}{{ renderNavListItem(child) }}{% endfor -%} +
+ {%- endif -%} + + {%- endmacro %} - {% include 'components/suggestion-form.html' %} -
+ + + + + {{ content | safe }} + + {% include 'components/suggestion-form.html' %}
diff --git a/docs/how-to/add-preparation-and-cleanup-steps-to-backups.md b/docs/how-to/add-preparation-and-cleanup-steps-to-backups.md index 41872ab17..0e10e76ea 100644 --- a/docs/how-to/add-preparation-and-cleanup-steps-to-backups.md +++ b/docs/how-to/add-preparation-and-cleanup-steps-to-backups.md @@ -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 @@ with the user permissions of borgmatic itself. So to prevent potential shell 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 --git a/docs/how-to/backup-to-a-removable-drive-or-an-intermittent-server.md b/docs/how-to/backup-to-a-removable-drive-or-an-intermittent-server.md index e2e5a1758..90f096b3b 100644 --- a/docs/how-to/backup-to-a-removable-drive-or-an-intermittent-server.md +++ b/docs/how-to/backup-to-a-removable-drive-or-an-intermittent-server.md @@ -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 @@ There are some caveats you should be aware of with this feature. * 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-to-backups/) - * [Monitor your backups](https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/) diff --git a/docs/how-to/backup-your-databases.md b/docs/how-to/backup-your-databases.md index d7a22a7e8..8733c90ee 100644 --- a/docs/how-to/backup-your-databases.md +++ b/docs/how-to/backup-your-databases.md @@ -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 @@ hooks: 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-to-backups/) - * [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 --git a/docs/how-to/deal-with-very-large-backups.md b/docs/how-to/deal-with-very-large-backups.md index 4076c3884..014a687cd 100644 --- a/docs/how-to/deal-with-very-large-backups.md +++ b/docs/how-to/deal-with-very-large-backups.md @@ -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 @@ the following to the `~/.ssh/config` file on the client: 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 --git a/docs/how-to/develop-on-borgmatic.md b/docs/how-to/develop-on-borgmatic.md index 9e9fee72c..461c6cb40 100644 --- a/docs/how-to/develop-on-borgmatic.md +++ b/docs/how-to/develop-on-borgmatic.md @@ -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 @@ http://localhost:8080 to view the documentation with your changes. 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 --git a/docs/how-to/extract-a-backup.md b/docs/how-to/extract-a-backup.md index bc0bb233b..c0b2f582c 100644 --- a/docs/how-to/extract-a-backup.md +++ b/docs/how-to/extract-a-backup.md @@ -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 @@ When you're all done exploring your files, unmount your mount point. No ```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 --git a/docs/how-to/index.md b/docs/how-to/index.md new file mode 100644 index 000000000..0807b4c58 --- /dev/null +++ b/docs/how-to/index.md @@ -0,0 +1,5 @@ +--- +eleventyNavigation: + key: How-to guides +permalink: false +--- diff --git a/docs/how-to/inspect-your-backups.md b/docs/how-to/inspect-your-backups.md index d960303cc..be3ae5651 100644 --- a/docs/how-to/inspect-your-backups.md +++ b/docs/how-to/inspect-your-backups.md @@ -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 @@ Note that if you use the `--log-file` flag, you are responsible for rotating 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-to-backups/) - * [Develop on borgmatic](https://torsion.org/borgmatic/docs/how-to/develop-on-borgmatic/) diff --git a/docs/how-to/make-backups-redundant.md b/docs/how-to/make-backups-redundant.md index b001e32da..d4c344106 100644 --- a/docs/how-to/make-backups-redundant.md +++ b/docs/how-to/make-backups-redundant.md @@ -1,5 +1,9 @@ --- title: How to make backups redundant +eleventyNavigation: + key: Make backups redundant + parent: How-to guides + order: 2 --- ## Multiple repositories @@ -38,10 +42,3 @@ potentially across providers. See [Borg repository URLs documentation](https://borgbackup.readthedocs.io/en/stable/usage/general.html#repository-urls) 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-intermittent-server/) diff --git a/docs/how-to/make-per-application-backups.md b/docs/how-to/make-per-application-backups.md index b0c257b03..486c7999d 100644 --- a/docs/how-to/make-per-application-backups.md +++ b/docs/how-to/make-per-application-backups.md @@ -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 @@ -161,9 +165,3 @@ 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 --git a/docs/how-to/monitor-your-backups.md b/docs/how-to/monitor-your-backups.md index 66caae19f..d63a9b73f 100644 --- a/docs/how-to/monitor-your-backups.md +++ b/docs/how-to/monitor-your-backups.md @@ -1,5 +1,9 @@ --- title: How to monitor your backups +eleventyNavigation: + key: Monitor your backups + parent: How-to guides + order: 5 --- ## Monitoring and alerting @@ -309,12 +313,3 @@ automated scripts. Here's an example: ```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-to-backups/) - * [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 --git a/docs/how-to/set-up-backups.md b/docs/how-to/set-up-backups.md index a3bf1b78f..4c30bc23b 100644 --- a/docs/how-to/set-up-backups.md +++ b/docs/how-to/set-up-backups.md @@ -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 @@ sudo pip3 install --upgrade borgmatic 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 @@ -312,15 +315,3 @@ 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. - - -## 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 --git a/docs/how-to/upgrade.md b/docs/how-to/upgrade.md index b99dea9bc..867fe2627 100644 --- a/docs/how-to/upgrade.md +++ b/docs/how-to/upgrade.md @@ -1,5 +1,9 @@ --- title: How to upgrade borgmatic +eleventyNavigation: + key: Upgrade borgmatic + parent: How-to guides + order: 10 --- ## Upgrading @@ -111,8 +115,3 @@ sudo pip3 install --user borgmatic 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 --git a/docs/reference/command-line.md b/docs/reference/command-line.md index eca09d322..293b824ca 100644 --- a/docs/reference/command-line.md +++ b/docs/reference/command-line.md @@ -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 --git a/docs/reference/configuration.md b/docs/reference/configuration.md index 550c0f6cc..69880c622 100644 --- a/docs/reference/configuration.md +++ b/docs/reference/configuration.md @@ -1,5 +1,9 @@ --- -title: borgmatic configuration reference +title: Configuration reference +eleventyNavigation: + key: Configuration reference + parent: Reference guides + order: 0 --- ## Configuration file diff --git a/docs/reference/index.md b/docs/reference/index.md new file mode 100644 index 000000000..c0d39b5ed --- /dev/null +++ b/docs/reference/index.md @@ -0,0 +1,5 @@ +--- +eleventyNavigation: + key: Reference guides +permalink: false +--- diff --git a/setup.py b/setup.py index 3ce06788c..bf10778bb 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,6 @@ from setuptools import find_packages, setup -VERSION = '1.5.10.dev0' +VERSION = '1.5.10' setup(