Deutsch| English

Erstellen Von Verschlüsselten FTP Backups Mit duplicity Und ftplicity Auf Debian Etch

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

 

 

3 Responses to “Erstellen Von Verschlüsselten FTP Backups Mit duplicity Und ftplicity Auf Debian Etch”

  1. Feanwulf Sagt:

    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!

  2. mcclane Sagt:

    Habe das gleiche Problem. Habe hier gerade dazu einen Foreneintrag eröffnet:
    http://www.howtoforge.de/forum/showthread.php?t=685

  3. gamma7 Sagt:

    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?

Kommentar

Du musst eingeloggt um einen Kommentar zu hinterlassen.