Warning: Use of undefined constant K2BSSP_PREFIX - assumed 'K2BSSP_PREFIX' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 13

Warning: Use of undefined constant BASE_URL - assumed 'BASE_URL' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 14

Warning: Use of undefined constant info_link - assumed 'info_link' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 18

Warning: Use of undefined constant txt_help - assumed 'txt_help' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 19

Warning: Use of undefined constant settings_perma - assumed 'settings_perma' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 20

Warning: Use of undefined constant cookie_path - assumed 'cookie_path' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 21

Warning: Use of undefined constant cookie_expire - assumed 'cookie_expire' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 22

Warning: Use of undefined constant cookie_domain - assumed 'cookie_domain' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 23

Warning: Use of undefined constant css_path - assumed 'css_path' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 24

Warning: Use of undefined constant oben - assumed 'oben' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 25

Warning: Use of undefined constant overall - assumed 'overall' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 26

Warning: Use of undefined constant ausschluss_private - assumed 'ausschluss_private' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 27

Warning: Use of undefined constant services - assumed 'services' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 28

Warning: Use of undefined constant facebook - assumed 'facebook' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 29

Warning: Use of undefined constant status - assumed 'status' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 30

Warning: Use of undefined constant dummy_img - assumed 'dummy_img' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 32

Warning: Use of undefined constant txt_info - assumed 'txt_info' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 33

Warning: Use of undefined constant txt_fb_off - assumed 'txt_fb_off' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 34

Warning: Use of undefined constant txt_fb_on - assumed 'txt_fb_on' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 35

Warning: Use of undefined constant display_name - assumed 'display_name' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 36

Warning: Use of undefined constant referrer_track - assumed 'referrer_track' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 37

Warning: Use of undefined constant language - assumed 'language' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 38

Warning: Use of undefined constant twitter - assumed 'twitter' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 40

Warning: Use of undefined constant status - assumed 'status' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 41

Warning: Use of undefined constant dummy_img - assumed 'dummy_img' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 42

Warning: Use of undefined constant txt_info - assumed 'txt_info' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 43

Warning: Use of undefined constant txt_twitter_off - assumed 'txt_twitter_off' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 44

Warning: Use of undefined constant txt_twitter_on - assumed 'txt_twitter_on' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 45

Warning: Use of undefined constant display_name - assumed 'display_name' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 46

Warning: Use of undefined constant referrer_track - assumed 'referrer_track' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 47

Warning: Use of undefined constant tweet_text - assumed 'tweet_text' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 48

Warning: Use of undefined constant gplus - assumed 'gplus' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 50

Warning: Use of undefined constant status - assumed 'status' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 51

Warning: Use of undefined constant dummy_img - assumed 'dummy_img' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 52

Warning: Use of undefined constant txt_info - assumed 'txt_info' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 53

Warning: Use of undefined constant txt_gplus_off - assumed 'txt_gplus_off' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 54

Warning: Use of undefined constant txt_gplus_on - assumed 'txt_gplus_on' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 55

Warning: Use of undefined constant display_name - assumed 'display_name' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 56

Warning: Use of undefined constant referrer_track - assumed 'referrer_track' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 57

Warning: Use of undefined constant language - assumed 'language' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 58

Warning: Use of undefined constant ddsg_language - assumed 'ddsg_language' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/sitemap-generator/sitemap-generator.php on line 44
Linux: Serverbackup – verschlüsselte & inkrementelle Sicherung mit Duplicity | Jörg Bösche - Web & Fotografie

Linux: Serverbackup – verschlüsselte & inkrementelle Sicherung mit Duplicity


Warning: Use of undefined constant services - assumed 'services' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 108

Warning: Use of undefined constant services - assumed 'services' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 116

Warning: Use of undefined constant services - assumed 'services' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 116

Warning: Use of undefined constant services - assumed 'services' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 116

Warning: Use of undefined constant services - assumed 'services' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 116

Warning: Use of undefined constant services - assumed 'services' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 116

Warning: Use of undefined constant services - assumed 'services' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 116

Warning: Use of undefined constant services - assumed 'services' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 116

Warning: Use of undefined constant services - assumed 'services' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 116

Warning: Use of undefined constant services - assumed 'services' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 116

Warning: Use of undefined constant services - assumed 'services' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 116

Warning: Use of undefined constant services - assumed 'services' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 116

