meta data for this page
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| linux:backup:duply [2017/06/14 08:51] – niziak | linux:backup:duply [2021/05/10 13:57] (current) – niziak | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Duply ====== | ||
| + | |||
| ====== Installation ====== | ====== Installation ====== | ||
| <code bash> | <code bash> | ||
| Line 8: | Line 10: | ||
| <code bash> | <code bash> | ||
| Profile file '' | Profile file '' | ||
| + | |||
| + | IMPORTANT | ||
| + | Copy the whole profile folder after the first backup to a safe place. | ||
| + | (e.g. after a system crash). Keep access to these files restricted as they contain all information (gpg data, ftp data) to access and modify your backups. | ||
| + | |||
| + | | ||
| + | |||
| Generate random password: | Generate random password: | ||
| Line 59: | Line 68: | ||
| **Note:** duply dosn't make any cleanup or deletions during '' | **Note:** duply dosn't make any cleanup or deletions during '' | ||
| - | To perform maintenance of old backup accordign to '' | + | To perform maintenance of old backup accordign to '' |
| duply with '' | duply with '' | ||
| + | |||
| + | Example options: | ||
| + | * MAX_FULL_BACKUPS=2 | ||
| + | * MAX_FULLS_WITH_INCRS=1 | ||
| + | Will keep 2 full backup sets, but only one with increments (last one). | ||
| + | |||
| + | Sometimes it is good to check whether incremental backups are meaningful (it depends on type of data stored). If command | ||
| + | <code bash> | ||
| + | can be short e.g. MAX_FULLBKP_AGE=7D | ||
| + | |||
| ====== Usage ====== | ====== Usage ====== | ||
| Line 75: | Line 94: | ||
| <file bash> | <file bash> | ||
| + | #!/bin/bash -ue | ||
| + | set -o pipefail | ||
| + | trap " | ||
| + | |||
| duply gitlab backup | duply gitlab backup | ||
| duply gitlab purge --force # list outdated backup archives and delete them | duply gitlab purge --force # list outdated backup archives and delete them | ||
| + | duply gitlab-to-grinnux purgeIncr --force | ||
| + | duply gitlab-to-grinnux purgeFull --force | ||
| duply gitlab cleanup --extra-clean --force > /dev/null # list broken backup files and delete them | duply gitlab cleanup --extra-clean --force > /dev/null # list broken backup files and delete them | ||
| + | banner ALL OK | ||
| </ | </ | ||
| + | ===== shell function ===== | ||
| + | <code bash> | ||
| + | #!/bin/bash -ueE | ||
| + | set -o pipefail | ||
| + | trap " | ||
| + | run_duply() { | ||
| + | echo " | ||
| + | duply ${1} backup | ||
| + | echo " | ||
| + | duply ${1} cleanup --extra-clean --force | ||
| + | duply ${1} purge --force | ||
| + | duply ${1} purgeIncr --force | ||
| + | duply ${1} purgeFull --force | ||
| + | echo " | ||
| + | duply ${1} cleanup --extra-clean --force > /dev/null | ||
| + | echo " | ||
| + | banner ${1} OK | ||
| + | } | ||
| + | </ | ||
| ====== SFTP and rbash ====== | ====== SFTP and rbash ====== | ||
| Line 126: | Line 171: | ||
| ====== Issues ====== | ====== Issues ====== | ||
| + | |||
| + | ==== no acceptable kex algorithm ==== | ||
| ssh: Exception: Incompatible ssh peer (no acceptable kex algorithm) | ssh: Exception: Incompatible ssh peer (no acceptable kex algorithm) | ||
| Line 143: | Line 190: | ||
| </ | </ | ||
| + | ==== can't be deleted ==== | ||
| + | <code bash> duply mybackup purge --force</ | ||
| + | < | ||
| + | Last full backup date: Wed May 24 01:11:54 2017 | ||
| + | There are backup set(s) at time(s): | ||
| + | Thu Nov 24 01:05:26 2016 | ||
| + | Fri Nov 25 01:09:43 2016 | ||
| + | Sat Nov 26 01:10:50 2016 | ||
| + | Which can't be deleted because newer sets depend on them. | ||
| + | No old backup sets found, nothing deleted. | ||
| + | </ | ||
| + | Solution is to run: | ||
| + | <code bash> duply mybackup purgeIncr --force</ | ||
| + | <code bash> duply mybackup purgeFull --force</ | ||