Add documentation navigation links on left side of all documentation pages.

This commit is contained in:
Dan Helfman 2020-08-21 14:27:47 -07:00
parent de61fdef48
commit 79d4888e22
26 changed files with 485 additions and 186 deletions

View file

@ -1,9 +1,11 @@
const pluginSyntaxHighlight = require("@11ty/eleventy-plugin-syntaxhighlight"); const pluginSyntaxHighlight = require("@11ty/eleventy-plugin-syntaxhighlight");
const inclusiveLangPlugin = require("@11ty/eleventy-plugin-inclusive-language"); const inclusiveLangPlugin = require("@11ty/eleventy-plugin-inclusive-language");
const navigationPlugin = require("@11ty/eleventy-navigation");
module.exports = function(eleventyConfig) { module.exports = function(eleventyConfig) {
eleventyConfig.addPlugin(pluginSyntaxHighlight); eleventyConfig.addPlugin(pluginSyntaxHighlight);
eleventyConfig.addPlugin(inclusiveLangPlugin); eleventyConfig.addPlugin(inclusiveLangPlugin);
eleventyConfig.addPlugin(navigationPlugin);
let markdownIt = require("markdown-it"); let markdownIt = require("markdown-it");
let markdownItAnchor = require("markdown-it-anchor"); let markdownItAnchor = require("markdown-it-anchor");

3
NEWS
View file

@ -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". * #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. * #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: * Clarify documentation on configuration overrides, specifically the portion about list syntax:
http://torsion.org/borgmatic/docs/how-to/make-per-application-backups/#configuration-overrides http://torsion.org/borgmatic/docs/how-to/make-per-application-backups/#configuration-overrides
* Clarify documentation overview of monitoring options: * Clarify documentation overview of monitoring options:

View file

@ -71,26 +71,14 @@ borgmatic is powered by [Borg Backup](https://www.borgbackup.org/).
<img src="docs/static/rsyncnet.png" alt="rsync.net" height="60px" style="margin-bottom:20px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img src="docs/static/rsyncnet.png" alt="rsync.net" height="60px" style="margin-bottom:20px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
## How-to guides ## Getting started
* [Set up backups with borgmatic](https://torsion.org/borgmatic/docs/how-to/set-up-backups/) ⬅ *Start here!* Your first step is to [install and configure
* [Make per-application backups](https://torsion.org/borgmatic/docs/how-to/make-per-application-backups/) borgmatic](https://torsion.org/borgmatic/docs/how-to/set-up-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/)
For additional documentation, check out the links above for <a
## Reference guides href="https://torsion.org/borgmatic/#documentation">borgmatic how-to and
reference guides</a>.
* [borgmatic configuration reference](https://torsion.org/borgmatic/docs/reference/configuration/)
* [borgmatic command-line reference](https://torsion.org/borgmatic/docs/reference/command-line/)
## Hosting providers ## Hosting providers

View file

@ -16,6 +16,7 @@ WORKDIR /source
RUN npm install @11ty/eleventy \ RUN npm install @11ty/eleventy \
@11ty/eleventy-plugin-syntaxhighlight \ @11ty/eleventy-plugin-syntaxhighlight \
@11ty/eleventy-plugin-inclusive-language \ @11ty/eleventy-plugin-inclusive-language \
@11ty/eleventy-navigation \
markdown-it \ markdown-it \
markdown-it-anchor \ markdown-it-anchor \
markdown-it-replace-link markdown-it-replace-link

View file

@ -1,8 +1,7 @@
/* Buzzwords */ /* Buzzwords */
@keyframes rainbow { @keyframes rainbow {
0% { background-position: 0% 50%; } 0% { background-position: 0% 50%; }
50% { background-position: 100% 50%; } 100% { background-position: 100% 50%; }
100% { background-position: 0% 50%; }
} }
.buzzword-list, .buzzword-list,
.inlinelist { .inlinelist {
@ -25,6 +24,7 @@
margin: 4px 4px 4px 0; margin: 4px 4px 4px 0;
transition: .15s linear outline; transition: .15s linear outline;
} }
.inlinelist .inlinelist-item.active { .inlinelist .inlinelist-item.active {
background-color: #222; background-color: #222;
color: #fff; color: #fff;
@ -36,6 +36,38 @@
} }
.inlinelist .inlinelist-item code { .inlinelist .inlinelist-item code {
background-color: transparent; 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 { a.buzzword {
text-decoration: underline; text-decoration: underline;
@ -59,44 +91,74 @@ a.buzzword {
.buzzword { .buzzword {
background-color: #f7f7f7; background-color: #f7f7f7;
} }
@media (prefers-color-scheme: dark) {
.buzzword-list li,
.buzzword {
background-color: #080808;
}
}
.inlinelist .inlinelist-item { .inlinelist .inlinelist-item {
background-color: #e9e9e9; 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:hover,
.inlinelist .inlinelist-item:focus, .inlinelist .inlinelist-item:focus,
.buzzword-list li:hover, .buzzword-list li:hover,
.buzzword-list li:focus, .buzzword-list li:focus,
.buzzword:hover, .buzzword:hover,
.buzzword:focus { .buzzword:focus,
.rainbow-active:hover,
.rainbow-active:focus {
position: relative; position: relative;
background-image: linear-gradient(238deg, #ff0000, #ff8000, #ffff00, #80ff00, #00ff00, #00ff80, #00ffff, #0080ff, #0000ff, #8000ff, #ff0080); background-image: linear-gradient(238deg, #ff0000, #ff8000, #ffff00, #80ff00, #00ff00, #00ff80, #00ffff, #0080ff, #0000ff, #8000ff, #ff0080);
background-size: 1200% 1200%; background-size: 1200% 1200%;
background-position: 2% 80%;
color: #fff; color: #fff;
text-shadow: 0 0 2px rgba(0,0,0,.9); 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:hover a,
.inlinelist .inlinelist-item:focus a, .inlinelist .inlinelist-item:focus a,
.buzzword-list li:hover a, .buzzword-list li:hover a,
.buzzword-list li:focus a, .buzzword-list li:focus a,
a.buzzword:hover, a.buzzword:hover,
a.buzzword:focus { a.buzzword:focus,
a.rainbow-active:hover,
a.rainbow-active:focus {
color: #fff; color: #fff;
text-decoration: none; text-decoration: none;
} }
/* @media (prefers-reduced-motion: reduce) {
I wish there were a PE friendly way to do this but media queries dont work work with @supports .inlinelist .inlinelist-item:hover,
@media (prefers-reduced-motion: no-preference) { .inlinelist .inlinelist-item:focus,
.buzzword-list li:hover,
.buzzword-list li:focus,
.buzzword:hover, .buzzword:hover,
.buzzword:focus { .buzzword:focus,
animation: rainbow 1s infinite; .rainbow-active:hover,
.rainbow-active:focus {
animation: none;
} }
}*/ }
.buzzword-list li:hover:after, .buzzword-list li:hover:after,
.buzzword-list li:focus:after, .buzzword-list li:focus:after,
.buzzword:hover:after, .buzzword:hover:after,
.buzzword:focus:after { .buzzword:focus:after {
font-family: system-ui, sans-serif; font-family: system-ui, -apple-system, sans-serif;
content: "Buzzword alert!!!"; content: "Buzzword alert!!!";
position: absolute; position: absolute;
left: 0; left: 0;
@ -124,3 +186,93 @@ main h3 a.buzzword,
main p a.buzzword { main p a.buzzword {
text-decoration: underline; text-decoration: underline;
} }
/* 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;
}

View file

@ -10,7 +10,20 @@
font-weight: 500; font-weight: 500;
margin: 0 0.4285714285714em 0.07142857142857em 0; /* 0 6px 1px 0 /14 */ margin: 0 0.4285714285714em 0.07142857142857em 0; /* 0 6px 1px 0 /14 */
line-height: 1.285714285714; /* 18px /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] { .minilink[href] {
box-shadow: 0 1px 1px 0 rgba(0,0,0,.5); box-shadow: 0 1px 1px 0 rgba(0,0,0,.5);
@ -19,6 +32,12 @@
.minilink[href]:focus { .minilink[href]:focus {
background-color: #bbb; background-color: #bbb;
} }
@media (prefers-color-scheme: dark) {
.minilink[href]:hover,
.minilink[href]:focus {
background-color: #444;
}
}
pre + .minilink { pre + .minilink {
color: #fff; color: #fff;
border-radius: 0 0 0.2857142857143em 0.2857142857143em; /* 4px /14 */ border-radius: 0 0 0.2857142857143em 0.2857142857143em; /* 4px /14 */
@ -35,6 +54,54 @@ p.minilink {
margin-left: 2em; margin-left: 2em;
margin-bottom: 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-] { .minilink + pre[class*=language-] {
clear: both; clear: both;
} }
.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;
}

View file

@ -1,63 +1,111 @@
.elv-toc { .elv-toc {
font-size: 1rem; /* Reset */ 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 */ @media (min-width: 64em) { /* 1024px */
.elv-toc { .elv-toc {
position: absolute; position: absolute;
left: -17rem; left: 3rem;
width: 16rem; width: 16rem;
z-index: 1;
}
.elv-toc details > summary {
margin-top: 0;
}
.js .elv-toc details > summary {
display: none;
} }
} }
.elv-toc-list { .elv-toc-list {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
padding-left: 0; padding-left: 0;
padding-right: 0; padding-right: 0;
margin: 0 0 2.5em;
list-style: none; list-style: none;
} }
.elv-toc-list li {
font-size: 0.9375em; /* 15px /16 */
line-height: 1.466666666667; /* 22px /15 */
}
/* Nested lists */ /* Nested lists */
.elv-toc-list ul { .elv-toc-list ul {
padding: 0; padding: 0 0 .75em 0;
display: none; margin: 0;
margin-bottom: 1.5em;
list-style: none; 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 */ /* Hide inactive menus 3 or more deep */
.elv-toc-list ul { .elv-toc-list ul ul > li:not(.elv-toc-active) > ul > li:not(.elv-toc-active) {
display: block; display: none;
}
} }
/* List items */ /* List items */
.elv-toc summary,
.elv-toc-list a {
padding: .15em .25em;
}
.elv-toc-list a {
display: block;
}
.elv-toc-list a:not(:hover) { .elv-toc-list a:not(:hover) {
text-decoration: none; text-decoration: none;
} }
.elv-toc-list li { .elv-toc-list li {
padding-top: 0; margin: 0;
padding-bottom: 0; padding: 0;
margin: .1em 0 .5em; }
.elv-toc-list > li {
flex-grow: 1;
flex-basis: 14.375rem; /* 230px /16 */
} }
/* Top level links */ /* Top level links */
.elv-toc-list > li > a { .elv-toc-list > li > a {
font-weight: 400;
font-size: 1.0625em; /* 17px /16 */
color: #222; 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 */ /* Active links */
.elv-toc-list li.elv-toc-active > a { .elv-toc-list li.elv-toc-active > a {
font-weight: 700; background-color: #dff7ff;
text-decoration: underline;
} }
.elv-toc-active > a:after { @media (prefers-color-scheme: dark) {
content: " ⬅"; .elv-toc-list li.elv-toc-active > a {
line-height: .5; background-color: #353535;
}
} }
.elv-toc-list ul .elv-toc-active > a:after {
content: "";
}
/* Show only active nested lists */ /* Show only active nested lists */
.elv-toc-list ul.elv-toc-active, .elv-toc-list ul.elv-toc-active,
.elv-toc-list li.elv-toc-active > ul { .elv-toc-list li.elv-toc-active > ul {
display: block; display: block;
} }
/* Footer catgory navigation */
.elv-cat-list-active {
font-weight: 600;
}

View file

@ -234,6 +234,9 @@ pre + .note {
max-width: 42rem; max-width: 42rem;
clear: both; clear: both;
} }
header.elv-layout {
padding: 0 1rem;
}
footer.elv-layout { footer.elv-layout {
margin-bottom: 5em; margin-bottom: 5em;
} }
@ -242,7 +245,7 @@ footer.elv-layout {
} }
@media (min-width: 64em) { /* 1024px */ @media (min-width: 64em) { /* 1024px */
.elv-layout-toc { .elv-layout-toc {
margin-left: 18rem; padding-left: 15rem;
max-width: 60rem; max-width: 60rem;
margin-right: 1rem; margin-right: 1rem;
position: relative; position: relative;
@ -254,7 +257,6 @@ footer.elv-layout {
/* Header */ /* Header */
.elv-header { .elv-header {
color: #222;
position: relative; position: relative;
} }
.elv-header-default { .elv-header-default {
@ -262,6 +264,13 @@ footer.elv-layout {
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
align-items: 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:before,
.elv-header-docs:after { .elv-header-docs:after {
@ -272,53 +281,89 @@ footer.elv-layout {
clear: both; clear: both;
} }
/* Header Hero */ /* Header Hero */
.elv-hero img { .elv-hero {
max-width: 80vw; background-color: #222;
max-height: 60vh;
} }
@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 { .elv-header-docs .elv-hero {
float: left; 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; height: 3em;
} }
@media (min-width: 37.5em) { /* 600px */ @media (min-width: 43.75em) { /* 700px */
.elv-header-docs .elv-hero img { .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 */ width: 4.303125em; /* 68.85px /16 */
height: 6em; height: 6em;
} }
} }
/* Header Possum */ /* Header Possum */
.elv-possum-anchor {
display: block;
}
.elv-possum { .elv-possum {
display: none;
position: absolute; position: absolute;
right: 1em; right: .5rem;
top: 1em; top: 1rem;
width: 16vmin; transition: .3s opacity ease-out;
} }
@media (min-width: 31.25em) { /* 500px */ .elv-header-docs .elv-possum {
.elv-possum { width: 15vw;
display: block; max-width: 6.25rem; /* 100px /16 */
}
} }
.elv-header-default {
/* Header Heading */ overflow: hidden;
.elv-hed {
font-size: 3em;
margin-top: 1.5em;
margin-bottom: .25em;
text-align: center;
text-transform: none;
} }
.elv-header-docs .elv-hed { .elv-header-default .elv-possum {
font-size: 2.3em; pointer-events: none;
margin: 0; width: auto;
text-align: left; height: calc((60vh - 2rem) / 1.6);
top: 36%;
left: 1vw;
right: auto;
animation-duration: 180s;
animation-name: balloonFloat;
} }
@media (min-width: 37.5em) { /* 600px */ @media (prefers-reduced-motion: reduce) {
.elv-header-docs .elv-hed { .elv-header-default .elv-possum {
font-size: 3em; display: none;
} }
} }

View file

@ -6,9 +6,27 @@ headerClass: elv-header-default
{% include "header.njk" %} {% include "header.njk" %}
<main class="elv-layout{% if layoutClass %} {{ layoutClass }}{% endif %}"> <main class="elv-layout{% if layoutClass %} {{ layoutClass }}{% endif %}">
<article> <div id="documentation" class="elv-toc">
{{ content | safe }} <div>
{% set navPages = collections.all | eleventyNavigation %}
{% macro renderNavListItem(entry) -%}
<li{% if entry.url == page.url %} class="elv-toc-active"{% endif %}>
<a {% if entry.url %}href="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' %} <ul class="elv-toc-list">
</article> {%- for entry in navPages %}{{ renderNavListItem(entry) }}{%- endfor -%}
</ul>
</div>
</div>
{{ content | safe }}
{% include 'components/suggestion-form.html' %}
</main> </main>

View file

@ -1,5 +1,9 @@
--- ---
title: How to add preparation and cleanup steps to backups 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 ## 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 injection or privilege escalation, do not forget to set secure permissions
on borgmatic configuration files (`chmod 0600`) and scripts (`chmod 0700`) on borgmatic configuration files (`chmod 0600`) and scripts (`chmod 0700`)
invoked by hooks. 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/)

View file

@ -1,5 +1,9 @@
--- ---
title: How to backup to a removable drive or an intermittent server 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 ## 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`, * The soft failure feature also works for `before_prune`, `after_prune`,
`before_check`, and `after_check` hooks. But it is not implemented for `before_check`, and `after_check` hooks. But it is not implemented for
`before_everything` or `after_everything`. `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/)

View file

@ -1,5 +1,9 @@
--- ---
title: How to backup your databases title: How to backup your databases
eleventyNavigation:
key: Backup your databases
parent: How-to guides
order: 7
--- ---
## Database dump hooks ## Database dump hooks
@ -217,11 +221,3 @@ hooks:
See Limitations above about `read_special`. You may need to exclude certain See Limitations above about `read_special`. You may need to exclude certain
paths with named pipes, block devices, or character devices on which borgmatic paths with named pipes, block devices, or character devices on which borgmatic
is hanging. 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/)

View file

@ -1,5 +1,9 @@
--- ---
title: How to deal with very large backups title: How to deal with very large backups
eleventyNavigation:
key: Deal with very large backups
parent: How-to guides
order: 3
--- ---
## Biggish data ## 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 This should make the client keep the connection alive while validating
backups. backups.
## Related documentation
* [Set up backups with borgmatic](https://torsion.org/borgmatic/docs/how-to/set-up-backups/)

View file

@ -1,5 +1,9 @@
--- ---
title: How to develop on borgmatic title: How to develop on borgmatic
eleventyNavigation:
key: Develop on borgmatic
parent: How-to guides
order: 11
--- ---
## Source code ## 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 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 currently auto-reload, so you'll need to stop it and re-run it for any
additional documentation changes to take effect. additional documentation changes to take effect.
## Related documentation
* [Inspect your backups](https://torsion.org/borgmatic/docs/how-to/inspect-your-backups/)

View file

@ -1,5 +1,9 @@
--- ---
title: How to extract a backup title: How to extract a backup
eleventyNavigation:
key: Extract a backup
parent: How-to guides
order: 6
--- ---
## Extract ## Extract
@ -132,11 +136,3 @@ When you're all done exploring your files, unmount your mount point. No
```bash ```bash
borgmatic umount --mount-point /mnt 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/)

5
docs/how-to/index.md Normal file
View file

@ -0,0 +1,5 @@
---
eleventyNavigation:
key: How-to guides
permalink: false
---

View file

@ -1,5 +1,9 @@
--- ---
title: How to inspect your backups title: How to inspect your backups
eleventyNavigation:
key: Inspect your backups
parent: How-to guides
order: 4
--- ---
## Backup progress ## 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 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 [logrotate](https://wiki.archlinux.org/index.php/Logrotate). Also, there is a
`--log-file-verbosity` flag to customize the log file's log level. `--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/)

View file

@ -1,5 +1,9 @@
--- ---
title: How to make backups redundant title: How to make backups redundant
eleventyNavigation:
key: Make backups redundant
parent: How-to guides
order: 2
--- ---
## Multiple repositories ## Multiple repositories
@ -38,10 +42,3 @@ potentially across providers.
See [Borg repository URLs See [Borg repository URLs
documentation](https://borgbackup.readthedocs.io/en/stable/usage/general.html#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. 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/)

View file

@ -1,5 +1,9 @@
--- ---
title: How to make per-application backups title: How to make per-application backups
eleventyNavigation:
key: Make per-application backups
parent: How-to guides
order: 1
--- ---
## Multiple backup configurations ## 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 Be sure to quote your overrides if they contain spaces or other characters
that your shell may interpret. 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/)

View file

@ -1,5 +1,9 @@
--- ---
title: How to monitor your backups title: How to monitor your backups
eleventyNavigation:
key: Monitor your backups
parent: How-to guides
order: 5
--- ---
## Monitoring and alerting ## Monitoring and alerting
@ -309,12 +313,3 @@ automated scripts. Here's an example:
```bash ```bash
borgmatic info --archive latest 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/)

View file

@ -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 ## Installation
@ -65,8 +69,7 @@ sudo pip3 install --upgrade borgmatic
The main downside of a global install is that borgmatic is less cleanly 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 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 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 on a relatively dedicated system, then a global install can work out fine.
fine.
### Other ways to install ### 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 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 with the C library present, so you don't need to go out of your way to install
it. 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/)

View file

@ -1,5 +1,9 @@
--- ---
title: How to upgrade borgmatic title: How to upgrade borgmatic
eleventyNavigation:
key: Upgrade borgmatic
parent: How-to guides
order: 10
--- ---
## Upgrading ## Upgrading
@ -111,8 +115,3 @@ sudo pip3 install --user borgmatic
That's it! borgmatic will continue using your /etc/borgmatic configuration That's it! borgmatic will continue using your /etc/borgmatic configuration
files. files.
## Related documentation
* [Develop on borgmatic](https://torsion.org/borgmatic/docs/how-to/develop-on-borgmatic/)

View file

@ -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 ## borgmatic options

View file

@ -1,5 +1,9 @@
--- ---
title: borgmatic configuration reference title: Configuration reference
eleventyNavigation:
key: Configuration reference
parent: Reference guides
order: 0
--- ---
## Configuration file ## Configuration file

5
docs/reference/index.md Normal file
View file

@ -0,0 +1,5 @@
---
eleventyNavigation:
key: Reference guides
permalink: false
---

View file

@ -1,6 +1,6 @@
from setuptools import find_packages, setup from setuptools import find_packages, setup
VERSION = '1.5.10.dev0' VERSION = '1.5.10'
setup( setup(