Warning: Use of undefined constant services - assumed 'services' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 116

Warning: Use of undefined constant services - assumed 'services' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 116

Warning: Use of undefined constant services - assumed 'services' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 116

Warning: Use of undefined constant services - assumed 'services' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 116

Warning: Use of undefined constant services - assumed 'services' (this will throw an Error in a future version of PHP) in /var/www/vhosts/hosting106428.a2f27.netcup.net/httpdocs/blog.joergboesche.de/Source/web/current/wp-content/plugins/2-klicks-button-socialshareprivacy-plugin/2-klicks-button-socialshareprivacy.php on line 116

Ein Grundsatz beim Betreiben eines Servers oder Datenspeichers lautet: Backup, Backup, Backup. Auch wenn der Server monate- oder jahrelang ohne Ausfälle läuft, kann der Ausfall und Datenverlust schneller eintreffen als Gedacht. Gerade in Momenten, wo ein Server und dessen Hardware stark beansprucht wird, kommt es gerne nach längeren Laufzeiten zu hardwareseitigen, als auch softwareseitigen Ausfällen. Liegt kein Backup vor, ist die Katastrophe perfekt! Festplatten-Ausfälle sind meist die Ausnahme, vor allem da heutzutage jeder Server mit mehreren Festplatten in einem RAID-Verbund ausgestattet ist. Vielmehr werden Bedienungsfehler oder ein unachtsames Kommando mit einem Root-User unter Linux zum Verhängnis und plötzlich sind Daten verloren. Bildersammlungen, Musikarchive, (MySQL-)Datenbanken oder auch Internetseiten sind von jetzt auf gleich komplett gelöscht. Würde ein Backup vorliegen, wären die Daten in überschaubarer Zeit wiederhergestellt.

Nicht nur ein Backup zählt, sondern regelmäßige Backups und inkrementelle Backups beugen solchen Katastrophen des Datenverlustes vor. Für Serverbetreiber ist ein automatisches Backup Pflicht, um im Fehlerfall schnell wieder den gewohnten Service und Datenbestand zur Verfügung zu stellen.

Ein geeignetes Backup-Tool unter vielen ist die Software "Duplicity" und steht in vielen Paketquellen von Linux-Distributionen wie Ubuntu, Debian, etc. zur Verfügung. Der große Vorteil von Duplicity ist, dass das Backup über zahlreiche Transferprotokolle übertragen werden kann. Unterstützt werden Protokolle wie HTTP, FILE, FTP, IMAP(S), RSYNC, SCP, Amazon-S3, SSH, WEBDAV, und viele Weitere.
Die Sicherheitskomponente wird ebenfalls mitgeliefert, denn alle erzeugten Backups mit Duplicity werden mit einem GPG-Schlüssel versehen und damit verschlüsselt. Wer seine Backups dann über ein Protokoll wie SCP, RSYNC, SSH oder HTTPS an den Backup-Server überträgt, brauch sich keine Sorgen um das Abhören / Lauschen des Datentransfers zu machen.

Das Einsparen von Speicherplatz und Datenverkehr (Traffic) auf und zu dem Backup-Server spielt auch eine große Rolle. Ein tägliches FULL-Backup erzeugt oftmals sehr viel Datenverkehr und belegt schnell mehere TerraByte an Speicherplatz. Auch hier ist Duplicity eine gute Wahl, denn die Backup-Software unterstützt inkrementelle Backups und es lassen sich nach einem definierten Zeitraum bzw. einer Zeitspanne, z.B. 1 Monat, ein neues FULL-Backup erstellen. - Und das alles automatisiert.

Duplicity unter Linux (Ubuntu/Debian) installieren

Das Paket "duplicity" kann direkt aus den Paketquellen wie zum Beispiel Ubuntu und Debian Canonical installiert werden. Sofern der Datenverkehr zum Backup-Server über ein FTP-Protokoll statt finden soll, muss noch das Paket "ncftp" dazu installiert werden.

sudo apt-get install duplicity
sudo apt-get install ncftp

Einfaches Backup des Verzeichnis "/etc" und Transfer via FTP

export PASSPHRASE=SELFGENERATEDUNIQEPASSPHRASEFORGPGENCRYPTION
export FTP_PASSWORD=FTPUSERPASSWORD
duplicity /etc ftp://ftpuser@ftp.domain.tld/etc
unset PASSPHRASE
unset FTP_PASSWORD

