diff --git a/docs/10_Welcome.md b/docs/10_Welcome.md new file mode 100644 index 0000000000000000000000000000000000000000..c69a298c6420f5d159fd3bea30f2878a58047498 --- /dev/null +++ b/docs/10_Welcome.md @@ -0,0 +1,20 @@ +# IML BACKUP # + +Backup scripts using restic or duplicity. + +Runs on Linux: CentOS, Debian, Manjaro, Ubuntu. + +* Free software. GNU GPL 3.0 +* Source: <https://git-repo.iml.unibe.ch/iml-open-source/iml-backup/> +* Restic: <https://restic.net/> +* Duplicity: <http://duplicity.nongnu.org/> + +# Why # + +We rollout our linux systems automatically. We try not to configure third systems +for backup, monitoring and other general services. + +* **No central backup server**: We don't want to configure a backup set on a "central backup server" for each new node. Each new node pushes its own backup data to a given backup target.<br><br> +* We want to **push data from a private network** to target; a central backup server would not reach some clients without sattelite systems.<br><br> +* **Automatic backup of databases**: A set of database backup scripts detects exsiting locally running database services and puts a compressed dump file per database scheme to a local backup directory.<br><br> +* We want to use a **local encryption** of all data to backup. diff --git a/docs/20_Features.md b/docs/20_Features.md new file mode 100644 index 0000000000000000000000000000000000000000..4539f9e452df37ae2f132a55dc9573f44317b0d4 --- /dev/null +++ b/docs/20_Features.md @@ -0,0 +1,40 @@ +# Database backup # + +Before starting the backup of local files to a backup target there is a step to dump a local +database. If one of the supported database types is detected it will be dumped. + +We try to implement the approach "zero config" if possible. + +Supported local databases for backup and restore: + +* Mysql/ Mariadb (requires mysql_dump) +* postgres (pg_dump) +* sqlite (by naming files with full path in a config) + +Limited support: + +* couchdb (using a config with naming convention) +* ldap (without restore so far) + +# Backup tools # + +## Duplicity ## + +* Incremental and full backups +* encrypted backups using GPG +* set size of backup volumes +* delete old backups by a given time limit +* several backup targets (currently supported protocols: scp:// rsync:// and file://) + +## Restic ## + +* creates an initial full backup - and then never again. +* encrypts data +* deduplicates files +* delete backups by rules to keep a count of hourly, daily, weekly, mothly, yearly backups +* several backup targets (currently supported protocols: sftp:// https:// and file://) + +# Control simoultanous backups # + +As an optional feature you can control the count simultanous written backups. +This requires additional effort next to the client installation. diff --git a/docs/config.json b/docs/config.json new file mode 100644 index 0000000000000000000000000000000000000000..82e651e3bc03fef9aa02832f690901dca2032be7 --- /dev/null +++ b/docs/config.json @@ -0,0 +1,19 @@ +{ + "title": "IML Backup", + "author": "Axel Hahn", + "ignore": { + "files": ["30_PHP-client/Plugins/Checks/_skeleton.md"], + "folders": ["99_Not_Ready"] + }, + "html": { + "auto_toc": true, + "date_modified": false, + "jump_buttons": true, + "edit_on_github_": "iml-it/appmonitor/tree/master/docs", + "links": { + "Git Repo": "https://git-repo.iml.unibe.ch/iml-open-source/iml-backup" + }, + "theme": "daux-blue", + "search": true + } +} \ No newline at end of file diff --git a/docs/style.css b/docs/style.css new file mode 100644 index 0000000000000000000000000000000000000000..739b9e08a9dbf2634de15a3db7ad108e44abb18c --- /dev/null +++ b/docs/style.css @@ -0,0 +1,160 @@ +/* + + patch css elements of daux.io blue theme + +*/ + + +/* ---------- vars ---------- */ + +:root{ + + /* background colors */ + --bg:#fff; + --bg-navlinkactive:#f4f4f4; + --bg-navlinkactive: linear-gradient(-90deg,#fff, #f0f0f0 30%); + --bg-pre:#f8f8f8; + + /* foreground colors */ + --color: #234; + --navlinkactive:#f33; + --title: #aaa; + + --link:#12a; + --toclink:#666; + + --h1: #666; + --h1-bottom: 1px solid #eee; + --h2: #888; + --h3: #aaa; + +} + +/* ---------- tags ---------- */ + +body, *{color: var(--color); } + +a{color: var(--link);} +a:hover{opacity: 0.7;} + +h1>a{ color:var(--title);} +_h1:nth-child(1){position: fixed; background: var(--bg); box-shadow: 0 0 1em #ccc; padding: 0 1em} +h1:nth-child(1)>a{ color:var(--navlinkactive); } + +.s-content h1{color: var(--h1); font-size: 200%; font-weight:bold; margin-top: 2em; border-bottom: var(--h1-bottom);} +.s-content h2{color: var(--h2); font-size: 160%; } +.s-content h3{color: var(--h3); font-size: 140%; } +.s-content h4{margin: 0; font-size: 100%; text-align: center; background-color: rgba(0,0,0,0.05);padding: 0.3em;} + +.s-content pre{ + background: var(--bg-pre); +} + +/* ---------- classes ---------- */ + +.required{color:#a42;} +.optional{color:#888;} + + +/* ----- top left */ +.Brand, +.Columns__left { + background-color: var(--bg); + border-right: 0px solid #e7e7e9; + color: var(--color); +} +.Brand{font-size: 200%; + background: #fafafa; + background: linear-gradient(-10deg,#fff 50%, #ddd); +} + +/* ----- Navi left */ + +.Nav a:hover{ + background: none; + color: var(--navlinkactive) !important; +} + +.Nav__item--active { + border-right_: 0.3em solid var(--navlinkactive); +} +.Nav__item--active > a{ + background: var(--bg-navlinkactive); + color: var(--navlinkactive); +} +.Nav .Nav .Nav__item--active a { + color: var(--navlinkactive); +} +.Nav .Nav .Nav__item a { + opacity: 1; +} +.Nav__item--open > a { + background-color: var(--bg); +} + +.Nav a[href*="__Welcome"]{ + background: url("/icons/house.png") no-repeat 10px 4px ; + padding-left: 40px; +} +.Nav a[href*="__How_does_it_work"]{ + background: url("/icons/light-bulb.png") no-repeat 10px 4px ; + padding-left: 40px; +} + + + + +/* ---------- classes ---------- */ + +/* FIX smaller fnt size in tables */ +.s-content table { + font-size: 1em; +} + + +/* TOC */ +@media(min-width:1700px){ + .TableOfContentsContainer{ + position: fixed; + right: 2em; + top: 1em; + } +} + +.TableOfContentsContainer{ + border-top-left-radius: 1em; + background-color: var(--bg); + border-left: 2px solid rgba(0,0,0,0.05); + padding: 0em; +} +.TableOfContentsContainer__content { + + border: none; + _border-left: 3px solid #eee; + + font-size: 0.5em; + +} +ul.TableOfContents ul{ + list-style-type: none; + padding-left: 1em; +} +.TableOfContentsContainer a{ color:var(--toclink);} + +.TableOfContentsContainer__content > .TableOfContents > li + li { + border-top: none; +} +.TableOfContentsContainer__content > .TableOfContents > li { + border-bottom: 1px dashed #ddd; +} + +/* pager - prev .. next */ +.s-content{ + margin-bottom: 6em; +} +.Pager{ + border-top: 1px dashed #aaa; margin: 0; padding: 1em; +} +.Pager a{ + color:var(--navlinkactive); +}