|
|
| (370 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) |
| Zeile 1: |
Zeile 1: |
| Ein einfaches Python-Script zur Erstellung von inkrementellen, symmetrisch verschlüsselten Backups auf Dateiebene.
| | '''duply''' - [[Inkrementell]]e [[verschlüsselt]]e [[Backup]]s |
|
| |
|
| =Eigenschaften= | | == Beschreibung == |
| * Ist ein Frontend von [https://de.wikipedia.org/wiki/Duplicity_(Software) duplicity]. | | ; Frontend für [[duplicity]] |
| * Erstellte Backups können sowohl lokal am gesicherten Rechner, als auch entfernt (remote) auf einem anderen System gespeichert werden. | | Vereinfacht die Ausführung von Duplicity |
| * Unterstützt <tt>ftp, ssh, s3, rsync, cifs, webdav, http</tt>. | | * Verwendung von [[duplicity]] vereinfachen |
| | * Einstellungen in Profilen verwalten |
| | * Alle duplicity-Backends werden unterstützt |
| | * Stapelverarbeitung |
| | ** Ausführung von mehreren Befehlen als Stapelverarbeitung |
| | ** Damit sind einzeilige cron-Einträge möglich |
| | ** der Benutzer kann Skripte verwenden, die vor oder nach dem Backup ausgeführt werden |
| | * 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 |
|
| |
|
| =Installation=
| | Für jeden Sicherungsauftrag wird ein Konfigurationsprofil erstellt |
|
| |
| # apt install duply
| |
|
| |
|
| = Konfiguration = | | == Profilordner == |
| | <syntaxhighlight lang="bash" highlight="1" line copy> |
| | ~/.duply/<profile> |
| | </syntaxhighlight> |
|
| |
|
| ==Neues duply-Profil erstellen==
| | ; Hinweis |
| | : Wenn der Ordner '/etc/duply' existiert, werden die Profile für den Superuser Benutzer root dort gesucht und erstellt werden |
|
| |
|
| # duply <backupname> create
| | == Protokolle == |
| | {| class="table table-striped table-hover col1bold col1nowrap" |
| | ! Protokoll !! Beschreibung |
| | |- |
| | | [[ftp]] || |
| | |- |
| | | [[ssh]] || |
| | |- |
| | | [[s3]] || |
| | |- |
| | | [[rsync]] || |
| | |- |
| | | [[cifs]] || |
| | |- |
| | | [[webdav]] || |
| | |- |
| | | [[http]] || |
| | |} |
|
| |
|
| Ein duply-Profil wird im Home-Verzeichnis des Benutzers unter '''~/.duply/''' automatisch angelegt und besteht aus den folgenden Dateien:
| | == Installation == |
| * conf
| | <syntaxhighlight lang="bash" highlight="1" copy> |
| * exclude
| | sudo apt install duply |
| * post
| | </syntaxhighlight> |
| * pre
| |
| * gpg-key.asc (Optional, nur wenn ein gpg-key exportiert wurde.)
| |
|
| |
|
| ==GPG-Key erstellen== | | === Dateien === |
| Während der Erstellung des Keys ist es ratsam andere Arbeiten auf dem Host durchzuführen, um die Entropie am System zu erhöhen, z.B. durch schnelles Bewegen der Maus und/oder das Eintippen auf der Tastatur.
| | └── usr |
| | | ├── bin |
| Dies beschleunigt das Erstellen des Keys, weil dem Host schneller Zufallswerte (Random) zur Verfügung stehen, die für das Erstellen des Keys benötigt werden.
| | │ └── duply |
| | └── share |
| | ├── doc |
| | │ └── duply |
| | │ ├── changelog.Debian.gz |
| | │ ├── changelog.gz |
| | │ ├── copyright |
| | │ ├── README |
| | │ ├── README.Debian |
| | │ ├── systemd-unit.examples |
| | │ │ ├── HOWTO.txt |
| | │ │ ├── system |
| | │ │ │ ├── duply-backup@.service |
| | │ │ │ ├── duply-backup@.timer |
| | │ │ │ ├── duply-cleanup@.service |
| | │ │ │ ├── duply-cleanup@.timer |
| | │ │ │ ├── duply-verify@.service |
| | │ │ │ ├── duply-verify@.timer |
| | │ │ │ └── notify-failed-backup@.service |
| | │ │ └── user |
| | │ │ ├── duply-backup@.service |
| | │ │ ├── duply-backup@.timer |
| | │ │ ├── duply-cleanup@.service |
| | │ │ ├── duply-cleanup@.timer |
| | │ │ ├── duply-verify@.service |
| | │ │ ├── duply-verify@.timer |
| | │ │ └── notify-failed-backup@.service |
| | │ └── TODO |
| | └── man |
| | └── man1 |
| | └── duply.1.gz |
|
| |
|
| gpg --gen-key
| | == Anhang == |
| | === Siehe auch === |
| | {{Special:PrefixIndex/{{BASEPAGENAME}}/}} |
| | ---- |
| | * [[GnuPG]] |
| | * [[GnuPG-Agent]] |
| | * [[pinentry-curses]] |
| | * [[duplicity]] |
|
| |
|
| gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc.
| | === Dokumentation === |
| This is free software: you are free to change and redistribute it.
| | === Links === |
| There is NO WARRANTY, to the extent permitted by law.
| | ==== Projekt ==== |
|
| | ==== Weblinks ==== |
| Please select what kind of key you want:
| | # [https://www.thomas-krenn.com/de/wiki/Backup_unter_Linux_mit_duply https://www.thomas-krenn.com/de/wiki/Backup_unter_Linux_mit_duply] |
| (1) RSA and RSA (default)
| | # [https://wiki.archlinux.org/index.php/Duply#Configuration https://wiki.archlinux.org/index.php/Duply#Configuration] |
| (2) DSA and Elgamal
| | # [https://www.gnupg.org/howtos/de/GnuPGMiniHowto.html https://www.gnupg.org/howtos/de/GnuPGMiniHowto.html] |
| (3) DSA (sign only)
| | # [https://duply.net/ duply.net] |
| (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: '''Example 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
| |
|
| |
|
| ==conf-Datei==
| | [[Kategorie:duply]] |
|
| |
|
| ===Aufrufen der conf-Datei===
| | {{DISPLAYTITLE:duply}} |
|
| |
|
| Hier unter /root/.duply/backup/conf.
| | </noinclude> |
| | | [[Kategorie:Linux/Befehl]] |
| # vi /root/.duply/backup/conf
| |
| | |
| ===Symmetrische Verschlüsselung einrichten===
| |
| | |
| Dafür benötigt: 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
| |
| | |
| GPG_KEY='_KEY_ID_'
| |
| GPG_PW='_GPG_PASSWORD_'
| |
| | |
| Zusätzlich können in <tt>GPG_OPTS=</tt> 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 <tt>GPG_TEST='disabled'</tt> unterbunden werden.
| |
| | |
| <nowiki>#GPG_TEST='disabled'</nowiki>
| |
| | |
| 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ützten Protokolle und deren Syntax.
| |
| | |
| <nowiki># </nowiki> file://[/absolute_]path
| |
| <nowiki># </nowiki> ftp[s]://user[:password]@other.host[:port]/some_dir
| |
| <nowiki># </nowiki> hsi://user[:password]@other.host/some_dir
| |
| <nowiki># </nowiki> cf+<nowiki>http://container_name</nowiki>
| |
| <nowiki># </nowiki> imap[s]://user[:password]@host.com[/from_address_prefix]
| |
| <nowiki># </nowiki> rsync://user[:password]@other.host[:port]::/module/some_dir
| |
| <nowiki># </nowiki> <nowiki># rsync over ssh (only keyauth)</nowiki>
| |
| <nowiki># </nowiki> rsync://user@other.host[:port]/relative_path
| |
| <nowiki># </nowiki> rsync://user@other.host[:port]//absolute_path
| |
| <nowiki># </nowiki> <nowiki># for the s3 user/password are AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY</nowiki>
| |
| <nowiki># </nowiki> s3://[user:password]@host/bucket_name[/prefix]
| |
| <nowiki># </nowiki> s3+http://[user:password]@bucket_name[/prefix]
| |
| <nowiki># </nowiki> <nowiki># scp and sftp are aliases for the ssh backend</nowiki>
| |
| <nowiki># </nowiki> <nowiki>ssh://user</nowiki>[:password]@other.host[:port]/some_dir
| |
| <nowiki># </nowiki> tahoe://alias/directory
| |
| <nowiki># </nowiki> 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 <tt>TARGET_USER, TARGET_PASS</tt> eingetragen.
| |
| | |
| TARGET='scheme://user[:password]@host[:port]/[/]path'
| |
| | |
| Als nächstes kann mit der Option <tt>SOURCE=</tt> ''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 <tt>MAX_AGE</tt> wird das maximale Alter von Backups bestimmt.
| |
| | |
| MAX_AGE=1Y
| |
| | |
| Mit <tt>MAX_FULL_BACKUPS</tt> kann bestimmt werden wieviele Full-Backups duply maximal behält.
| |
| | |
| MAX_FULL_BACKUPS=5
| |
| | |
| Alternativ kann mit <tt>MAX_FULLBKP_AGE</tt> 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 entstehenden Zeitverlust einzuschränken teilt duply standardmäßig seine Backups in 25 MB große Dateien.
| |
| | |
| Dies kann mit dem <tt>VOLSIZE</tt> Parameter geändert werden.
| |
| | |
| VOLSIZE=10
| |
| DUPL_PARAMS="$DUPL_PARAMS --volsize $VOLSIZE "
| |
| | |
| Weiter 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 <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 (z.B. bei den Sicherchungs-Methoden "full/incr"), können diese explizit angegeben werden: <tt>pre_incr_post</tt>
| |
| | |
| ===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')
| |
| | |
| ==Exclude==
| |
| | |
| 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.
| |
| | |
| 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.
| |
| | |
| 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.
| |
| | |
| + /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 <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.
| |
| | |
| Der Befehl <tt>/usr/bin/duply /root/.duply/test incr</tt> 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=
| |
| | |
| * [http://duply.net/ duply] (duply.net)
| |
| | |
| =Quellen=
| |
| | |
| * [https://www.thomas-krenn.com/de/wiki/Backup_unter_Linux_mit_duply https://www.thomas-krenn.com/de/wiki/Backup_unter_Linux_mit_duply]
| |
| | |
| * [https://duply.net/duply_(simple_duplicity) https://duply.net/duply_(simple_duplicity)]
| |