Nun bearbeiten wir /root/.ftplicity/conf. Sie enthält folgende Variablen:
- GPG_KEY: die ID unseres GnuPG Keys;
- GPG_PW: das Passwort, das wir eingegeben haben, als wir den GnuPG Key erstellt haben;
- ZIEL: der Backup Server (inkl. des FTP Benutzernamens);
- ZIEL_PW: das FTP Passwort im Backup Server;
- QUELLE: das Quellverzeichnis (das heißt das Verzeichnis, das gesichert werden soll);
- HOECHSTALTER: das Alter der letzten Sicherung; ältere Sicherungen werden gelöscht;
- VERBOSITY: Menge an Information, die auf dem Screen von ftplicity angezeigt wird;
- TEMP_DIR: ein Verzeichnis für temporäre Dateien; wenn Du eine Sicherung wiederherstellst, muss dieses Verzeichnis zumindest genug Speicherplatz für die größte Datei in der Sicherung haben.
vi /root/.ftplicity/conf
# Daten fuer GPG-Schluessel GPG_KEY=7C6E958B GPG_PW='gpg_key_password' # Zugangsdaten fuer FTP-Server (URL-Format) ZIEL='ftp://backupuser@backup.example.com/' ZIEL_PW='secret' # Basisverzeichnis fuers Backup QUELLE='/home/exampleuser' # aeltester Wiederherstellungszeitpunkt HOECHSTALTER=1M # Ausfuehrlichkeit der Bildschirmausgaben (9 fuer Fehlersuche) VERBOSITY=4 # Verzeichnis fuer temporaere Dateien. Beim Restore muss dort # mindestens Patz fuer die groesste Datei im Backup sein TEMP_DIR=/tmp |
Danach ändern wir die Berechtigungen der Datei, sodass nur Root Lese-und Schreibberechtigungen hat:
chmod 600 /root/.ftplicity/conf
Nun können wir drei andere Dateien erstellen, obwohl dies ganz optional ist:
- /root/.ftplicity/exclude: beinhaltet eine Liste von Verzeichnissen, die von der Sicherung ausgeschlossen werden (ein Verzeichnis pro Zeile);
- /root/.ftplicity/pre: beinhaltet Befehle, die vor der Sicherung ausgeführt werden sollen (z.B. eine MySQL Datenbankausgabe erstellen);
- /root/.ftplicity/post: beinhaltet Befehle, die nach der Sicherung ausgeführt werden sollen.
Hier ist ein Muster /root/.ftplicity/exclude und /root/.ftplicity/pre Datei (der Syntax von /root/.ftplicity/post ist der gleiche wie in /root/.ftplicity/pre):
vi /root/.ftplicity/exclude
/proc /dev /sys |
chmod 600 /root/.ftplicity/exclude
vi /root/.ftplicity/pre
/usr/bin/mysqldump –-all-databases -u root -pyourrootsqlpassword > /home/exampleuser/db.sql |
(Beachte, dass die Datenbank während dem Erstellen von SQL dump gesperrt wird; das muss kein Problem für kleine Webseiten sein, es kann aber eins für vielbesuchte Seiten werden - Deine Besucher werden nicht in der Lage sein, während des mysqldump Datenbank basierte Seiten zu erreichen. Hier ist ein Link zu einer störungsfreien MySQL Sicherungsmethode: How To Back Up MySQL Databases Without Interrupting MySQL)
/root/.ftplicity/pre muss ausführbar sein (genauso wie /root/.ftplicity/post wenn Du eine erstellen willst):
chmod 700 /root/.ftplicity/pre
Wie ich bereits erwähnt habe, brauchst Du nur /root/.ftplicity/conf; die anderen Dateien sind optional.
Nun ist ftplicity für den Gebrauch bereit; um unsere Sicherung zu erstellen, lassen wir einfach Folgendes laufen
ftplicity backup
Wenn alles gut läuft, wirst Du nicht nach einem Passwort aufgefordert:
server2:~# ftplicity backup
Reading globbing filelist /root/.ftplicity/exclude
No signatures found, switching to full backup.
--------------[ Backup Statistics ]--------------
StartTime 1197309836.07 (Mon Dec 10 19:03:56 2007)
EndTime 1197309909.96 (Mon Dec 10 19:05:09 2007)
ElapsedTime 73.90 (1 minute 13.90 seconds)
SourceFiles 343
SourceFileSize 10859083 (10.4 MB)
NewFiles 343
NewFileSize 10859083 (10.4 MB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 343
RawDeltaSize 10826315 (10.3 MB)
TotalDestinationSizeChange 9052110 (8.63 MB)
Errors 0
-------------------------------------------------
server2:~#
Um die Sicherungen zu automatisieren, können wir einen Cron Job erstellen (ich erstelle zwei Cron Jobs, einen, der täglick läuft und inkrementelle Sicherungen erstellt, und einen, der einmal im Monat läuft und eine vollständige Sicherung erstellt und alte Dateien löscht):
crontab -e
# run the (incremental) backup each night at 03:23h 23 3 * * * /usr/local/bin/ftplicity backup # do a full backup once per month & delete old backups 47 4 1 * * /usr/local/bin/ftplicity full && /usr/local/bin/ftplicity purge –-force |
6 Eine Sicherung Mit ftplicity Wiederherstellen
Natürlich kannst Du ftplicity auch dafür verwenden, Sicherungen wiederherzustellen (Du wirst nicht nach einem Passwort gefragt). Der Syntax ist sehr einfach:
ftplicity restore /home/exampleuser
Sieh Dir die ftplicity Hilfe an um zu erfahren, welche anderen Optionen Du hast:
ftplicity --help
server2:~# ftplicity --help
Usage: ftplicity <Kommando> [<Optionen> ...]
Kommandos:
backup: inkrementelles Backup
full: vollstaendiges Backup erzwingen
list: Dateien im Backup auflisten
verify: Backup pruefen und Aenderungen anzeigen
purge [--force]:
veraltete Backup-Archive anzeigen [und loeschen]
cleanup [--force]:
Backup-Verzeichnis aufraeumen (nach Programmabbruch)
restore <Zielpfad> [<Alter>]:
Backup nach <Zielpfad> restaurieren [vom Stand <Alter>]
fetch <Datei/Verzeichnis> <Ziel> [<Alter>]
Datei/Verzeichnis einzeln restaurieren (siehe Beispiel)
Beispiele:
Veraltete Backup-Archive anzeigen und loeschen:
ftplicity purge --force
Vollstaendiges Backup nach /mnt zurueckspielen:
ftplicity restore /mnt
Datei /etc/passwd nach /root/pw restaurieren, Stand vor 4 Tagen:
ftplicity fetch etc/passwd /root/pw 4D
(siehe “man duplicity”, Abschnitt TIME FORMATS)
Dateien in /root/.ftplicity
conf Haupt-Konfigurationsdatei
pre wird vor einem Backup ausgefuehrt
post wird nach einem Backup ausgefuehrt
gpgkey enthaelt exportierten GPG-Schluessel
exclude Liste ausgeschlossener Dateien und Verzeichnisse
(siehe “man duplicity”, Abschnitt FILE SELECTION)
server2:~#
7 Links
- duplicity: http://duplicity.nongnu.org
- ftplicity: http://www.heise.de/ct/06/13/links/216.shtml
- Debian: http://www.debian.org
- Erstellen Von Verschlüsselten FTP Backups Mit duplicity Und ftplicity Auf Debian Etch - Seite 1
- Erstellen Von Verschlüsselten FTP Backups Mit duplicity Und ftplicity Auf Debian Etch - Seite 2


Am 18.06.2008 um 15:53 Uhr
Bei mir bleibt es bei dem erstellen des Keys höngen:
> Not enough random bytes available. Please do some other work to give
> the OS a chance to collect more entropy! (Need 277 more bytes)
Das öffnen einer zweiten Console und rumgeklimpere auf der Tastatur war leider nicht hilfreich!
Am 06.07.2008 um 00:17 Uhr
Habe das gleiche Problem. Habe hier gerade dazu einen Foreneintrag eröffnet:
http://www.howtoforge.de/forum/showthread.php?t=685
Am 04.03.2009 um 01:18 Uhr
zuerst Dankeschön für das Howto, es ist recht instruktiv.
duplicity fünktioniert auf etch (aktuell) einwandfrei.
beim Abarbeiten des Howto funtkioniert alles bis hierher:
ftplicity bringt beim Aufruf folgenden Fehler:
/tmp# ftplicity list
Traceback (most recent call last):
File “/usr/bin/duplicity”, line 373, in ?
if __name__ == “__main__”: main()
File “/usr/bin/duplicity”, line 347, in main
action = commandline.ProcessCommandLine(sys.argv[1:])
File “/usr/lib/python2.4/site-packages/duplicity/commandline.py”, line 236, in ProcessCommandLine
globals.backend = backends.get_backend(args[0])
File “/usr/lib/python2.4/site-packages/duplicity/backends.py”, line 41, in get_backend
return backend_class(pu)
File “/usr/lib/python2.4/site-packages/duplicity/backends.py”, line 330, in __init__
self.ftp.cwd(parsed_url.path)
File “/usr/lib/python2.4/ftplib.py”, line 494, in cwd
return self.voidcmd(cmd)
File “/usr/lib/python2.4/ftplib.py”, line 246, in voidcmd
return self.voidresp()
File “/usr/lib/python2.4/ftplib.py”, line 221, in voidresp
resp = self.getresp()
File “/usr/lib/python2.4/ftplib.py”, line 216, in getresp
raise error_perm, resp
ftplib.error_perm: 550 Failed to change directory.
hat jemand einen Hinweis?