Duply: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
Zeile 3: | Zeile 3: | ||
== Beschreibung == | == Beschreibung == | ||
duply ist ein Shell-Frontend für duplicity, das die Verwendung vereinfacht, indem Einstellungen für jedes Backup in Profilen verwaltet werden | duply ist ein Shell-Frontend für duplicity, das die Verwendung vereinfacht, indem Einstellungen für jedes Backup in Profilen verwaltet werden | ||
* Es unterstützt die Ausführung von mehreren Befehlen als Stapelverarbeitung | |||
* Damit sind einzeilige cron-Einträge möglich und der Benutzer kann Skripte verwenden, die vor oder nach dem Backup ausgeführt werden | |||
* Alle duplicity-Backends werden unterstützt | |||
* Der frühere Name von duply war ftplicity | |||
; Vereinfacht die Ausführung von Duplicity | ; Vereinfacht die Ausführung von Duplicity | ||
Zeile 21: | Zeile 25: | ||
; Hinweis | ; Hinweis | ||
: Wenn der Ordner '/etc/duply' existiert, werden die Profile für den Superuser Benutzer root dort gesucht und erstellt werden | : Wenn der Ordner '/etc/duply' existiert, werden die Profile für den Superuser Benutzer root dort gesucht und erstellt werden | ||
; Protokolle | ; Protokolle | ||
Zeile 71: | Zeile 75: | ||
== Anwendung == | == Anwendung == | ||
; Erstmalige Verwendung (Profilerstellung) | ; Erstmalige Verwendung (Profilerstellung) | ||
duply <Profil> erstellen | |||
; Verwendung im Einzel- oder Batch-Modus | ; Verwendung im Einzel- oder Batch-Modus | ||
duply <profile> <Befehl>[[_|+|-]<Befehl>[_|+|-]...] [<Optionen> ...] | |||
; Für Stapel können die bedingten Trennzeichen auch als Pseudo-Befehle geschrieben werden und(+), oder(-) | ; Für Stapel können die bedingten Trennzeichen auch als Pseudo-Befehle geschrieben werden und(+), oder(-) | ||
Zeile 100: | Zeile 104: | ||
=== Pre- und Post-Skripte === | === Pre- und Post-Skripte === | ||
* Das pre-Skript wird direkt vor dem Backup ausgeführt, das post-Skript direkt nach dem Backup | * Das pre-Skript wird direkt vor dem Backup ausgeführt, das post-Skript direkt nach dem Backup | ||
* Mit diesen Skripten können beispielsweise Snapshots von LVM-Volumes oder Dumps von SQL Datenbanken gemacht und in das Backup einbezogen werden | * Mit diesen Skripten können beispielsweise Snapshots von LVM-Volumes oder Dumps von SQL Datenbanken gemacht und in das Backup einbezogen werden | ||
* Die files <tt>pre</tt> und <tt>post</tt> müssen im jeweiligen duply Verzeichnis liegen (Bsp.: /home/user/.duply/backup/) und ausführbar sein | * Die files <tt>pre</tt> und <tt>post</tt> müssen im jeweiligen duply Verzeichnis liegen (Bsp.: /home/user/.duply/backup/) und ausführbar sein | ||
* Werden die pre/post Scripte nicht wie erhofft ausgeführt (beispielsweise bei den Sicherchungs-Methoden "full/incr"), können diese explizit angegeben werden: <tt>pre_incr_post</tt> | * Werden die pre/post Scripte nicht wie erhofft ausgeführt (beispielsweise bei den Sicherchungs-Methoden "full/incr"), können diese explizit angegeben werden: <tt>pre_incr_post</tt> | ||
; Beispiel | ; Beispiel | ||
Hier ein Beispiel für ein PRE/POST Skript welches vor dem Backup einen SQL-Dump aller Datenbanken erstellt und diesen nach dem Backup wieder löscht | Hier ein Beispiel für ein PRE/POST Skript welches vor dem Backup einen SQL-Dump aller Datenbanken erstellt und diesen nach dem Backup wieder löscht | ||
; pre-Datei | ; pre-Datei | ||
Zeile 122: | Zeile 126: | ||
CND_<PREV|NEXT> (condition before/after) | CND_<PREV|NEXT> (condition before/after) | ||
The CMD_* variables were introduced to allow different actions according to the command the scripts were attached to e.g. 'pre_bkp_post_pre_verify_post' will call the pre script two times, with CMD_NEXT variable set to 'bkp' on the first and to 'verify' on the second run | The CMD_* variables were introduced to allow different actions according to the command the scripts were attached to e.g. 'pre_bkp_post_pre_verify_post' will call the pre script two times, with CMD_NEXT variable set to 'bkp' on the first and to 'verify' on the second run | ||
* CMD_ERR holds the exit code of the CMD_PREV | |||
===exclude=== | ===exclude=== | ||
* duply arbeitet standardmäßig mit einer Whitelist | * duply arbeitet standardmäßig mit einer Whitelist | ||
* Um gewisse Verzeichnisse oder Dateien von einem Backup zu inkludieren muss die Datei <tt>exclude</tt> im duply Verzeichnis erstellt werden | * Um gewisse Verzeichnisse oder Dateien von einem Backup zu inkludieren muss die Datei <tt>exclude</tt> im duply Verzeichnis erstellt werden | ||
* Die Syntax erlaubt das Hinzufügen von Verzeichnissen und Dateien mit einem <tt>+ /pfad/zur/datei</tt> | * Die Syntax erlaubt das Hinzufügen von Verzeichnissen und Dateien mit einem <tt>+ /pfad/zur/datei</tt> | ||
* Um ein Verzeichnis zu exkludieren muss in der <tt>exclude</tt> ein <tt>- /pfad/zum/Verzeichnis</tt> eingefügt werden | * Um ein Verzeichnis zu exkludieren muss in der <tt>exclude</tt> ein <tt>- /pfad/zum/Verzeichnis</tt> eingefügt werden | ||
* Zudem erlaubt duply die Verwendung von Wildcards | * Zudem erlaubt duply die Verwendung von Wildcards | ||
* Die hier dargestellte <tt>exclude</tt> Datei sichert die Verzeichnisse <tt>/etc/, /root/, /var/www/</tt> und exkludiert alle anderen Verzeichnisse | * Die hier dargestellte <tt>exclude</tt> Datei sichert die Verzeichnisse <tt>/etc/, /root/, /var/www/</tt> und exkludiert alle anderen Verzeichnisse | ||
+ /etc/ | + /etc/ | ||
+ /root/ | + /root/ | ||
Zeile 137: | Zeile 142: | ||
=== Argumente === | === Argumente === | ||
* duply bietet eine Vielzahl von Kommandozeilenparametern für die Sicherung und Wiederherstellung von Daten | * duply bietet eine Vielzahl von Kommandozeilenparametern für die Sicherung und Wiederherstellung von Daten | ||
* Die gesamte Liste ist in der Manpage von duply zu finden | * Die gesamte Liste ist in der Manpage von duply zu finden | ||
* Beim Einsatz von mehreren Parameter werden diese durch einen Unterstrich ('''_''') getrennt | * Beim Einsatz von mehreren Parameter werden diese durch einen Unterstrich ('''_''') getrennt | ||
* Mit <tt>/usr/bin/duply /root/.duply/test full_verify_purge --force</tt> wird ein volles Backup erstellt, verifiziert und alte Backups gelöscht | * Mit <tt>/usr/bin/duply /root/.duply/test full_verify_purge --force</tt> wird ein volles Backup erstellt, verifiziert und alte Backups gelöscht | ||
* Backups welche die <tt>MAX_AGE</tt> überschritten haben werden mit <tt>purge</tt> angezeigt und durch die zusätzliche Option <tt>--force</tt> gelöscht | * Backups welche die <tt>MAX_AGE</tt> überschritten haben werden mit <tt>purge</tt> angezeigt und durch die zusätzliche Option <tt>--force</tt> gelöscht | ||
* Der Befehl <tt>/usr/bin/duply /root/.duply/test incr</tt> führt ein inkrementelles Backup aus | * Der Befehl <tt>/usr/bin/duply /root/.duply/test incr</tt> führt ein inkrementelles Backup aus | ||
===cronjob=== | ===cronjob=== | ||
* Bei duply handelt es sich nicht um einen Dienst (Daemon), sondern um ein Skript, das beispielsweise regelmäßig via Cron ausgeführt werden kann | * Bei duply handelt es sich nicht um einen Dienst (Daemon), sondern um ein Skript, das beispielsweise regelmäßig via Cron ausgeführt werden kann | ||
; Beispiel | ; Beispiel | ||
Zeile 151: | Zeile 156: | ||
0 0 * * 1-6 /usr/bin/duply /root/.duply/test incr | 0 0 * * 1-6 /usr/bin/duply /root/.duply/test incr | ||
* In dieser Konfiguration wird Sonntags um 0:00 ein Full-Backup erstellt und alte Backups gelöscht | * In dieser Konfiguration wird Sonntags um 0:00 ein Full-Backup erstellt und alte Backups gelöscht | ||
* Montag bis Samstag wird jeden Tag ein inkrementelles Backup durchgeführt | * Montag bis Samstag wird jeden Tag ein inkrementelles Backup durchgeführt | ||
* Neue cronjobs können mit '''crontab -e''' erstellt werden | * Neue cronjobs können mit '''crontab -e''' erstellt werden | ||
* Kommandos und Konfigurationsdateien müssen mit absolutem Pfad angegeben werden | * Kommandos und Konfigurationsdateien müssen mit absolutem Pfad angegeben werden | ||
=== Beispiele === | === Beispiele === | ||
==== Profil erstellen | ==== Profil erstellen ==== | ||
$ '''duply humbug create | $ '''duply humbug create | ||
don't forget to edit this new conf file | don't forget to edit this new conf file | ||
Zeile 190: | Zeile 195: | ||
==== Volume was signed by key ''X'' not ''Y'' ==== | ==== Volume was signed by key ''X'' not ''Y'' ==== | ||
==== OSError: Socket is closed ==== | ==== OSError: Socket is closed ==== | ||
ssh: Exception (client): Signature verification (ssh-rsa) failed | ssh: Exception (client): Signature verification (ssh-rsa) failed | ||
ssh: Traceback (most recent call last): | ssh: Traceback (most recent call last): | ||
ssh: | ssh: File "/usr/local/lib/python3.10/dist-packages/paramiko/transport.py", line 2130, in run | ||
ssh: | ssh: self.kex_engine.parse_next(ptype, m) | ||
ssh: | ssh: File "/usr/local/lib/python3.10/dist-packages/paramiko/kex_curve25519.py", line 64, in parse_next | ||
ssh: | ssh: return self._parse_kexecdh_reply(m) | ||
ssh: | ssh: File "/usr/local/lib/python3.10/dist-packages/paramiko/kex_curve25519.py", line 130, in _parse_kexecdh_reply | ||
ssh: | ssh: self.transport._verify_key(peer_host_key_bytes, sig) | ||
ssh: | ssh: File "/usr/local/lib/python3.10/dist-packages/paramiko/transport.py", line 1942, in _verify_key | ||
ssh: | ssh: raise SSHException( | ||
ssh: paramiko.ssh_exception.SSHException: Signature verification (ssh-rsa) failed | ssh: paramiko.ssh_exception.SSHException: Signature verification (ssh-rsa) failed | ||
ssh: | ssh: | ||
Attempt of put Nr. 1 failed | Attempt of put Nr. 1 failed | ||
* OSError: Socket is closed | |||
== Aufruf == | == Aufruf == | ||
Zeile 225: | Zeile 231: | ||
| usage || || get usage help text | | usage || || get usage help text | ||
|- | |- | ||
| and/or/groupIn/groupOut | | and/or/groupIn/groupOut || || pseudo commands used in batches (see SEPARATORS above) | ||
|- | |- | ||
| create || || creates a configuration profile | | create || || creates a configuration profile | ||
Zeile 255: | Zeile 261: | ||
| purgeFull || [<max_full_backups>] [--force] || list outdated backup files ($MAX_FULL_BACKUPS being the number of full backups and associated incrementals to keep, counting in reverse chronological order) [use --force to actually delete these files] | | purgeFull || [<max_full_backups>] [--force] || list outdated backup files ($MAX_FULL_BACKUPS being the number of full backups and associated incrementals to keep, counting in reverse chronological order) [use --force to actually delete these files] | ||
|- | |- | ||
| purgeIncr || [<max_fulls_with_incrs>] [--force] | | purgeIncr || [<max_fulls_with_incrs>] [--force] || list outdated incremental backups ($MAX_FULLS_WITH_INCRS being the number of full backups which associated incrementals will be kept, counting in reverse chronological order) [use --force to actually delete these files] | ||
|- | |- | ||
| purgeAuto | | purgeAuto || [--force] || convenience batch wrapper for all purge commands above | ||
* purge, purgeFull, purgeIncr are added if their conf vars were set | |||
* e.g | |||
MAX_AGE=1Y | MAX_AGE=1Y | ||
MAX_FULL_BACKUPS=6 | MAX_FULL_BACKUPS=6 | ||
MAX_FULLS_WITH_INCR=3 | MAX_FULLS_WITH_INCR=3 | ||
in profile conf file would result in | in profile conf file would result in | ||
[purge_purgeFull_purgeIncr] | |||
|- | |- | ||
| cleanup || [--force] | | cleanup || [--force] || list broken backup chain files archives (e.g | ||
* after unfinished run) [use --force to actually delete these files] | |||
|- | |- | ||
| changelog || || print changelog / todo list | | changelog || || print changelog / todo list | ||
|- | |- | ||
| txt2man || || feature for package maintainers - create a manpage based on the usage output | | txt2man || || feature for package maintainers - create a manpage based on the usage output | ||
* download txt2man from https://mvertes.free.fr/, put it in the PATH and run 'duply txt2man' to create a man page | |||
|- | |- | ||
| version || || show version information of duply and needed programs | | version || || show version information of duply and needed programs | ||
Zeile 291: | Zeile 301: | ||
; Beispiel | ; Beispiel | ||
'pre+[bkp-verify]_post' | 'pre+[bkp-verify]_post' | ||
translates to | translates to | ||
'pre_and_groupIn_bkp_or_verify_groupOut_post' | 'pre_and_groupIn_bkp_or_verify_groupOut_post' | ||
=== TIME FORMATS === | === TIME FORMATS === | ||
For all time related parameters like age, max_age und weitere Refer to the duplicity manpage for all available formats | For all time related parameters like age, max_age und weitere Refer to the duplicity manpage for all available formats | ||
; Beispiele | ; Beispiele | ||
{| class="wikitable sortable options" | {| class="wikitable sortable options" | ||
Zeile 313: | Zeile 323: | ||
== Sicherheit == | == Sicherheit == | ||
; Kopieren Sie den ''gesamten'' Profilordner nach der ersten Sicherung an einen sicheren Ort | ; Kopieren Sie den ''gesamten'' Profilordner nach der ersten Sicherung an einen sicheren Ort | ||
* Er enthält alles, was für die Wiederherstellung Ihrer Backups benötigt wird (in doppelter Hinsicht) | * Er enthält alles, was für die Wiederherstellung Ihrer Backups benötigt wird (in doppelter Hinsicht) | ||
Achten Sie auf (möglicherweise später hinzugefügte) externe Dateien wie Credentials oder Auth-Dateien (beispielsweise netrc, .megarc, ssh-Schlüssel) oder Umgebungsvariablen (beispielsweise DPBX_ACCESS_TOKEN) | Achten Sie auf (möglicherweise später hinzugefügte) externe Dateien wie Credentials oder Auth-Dateien (beispielsweise netrc, .megarc, ssh-Schlüssel) oder Umgebungsvariablen (beispielsweise DPBX_ACCESS_TOKEN) | ||
Es ist ratsam, diese im Profilordner zu platzieren, wenn dies überhaupt möglich ist | Es ist ratsam, diese im Profilordner zu platzieren, wenn dies überhaupt möglich ist | ||
* beispielsweise im Falle eines 'multi://' Ziels sollte die config .json Datei Env vars zur conf Datei der Duply Profile hinzugefügt werden | |||
Halten Sie den Zugriff auf diese Dateien beschränkt, da sie Informationen (gpg-Schlüssel, Passphrasen und weitere) für den Zugriff und die Änderung Ihrer Backups enthalten | Halten Sie den Zugriff auf diese Dateien beschränkt, da sie Informationen (gpg-Schlüssel, Passphrasen und weitere) für den Zugriff und die Änderung Ihrer Backups enthalten | ||
; Zusammenfassung | ; Zusammenfassung | ||
* Versuchen Sie eine Wiederherstellung von einem anderen Rechner aus, um sicherzustellen, dass Sie wirklich alles haben, was Sie für die Wiederherstellung benötigen | * Versuchen Sie eine Wiederherstellung von einem anderen Rechner aus, um sicherzustellen, dass Sie wirklich alles haben, was Sie für die Wiederherstellung benötigen | ||
* Wiederholen Sie diese Schritte nach _allen_ Konfigurationsänderungen | * Wiederholen Sie diese Schritte nach _allen_ Konfigurationsänderungen | ||
* Einige Konfigurationsoptionen sind für die Wiederherstellung entscheidend | |||
Version vom 1. Mai 2025, 11:56 Uhr
duply - Inkrementelle verschlüsselte Backups erstellen
Beschreibung
duply ist ein Shell-Frontend für duplicity, das die Verwendung vereinfacht, indem Einstellungen für jedes Backup in Profilen verwaltet werden
- Es unterstützt die Ausführung von mehreren Befehlen als Stapelverarbeitung
- Damit sind einzeilige cron-Einträge möglich und der Benutzer kann Skripte verwenden, die vor oder nach dem Backup ausgeführt werden
- Alle duplicity-Backends werden unterstützt
- Der frühere Name von duply war ftplicity
- Vereinfacht die Ausführung von Duplicity
- Frontend für duplicity
- Backups können lokal oder einem anderen System gespeichert werden
- Cron oder Kommandozeile
- Speichert Einstellungen in Profilen
- Batch-Operationen
- ermöglicht, beispielsweise backup_verify+purge
- Ausführung von Pre-/Post-Skripten
- verschiedene Aktionen möglich, abhängig vom vorherigen oder nächsten Befehl oder dessen Rückgabewert
- Vorbedingungsprüfung für fehlerfreie Duplizitätsoperationen
Für jeden Sicherungsauftrag wird ein Konfigurationsprofil erstellt
- Profilordner
- ~/.duply/<profile>
- Hinweis
- Wenn der Ordner '/etc/duply' existiert, werden die Profile für den Superuser Benutzer root dort gesucht und erstellt werden
- Protokolle
- ftp
- ssh
- s3
- rsync
- cifs
- webdav
- http
Installation
# apt install duply
Dateien
- /usr/bin/
duply
- /usr/share/doc/duply/
README README.Debian TODO changelog.Debian.gz changelog.gz copyright systemd-unit.examples systemd-unit.examples/HOWTO.txt systemd-unit.examples/system systemd-unit.examples/system/duply-backup@.service systemd-unit.examples/system/duply-backup@.timer systemd-unit.examples/system/duply-cleanup@.service systemd-unit.examples/system/duply-cleanup@.timer systemd-unit.examples/system/duply-verify@.service systemd-unit.examples/system/duply-verify@.timer systemd-unit.examples/system/notify-failed-backup@.service systemd-unit.examples/user systemd-unit.examples/user/duply-backup@.service systemd-unit.examples/user/duply-backup@.timer systemd-unit.examples/user/duply-cleanup@.service systemd-unit.examples/user/duply-cleanup@.timer systemd-unit.examples/user/duply-verify@.service systemd-unit.examples/user/duply-verify@.timer systemd-unit.examples/user/notify-failed-backup@.service
- /usr/share/man/man1/
duply.1.gz
Anwendung
- Erstmalige Verwendung (Profilerstellung)
duply <Profil> erstellen
- Verwendung im Einzel- oder Batch-Modus
duply <profile> <Befehl>[[_|+|-]<Befehl>[_|+|-]...] [<Optionen> ...]
- Für Stapel können die bedingten Trennzeichen auch als Pseudo-Befehle geschrieben werden und(+), oder(-)
- siehe BEISPIELE
- siehe SEPARATORS
Nicht duply-Optionen werden an duplicity weitergegeben
- siehe OPTIONS
- Alle conf-Parameter können stattdessen auch in der Umgebung definiert werden
Anwendung
GnuPG_KEY='C676563899DE35FA' GnuPG_PW='NerzManta9' GnuPG_OPTS='--compress-algo=bzip2 --personal-cipher-preferences AES256' GnuPG_TEST='disabled' TARGET='ssh://user:KohlIstKrempe969@foxtom.net:22/home/user/backup_PC1' SOURCE='/' MAX_AGE=1Y MAX_FULL_BACKUPS=5 MAX_FULLBKP_AGE=2W DUPL_PARAMS="$DUPL_PARAMS --full-if-older-than $MAX_FULLBKP_AGE" VOLSIZE=10 DUPL_PARAMS="$DUPL_PARAMS --volsize $VOLSIZE"
Pre- und Post-Skripte
- Das pre-Skript wird direkt vor dem Backup ausgeführt, das post-Skript direkt nach dem Backup
- Mit diesen Skripten können beispielsweise Snapshots von LVM-Volumes oder Dumps von SQL Datenbanken gemacht und in das Backup einbezogen werden
- Die files pre und post müssen im jeweiligen duply Verzeichnis liegen (Bsp.: /home/user/.duply/backup/) und ausführbar sein
- Werden die pre/post Scripte nicht wie erhofft ausgeführt (beispielsweise bei den Sicherchungs-Methoden "full/incr"), können diese explizit angegeben werden: pre_incr_post
- Beispiel
Hier ein Beispiel für ein PRE/POST Skript welches vor dem Backup einen SQL-Dump aller Datenbanken erstellt und diesen nach dem Backup wieder löscht
- pre-Datei
/usr/bin/mysqldump --all-databases -u root -ppw > /tmp/sqldump-$(date '+%F')
- post-Datei
/bin/rm /tmp/sqldump-$(date '+%F')
- PRE/POST SCRIPTS
Useful internal duply variables are exported to the scripts
PROFILE, CONFDIR, SOURCE, TARGET_URL_<PROT|HOSTPATH|USER|PASS>, GnuPG_<KEYS_ENC|KEY_SIGN|PW>, CMD_ERR, RUN_START, CMD_<PREV|NEXT> (previous/next command), CND_<PREV|NEXT> (condition before/after)
The CMD_* variables were introduced to allow different actions according to the command the scripts were attached to e.g. 'pre_bkp_post_pre_verify_post' will call the pre script two times, with CMD_NEXT variable set to 'bkp' on the first and to 'verify' on the second run
- CMD_ERR holds the exit code of the CMD_PREV
exclude
- duply arbeitet standardmäßig mit einer Whitelist
- Um gewisse Verzeichnisse oder Dateien von einem Backup zu inkludieren muss die Datei exclude im duply Verzeichnis erstellt werden
- Die Syntax erlaubt das Hinzufügen von Verzeichnissen und Dateien mit einem + /pfad/zur/datei
- Um ein Verzeichnis zu exkludieren muss in der exclude ein - /pfad/zum/Verzeichnis eingefügt werden
- Zudem erlaubt duply die Verwendung von Wildcards
- Die hier dargestellte exclude Datei sichert die Verzeichnisse /etc/, /root/, /var/www/ und exkludiert alle anderen Verzeichnisse
+ /etc/ + /root/ + /var/www/ - **
Argumente
- duply bietet eine Vielzahl von Kommandozeilenparametern für die Sicherung und Wiederherstellung von Daten
- Die gesamte Liste ist in der Manpage von duply zu finden
- Beim Einsatz von mehreren Parameter werden diese durch einen Unterstrich (_) getrennt
- Mit /usr/bin/duply /root/.duply/test full_verify_purge --force wird ein volles Backup erstellt, verifiziert und alte Backups gelöscht
- Backups welche die MAX_AGE überschritten haben werden mit purge angezeigt und durch die zusätzliche Option --force gelöscht
- Der Befehl /usr/bin/duply /root/.duply/test incr führt ein inkrementelles Backup aus
cronjob
- Bei duply handelt es sich nicht um einen Dienst (Daemon), sondern um ein Skript, das beispielsweise regelmäßig via Cron ausgeführt werden kann
- Beispiel
0 0 * * 7 /usr/bin/duply /root/.duply/test full_verify_purge --force 0 0 * * 1-6 /usr/bin/duply /root/.duply/test incr
- In dieser Konfiguration wird Sonntags um 0:00 ein Full-Backup erstellt und alte Backups gelöscht
- Montag bis Samstag wird jeden Tag ein inkrementelles Backup durchgeführt
- Neue cronjobs können mit crontab -e erstellt werden
- Kommandos und Konfigurationsdateien müssen mit absolutem Pfad angegeben werden
Beispiele
Profil erstellen
$ duply humbug create
don't forget to edit this new conf file
backup 'humbug' now
$ duply humbug backup
available backup sets
list available backup sets of profile 'humbug'
$ duply humbug status
outdated backups
- list and delete outdated backups of 'humbug'
$ duply humbug purge --force
restore
- restore latest backup of 'humbug' to /mnt/restore
$ duply humbug restore /mnt/restore
- restore /etc/passwd of 'humbug' from 4 days ago to /root/pw
$ duply humbug fetch etc/passwd /root/pw 4D $ (see "duplicity manpage", section TIME FORMATS)
a one line batch job on 'humbug' for cron execution
$ duply humbug backup_verify_purge --force
batch job to run a full backup with pre/post scripts
$ duply humbug pre_full_post
Problembehebung
Volume was signed by key X not Y
OSError: Socket is closed
ssh: Exception (client): Signature verification (ssh-rsa) failed ssh: Traceback (most recent call last): ssh: File "/usr/local/lib/python3.10/dist-packages/paramiko/transport.py", line 2130, in run ssh: self.kex_engine.parse_next(ptype, m) ssh: File "/usr/local/lib/python3.10/dist-packages/paramiko/kex_curve25519.py", line 64, in parse_next ssh: return self._parse_kexecdh_reply(m) ssh: File "/usr/local/lib/python3.10/dist-packages/paramiko/kex_curve25519.py", line 130, in _parse_kexecdh_reply ssh: self.transport._verify_key(peer_host_key_bytes, sig) ssh: File "/usr/local/lib/python3.10/dist-packages/paramiko/transport.py", line 1942, in _verify_key ssh: raise SSHException( ssh: paramiko.ssh_exception.SSHException: Signature verification (ssh-rsa) failed ssh: Attempt of put Nr. 1 failed
- OSError: Socket is closed
Aufruf
Argumente
Optionen
Option | Beschreibung |
---|---|
--force | passed to duplicity (see commands purge, purgeFull, purgeIncr, cleanup) |
--preview | do nothing but print out generated duplicity command lines |
--disable-encryption | disable encryption, overrides profile settings |
Kommandos
Option | Parameter | Beschreibung |
---|---|---|
usage | get usage help text | |
and/or/groupIn/groupOut | pseudo commands used in batches (see SEPARATORS above) | |
create | creates a configuration profile | |
backup | backup with pre/post script execution (batch: [pre_bkp_post]), full (if full_if_older matches or no earlier backup is found) incremental (in all other cases) | |
pre/post | execute '<profile>/pre', '<profile>/post' scripts | |
bkp | as above but without executing pre/post scripts | |
full | force full backup | |
incr | force incremental backup | |
list | [<age>] | list all files in backup (as it was at <age>, default: now) |
status | prints backup sets and chains currently in repository | |
verify | [<age>] [--compare-data] | list files changed, since age if given |
verifyPath | <rel_path_in_bkp> <local_path> [<age>] [--compare-data] | list changes of a file or folder path in backup compared to a local path, since age if given |
restore | <target_path> [<age>] | restore the complete backup to <target_path> [as it was at <age>] |
fetch | <src_path> <target_path> [<age>] | fetch single file/folder from backup [as it was at <age>] |
purge | [<max_age>] [--force] | list outdated backup files (older than $MAX_AGE) [use --force to actually delete these files] |
purgeFull | [<max_full_backups>] [--force] | list outdated backup files ($MAX_FULL_BACKUPS being the number of full backups and associated incrementals to keep, counting in reverse chronological order) [use --force to actually delete these files] |
purgeIncr | [<max_fulls_with_incrs>] [--force] | list outdated incremental backups ($MAX_FULLS_WITH_INCRS being the number of full backups which associated incrementals will be kept, counting in reverse chronological order) [use --force to actually delete these files] |
purgeAuto | [--force] | convenience batch wrapper for all purge commands above
MAX_AGE=1Y MAX_FULL_BACKUPS=6 MAX_FULLS_WITH_INCR=3 in profile conf file would result in [purge_purgeFull_purgeIncr] |
cleanup | [--force] | list broken backup chain files archives (e.g
|
changelog | print changelog / todo list | |
txt2man | feature for package maintainers - create a manpage based on the usage output
| |
version | show version information of duply and needed programs |
Umgebung
Rückgabewert
SEPARATORS
Option | Beschreibung | |
---|---|---|
_ | underscore | neutral separator |
+ | plus sign, _and_ conditional AND | the next command will only be executed if the previous succeeded |
- | minus sign, _or_ conditional OR | the next command will only be executed if the previous failed |
[ ] | square brackets, _groupIn_/_groupOut_ | enables grouping of commands |
- Beispiel
'pre+[bkp-verify]_post'
translates to
'pre_and_groupIn_bkp_or_verify_groupOut_post'
TIME FORMATS
For all time related parameters like age, max_age und weitere Refer to the duplicity manpage for all available formats
- Beispiele
Option | Beschreibung |
---|---|
2002-01-25T07:00:00+02:00 | full date time format string |
2002/3/5 | date string YYYY/MM/DD |
12D | interval, 12 days ago |
1h78m | interval, 1 hour 78 minutes ago |
Sicherheit
- Kopieren Sie den gesamten Profilordner nach der ersten Sicherung an einen sicheren Ort
- Er enthält alles, was für die Wiederherstellung Ihrer Backups benötigt wird (in doppelter Hinsicht)
Achten Sie auf (möglicherweise später hinzugefügte) externe Dateien wie Credentials oder Auth-Dateien (beispielsweise netrc, .megarc, ssh-Schlüssel) oder Umgebungsvariablen (beispielsweise DPBX_ACCESS_TOKEN)
Es ist ratsam, diese im Profilordner zu platzieren, wenn dies überhaupt möglich ist
- beispielsweise im Falle eines 'multi://' Ziels sollte die config .json Datei Env vars zur conf Datei der Duply Profile hinzugefügt werden
Halten Sie den Zugriff auf diese Dateien beschränkt, da sie Informationen (gpg-Schlüssel, Passphrasen und weitere) für den Zugriff und die Änderung Ihrer Backups enthalten
- Zusammenfassung
- Versuchen Sie eine Wiederherstellung von einem anderen Rechner aus, um sicherzustellen, dass Sie wirklich alles haben, was Sie für die Wiederherstellung benötigen
- Wiederholen Sie diese Schritte nach _allen_ Konfigurationsänderungen
- Einige Konfigurationsoptionen sind für die Wiederherstellung entscheidend