Die "PASSPHRASE" ist ein langer selbst generierter Schlüssel, der für die Verschlüsselung des Backups mit Duplicity genutzt werden soll. Es ist zu empfehlen den Schlüssel länger als 12 Zeichen zu wählen. Für den Datenverkehr wird der FTP-Benutzername "ftpuser" und das FTP-Passwort "FTP_PASSWORD" benötigt. Das FTP-Passwort wird in eine Variable gespeichert, damit es beim Transfer nicht via "top" oder "ps aux" auslesbar ist. Der Befehl "duplicity" führt das Backup mit den gegebenen Parametern durch. Gesichert wird in diesem Beispiel der Ordner "/etc".

Wiederherstellung einer Datei aus dem Backup mit Duplicity:

export PASSPHRASE=SELFGENERATEDUNIQEPASSPHRASEFORGPGENCRYPTION
export FTP_PASSWORD=FTPUSERPASSWORD
duplicity --file-to-restore etc/rc.local ftp://ftpuser@ftp.domain.tld/etc /home/yourUser/rc.local
unset PASSPHRASE
unset FTP_PASSWORD

Wiederherstellung eines Verzeichnisses aus dem Backup mit Duplicity:

export PASSPHRASE=SELFGENERATEDUNIQEPASSPHRASEFORGPGENCRYPTION
export FTP_PASSWORD=FTPUSERPASSWORD
duplicity etc/ ftp://ftpuser@ftp.domain.tld/etc /home/yourUser/myBackupFolderForETC
unset PASSPHRASE
unset FTP_PASSWORD

Backup von vor 3 Tagen wiederherstellen (Parameter -t)

export PASSPHRASE=SELFGENERATEDUNIQEPASSPHRASEFORGPGENCRYPTION
export FTP_PASSWORD=FTPUSERPASSWORD
duplicity -t 3D etc/ ftp://ftpuser@ftp.domain.tld/etc /home/yourUser/myBackupFolderForETC
unset PASSPHRASE
unset FTP_PASSWORD

Ein sehr ausführliches Backup-Skript ist in dem Wiki von Hetzner zu finden.

Die Option –full-if-older-than erstellt nach der angegebenen Zeitspanne automatisch ein neues Full-Backup. Ist der Zeitraum zum letzten vollständigen Backup noch nicht überschritten, werden weiterhin inkrementale Backups erstellt. Der Parameter "remove-older-than" aus dem Duplicity Skript von Hetzner, sorgt dafür, dass Backups die älter als 2 Monate sind, gelöscht werden.

Dateien oder Verzeichnisse, die vom Backup ausgeschlossen werden sollen, werden in dem Duplicity-Skript mit dem Parameter "exclude-filelist" an Duplicity übergeben.
Es ist möglich für jedes Verzeichnis eine Ausschlussliste anzulegen. Für das Wurzelverzeichnis (/) sind die Ausschlüsse in der Datei /usr/local/etc/duplicity-exclude.conf abgelegt. Für alle weiteren Verzeichnisse unter /usr/local/etc/duplicity-exclude-$DIR.conf Zum Beispiel für das "Home-Verzeichnis" in "/usr/local/etc/duplicity-exclude-home.conf".

Beispiel einer Ausschlussliste für "/":
- /dev
- /proc
- /sys
- /tmp
- /etc
- /home
- /srv
- /var/cache

Inkrementelle Sicherung automatisch (jede Nacht) ausführen

Für automatische und regelmäßige Backups mit Duplicity eignet sich ein täglicher Cronjob. Das Bash/Shell-Skript kann unter /etc/cron.daily (täglich), /etc/cron.weekly (wöchentlich) oder /etc/cron.monthly (monatlich) abgelegt werden. Für den Ausführzeitpunkt kann auch eine Crontab (cron.d) verwendet werden. Dazu muss eine Datei unter /etc/cron.d/ erstellt werden.
Der Beispiel-Cronjob wird jede Nacht um 00:05 Uhr ausgeführt.

# /etc/cron.d/duplicity-backup
0 5 * * * root /usr/local/sbin/duplicity-backup.sh >/dev/null 2>&1

Tags: , , , , , , , ,

Hinterlasse eine Nachricht