Duply: Unterschied zwischen den Versionen
Die Seite wurde neu angelegt: „= duply = * Duply arbeitet dabei als Frontend zu Duplicitiy * Duply ist ein Python Script zur Erstellung von inkrementellen symmetrisch verschlüsselten Backu…“ |
Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
= duply = | = duply = | ||
* Duply arbeitet dabei als Frontend zu Duplicitiy | * Duply arbeitet dabei als Frontend zu Duplicitiy | ||
* Duply ist ein Python Script zur Erstellung von inkrementellen symmetrisch verschlüsselten Backups auf Dateiebene. | * Duply ist ein Python Script zur Erstellung von inkrementellen symmetrisch verschlüsselten Backups auf Dateiebene. | ||
* Mit Duply erstellte Backups können sowohl lokal am gesicherten Rechner, als auch entfernt (remote) auf einem anderen System gespeichert werden. | * Mit Duply erstellte Backups können sowohl lokal am gesicherten Rechner, als auch entfernt (remote) auf einem anderen System gespeichert werden. | ||
* Duply unterstützt dazu <tt>ftp, ssh, s3, rsync, cifs, webdav, http</tt>. | * Duply unterstützt dazu <tt>ftp, ssh, s3, rsync, cifs, webdav, http</tt>. | ||
== Installation == | == Installation == | ||
In [https://www.thomas-krenn.com/de/wiki/Ubuntu Ubuntu] oder [https://www.thomas-krenn.com/de/wiki/Debian Debian] wird Duply mit folgendem Befehl installiert: | In [https://www.thomas-krenn.com/de/wiki/Ubuntu Ubuntu] oder [https://www.thomas-krenn.com/de/wiki/Debian Debian] wird Duply mit folgendem Befehl installiert: | ||
aptitude install duply | |||
aptitude install duply | |||
== Konfiguration == | == Konfiguration == | ||
Mit dem Befehl <tt>duply <backupname> create</tt> wird ein neues Duply Profil erstellt. Da für ein vollständiges Backup Leserechte auf alle Dateien eines Verzeichnisses erforderlich sind, soll duply mit root Benutzerrechten ausgeführt werden. | Mit dem Befehl <tt>duply <backupname> create</tt> wird ein neues Duply Profil erstellt. Da für ein vollständiges Backup Leserechte auf alle Dateien eines Verzeichnisses erforderlich sind, soll duply mit root Benutzerrechten ausgeführt werden. | ||
Zeile 23: | Zeile 16: | ||
* pre | * pre | ||
* gpg-key.asc (optional, nur wenn gpg-key exportiert wurde.) | * gpg-key.asc (optional, nur wenn gpg-key exportiert wurde.) | ||
=== GPG Key erstellen === | === GPG Key erstellen === | ||
Mit <tt>gpg --gen-key</tt> kann ein neuer GPG-Key erstellt werden. Während der Erstellung des Keys ist es ratsam andere Arbeiten auf dem Host durchzuführen um die Entropie am System zu erhöhen. | Mit <tt>gpg --gen-key</tt> kann ein neuer GPG-Key erstellt werden. Während der Erstellung des Keys ist es ratsam andere Arbeiten auf dem Host durchzuführen um die Entropie am System zu erhöhen. | ||
gpg --gen-key | |||
gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc. | |||
This is free software: you are free to change and redistribute it. | |||
There is NO WARRANTY, to the extent permitted by law. | |||
Please select what kind of key you want: | |||
(1) RSA and RSA (default) | |||
(2) DSA and Elgamal | |||
(3) DSA (sign only) | |||
(4) RSA (sign only) | |||
Your selection? 1 | |||
RSA keys may be between 1024 and 4096 bits long. | |||
What keysize do you want? (2048) 4096 | |||
Requested keysize is 4096 bits | |||
Please specify how long the key should be valid. | |||
0 = key does not expire | |||
<n> <nowiki>= key expires in n days</nowiki> | |||
<n>w = key expires in n weeks | |||
<n>m = key expires in n months | |||
<n>y = key expires in n years | |||
Key is valid for? (0) | |||
Key does not expire at all | |||
Is this correct? (y/N) y | |||
You need a user ID to identify your key; the software constructs the user ID | |||
from the Real Name, Comment and Email Address in this form: | |||
"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>" | |||
Real name: Example User | |||
Email address: email@example.com | |||
Comment: | |||
You selected this USER-ID: | |||
"Example User <email@example.com>" | |||
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O | |||
You need a Passphrase to protect your secret key. | |||
We need to generate a lot of random bytes. It is a good idea to perform | |||
some other action (type on the keyboard, move the mouse, utilize the | |||
disks) during the prime generation; this gives the random number | |||
Real name: Example User | |||
Email address: email@example.com | |||
Comment: | |||
You selected this USER-ID: | |||
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O | |||
You need a Passphrase to protect your secret key. | |||
We need to generate a lot of random bytes. It is a good idea to perform | |||
some other action (type on the keyboard, move the mouse, utilize the | |||
disks) during the prime generation; this gives the random number | |||
generator a better chance to gain enough entropy. | generator a better chance to gain enough entropy. | ||
Version vom 22. Mai 2020, 08:12 Uhr
duply
- Duply arbeitet dabei als Frontend zu Duplicitiy
- Duply ist ein Python Script zur Erstellung von inkrementellen symmetrisch verschlüsselten Backups auf Dateiebene.
- Mit Duply erstellte Backups können sowohl lokal am gesicherten Rechner, als auch entfernt (remote) auf einem anderen System gespeichert werden.
- Duply unterstützt dazu ftp, ssh, s3, rsync, cifs, webdav, http.
Installation
In Ubuntu oder Debian wird Duply mit folgendem Befehl installiert:
aptitude install duply
Konfiguration
Mit dem Befehl duply <backupname> create wird ein neues Duply Profil erstellt. Da für ein vollständiges Backup Leserechte auf alle Dateien eines Verzeichnisses erforderlich sind, soll duply mit root Benutzerrechten ausgeführt werden.
Ein duply profil wird im Home-Verzeichnis des Benutzers unter ~/.duply/ angelegt und besteht aus den folgenden Dateien: * conf
- exclude
- post
- pre
- gpg-key.asc (optional, nur wenn gpg-key exportiert wurde.)
GPG Key erstellen
Mit gpg --gen-key kann ein neuer GPG-Key erstellt werden. Während der Erstellung des Keys ist es ratsam andere Arbeiten auf dem Host durchzuführen um die Entropie am System zu erhöhen.
gpg --gen-key gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) Your selection? 1 RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 4096 Requested keysize is 4096 bits Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years Key is valid for? (0) Key does not expire at all Is this correct? (y/N) y You need a user ID to identify your key; the software constructs the user ID from the Real Name, Comment and Email Address in this form: "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
Real name: Example User Email address: email@example.com Comment: You selected this USER-ID: "Example User <email@example.com>" Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O You need a Passphrase to protect your secret key. We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
Not enough random bytes available. Please do some other work to give the OS a chance to collect more entropy! (Need 253 more bytes) ..........+++++
gpg: key 9627014B marked as ultimately trusted public and secret key created and signed.
gpg: checking the trustdb gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model gpg: depth: 0 valid: 2 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 2u pub 4096R/9627014B 2013-06-07
Key fingerprint = 705D B57E 8526 FB24 360E E54D 13A1 AC6B 9627 014B
uid Example User <email@example.com> sub 4096R/DB7D5661 2013-06-07
Konfiguration des Backups
Um eine symetrische Verschlüsselung zu bieten benötigt Duply die Key-ID und das Passwort des GPG-Keys. Bei der Key-ID handelt es sich hier um 9627014B. Dieser Key muss in die automatisch generierte Konfigurationsdatei im Duply Ordner (hier: /root/.duply/backup/conf) mitsamt dem Passwort hinterlegt werden.
pub 4096R/9627014B 2013-06-07
Key fingerprint = 705D B57E 8526 FB24 360E E54D 13A1 AC6B 9627 014B
uid Example User <email@example.com> sub 4096R/DB7D5661 2013-06-07
conf Datei
GPG_KEY='_KEY_ID_' GPG_PW='_GPG_PASSWORD_'
Zusätzlich können in GPG_OPTS= weitere Optionen zur Kompression und Art der Verschlüsselung gesetzt werden.
GPG_OPTS='--compress-algo=bzip2 --personal-cipher-preferences AES256,AES192'
Duply prüft vor jeder Aktion ob der GPG-Key gültig ist und die Passphrase korrekt ist. Dies kann durch die Option GPG_TEST='disabled' unterbunden werden.
#GPG_TEST='disabled'
Der nächste Schritt ist die Auswahl des Zieles des Backups. Duply versteht alle gängigen Protokolle zur Übertragung von Daten. Die Syntax des hosts ist wie folgt:
scheme://[user:password@]host[:port]/[/]path
In der conf Datei befindet sich eine Liste der unterstützden Protokolle und deren Syntax.
# file://[/absolute_]path # ftp[s]://user[:password]@other.host[:port]/some_dir # hsi://user[:password]@other.host/some_dir # cf+http://container_name # imap[s]://user[:password]@host.com[/from_address_prefix] # rsync://user[:password]@other.host[:port]::/module/some_dir # # rsync over ssh (only keyauth) # rsync://user@other.host[:port]/relative_path # rsync://user@other.host[:port]//absolute_path # # for the s3 user/password are AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY # s3://[user:password]@host/bucket_name[/prefix] # s3+http://[user:password]@bucket_name[/prefix] # # scp and sftp are aliases for the ssh backend # ssh://user[:password]@other.host[:port]/some_dir # tahoe://alias/directory # webdav[s]://user[:password]@other.host/some_dir
Hier ist anzumerken das Sonderzeichen urlencoded eingetragen werden müssen außer sie werden in den Parametern TARGET_USER, TARGET_PASS eingetragen.
TARGET='scheme://user[:password]@host[:port]/[/]path'
Als nächstes kann mit der Option SOURCE= das Root-Verzeichnis für das Backup gesetzt werden. Soll ein Backup aus mehreren Unterordnern von / bestehen (Bsp.: /etc /var /home sollen gesichert werden) so muss die SOURCE Variable auf / gesetzt werden.
SOURCE='/'
Die Folgenden Parameter kontrollieren das maximale Alter und die Anzahl der vollständigen Backups die Duply behalten soll. Hier ist anzumerken, dass Duply keine Backups löscht sofern man es nicht anfordert. Mit MAX_AGE wird das maximale Alter von Backups bestimmt.
MAX_AGE=1Y
Mit MAX_FULL_BACKUPS kann bestimmt werden wieviele Full-Backups duply maximal behält.
MAX_FULL_BACKUPS=5
Alternativ kann mit MAX_FULLBKP_AGE spezifiert werden wie alt ein Full-Backup sein darf bevor ein neues Full-Backup erstellt wird.
MAX_FULLBKP_AGE=2W DUPL_PARAMS="$DUPL_PARAMS --full-if-older-than $MAX_FULLBKP_AGE "
Um den durch eventuelle Übertragungsfehler enstehenden Zeitverlust einzuschränken teilt duply standardmäßig seine Backups in 25 MB große Dateien. Dies kann mit dem VOLSIZE Parameter geändert werden.
VOLSIZE=10 DUPL_PARAMS="$DUPL_PARAMS --volsize $VOLSIZE "
Weiters lassen sich noch optionale Parameter wie VERBOSITY und TEMP_DIR setzen.
Pre und Post Skripte
Duply erlaubt die Verwendung von Pre und Post Skripten. 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 (z.B. bei den Sicherchungs-Methoden "full/incr"), können diese explizit angegeben werden: pre_incr_post
Beispiele
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')
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/ - **
Duply Parameter
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 z.B. regelmäßig via Cron ausgeführt werden kann.
Eine Beispielhafte Cronjob Konfiguration wäre:
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. Hier ist anzumerken, dass für alle Kommandos und Konfigurationsdateien der absolute Pfad angegeben werden muss.
Weitere Informationen
- Duply (duply.net)