da ich unter ispcp eine sicherungs möglichkeit vermisst hatte, habe ich mich in der letzten zeit etwas im internet umgeschaut. ich suchte nach einer kompatibelsten, sichersten und bedienungs- freundlichsten backup lösung unter ispcp. die meisten root server besitzer/mieter bekommen ja grundsätzlich einen ftp backup space automatisch dazu.
da ich bei meinem isp reichlich davon bekommen habe, wollte ich diesen ftp backup space auch nutzen. mit diesem HowTo kann man mittels gpg die sicherungsdaten verschlüsseln und dann per
duplicity auf einen entfernten ftp server in verschiedenen blöcken uploaden!
man kann
duplicity unter debian per apt-get installieren, aber diese version ist sehr alt und beinhaltet viele bugs die sich nach etwa 3-4 tagen bemerkbar machen. ich wollte diese version absichtlich nicht nutzen weil das einfach keinen sinn bringt, eine so alte/verbuggte version einzusetzen. ich installierte die neueste version auf meinen servern und hatte dann das problem das der heise online ftplicity wrapper (wrapper script für
duplicity) mit der neuen version nicht kompatibel sei. da half mir sf.net (sourceforge)! ein paar leute haben dieses wrapper script tatsächlich weiter entwickelt und dieses ist vollstens mit der neuesten version von
duplicity kompatibel.
so nun zur sache:
---> zuerst müssen wir die
duplicity software unter debian kompatibel machen: wir brauchen diese software (bei bedarf bitte nachinstallieren):
* Python v2.3 or later (http://www.python.org)
* librsync v0.9.6 or later (http://librsync.sourceforge.net)
* GnuPG for encryption (http://www.gnupg.org)
* GnuPGInterface 0.3.2 or later (http://py-gnupg.sourceforge.net)
* NcFTP version 3.1.9 or later (http://www.ncftp.com)
* Boto 0.9d or later (http://code.google.com/p/boto)
* pexpect 2.1 or later (http://pexpect.sourceforge.net)
* Python development files, normally found in module 'python-dev'.
* librsync development files, normally found in module 'librsync-dev'.
# apt-get install python-dev
# apt-get install librsync-dev
---> bitte auch NcFTP per apt installieren:
#apt-get install ncftp
---> wir wechseln ins /tmp verzeichniss und laden uns die neueste
duplicity version herunter:
# cd /tmp
# wget
http://download.savannah.gnu.org/release....02.tar.gz
---> wir entpacken die neueste
duplicity version und starten die installation:
# tar xvzf
duplicity-0.5.02.tar.gz
# cd
duplicity-0.5.02
# python setup.py install
dabei sollten keine fehler angezeigt werden und es sollte nach der installation ein OK dargestellt bzw. angezeigt werden. everything is fine so in der richtung....
---> anschliessend erstellen wir unseren key:
# gpg –-gen-key
alle mit enter bestätigen bis gefragt wird:
Is this correct? (y/N) --> Y (da sagen wir yes (y)
---> dann geben wir unseren namen und unsere email adresse ein:
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:
“backup muster <testuser@loly.com>”
Real name: <– Dein name, backup muster
Email address: <– deine email adresse
Comment:
You selected this USER-ID:
“backup muster <testuser@loly.com>”
Change (N)ame, ©omment, (E)mail or (O)kay/(Q)uit? <– hier bitte ein O als (OK) eingeben!
---> dann müssen wir ein kennwort für die verschlüsselung setzen. dieses kennwort brauchen wir später. bitte gut merken!:
# you need a passphrase to protect your secret key. <– bitte hier ein 8 stelliges passwort eingeben.
---> nun wird der key erstellt. es macht sich ganz gut eine zweite console zu öffnen und ein paar buchstaben einzugeben, sodass der zufallszahlengenerator genügend informationsgehalt erlangen kann: das kann etwas länger auch dauern (hängt vom server ab)!
wenn der key erstellt wurde ist für uns diese zeile am ende wichtig:
# gpg: key _hier_steht_dein_code marked as ultimately trusted
diesen code sowie das von uns eingesetzte kennwort benötigen wir um die daten verschlüsselt auf einen entfernten ftp server abzulegen.
das ziel ist es über das ftplicity wrapper script (OHNE USER EINGABE) per cron full sicherungen bzw. inkrementelle sicherungen automatisierend zu machen!
---> wir laden uns das neueste ftplicity wrapper script, von sourceforge herunter und installieren es, und erstellen am ende ein sicherungs profil: ich nenne dieses profil backup_profile:
# cd /tmp
# wget
http://downloads.sourceforge.net/ftplici...g_mirror=0
# tar xvzf ftplicity_1.4.0b1.tgz
# cp ftplicity_1.4.0b1/ftplicity /usr/local/bin
# ftplicity create backup_profile
---> jetzt können wir erstmallig das ftplicity script starten und dadurch wird eine konfigurations datei in: /root/.ftplicity/backup_profile/conf erstellt.
#ftplicity backup_profile
---> anschliessend editieren wir die /root/.ftplicity/backup_profile/conf datei und passen sie an unsere bedürfnisse an (bitte das backup verzeichniss auf dem entfernten ftp server vor der sicherung erstellen!).
Code:
# gpg key data
GPG_KEY=dein_gpg_code
GPG_PW='dein_passwort_hier_einfügen'
# credentials & server address of the ftp server (URL-Format)
TARGET='ftp://benutzername@serveradresse_oder_ip/backupverzeichniss/'
TARGET_PW='ftp_server_passwort'
# was wollen wir sichern? z.b. /var/www/ ?
SOURCE='/var/www/'
# oldest time frame for restoration, see duplicity man page, chapter TIME_FORMATS)
MAX_AGE=1M
# Number of full backups to keep. Used for the "purge-full" command.
# See duplicity man page, action "remove-all-but-n-full".
MAX_FULL_BACKUPS=2
# verbosity of output (9 for bug fixing)
VERBOSITY=4
# temporary file space. at least the size of the biggest file in backup
# for a successful restoration process.
TEMP_DIR=/tmp
# sets duplicity --time-separator option (since v0.4.4.RC2) to allow users
# to change the time separator from ':' to another character that will work
# on their system. HINT: For Windows SMB shares, use --time-separator='_'.
# NOTE: '-' is not valid as it conflicts with date separator.
#DUPL_PARAMS="$DUPL_PARAMS --time-separator _ "
# activates duplicity --short-filenames option, when uploading to a file
# system that can't have filenames longer than 30 characters (e.g. Mac OS 8)
# or have problems with ':' as part of the filename (e.g. Microsoft Windows)
#DUPL_PARAMS="$DUPL_PARAMS --short-filenames "
# activates duplicity --full-if-older-than option (since duplicity v0.4.4.RC3)
# forces a full backup if last full backup reaches a specified age, for the
# format of MAX_FULLBKP_AGE see duplicity man page, chapter TIME_FORMATS
#MAX_FULLBKP_AGE=1M
#DUPL_PARAMS="$DUPL_PARAMS --full-if-older-than $MAX_FULLBKP_AGE "
# set the size of backup chunks to VOLSIZE MB instead of the default (einzelne backup files). Bei mir ist 50 MB eingestellt. bei 5mb hätten wir zig tausende files am ftp!
# VOLSIZE must be number of MB's to set the volume size to.
#VOLSIZE=50 <---- bitte die grösse der files definieren in MB
#DUPL_PARAMS="$DUPL_PARAMS --volsize $VOLSIZE "
# more duplicity command line options can be added in the following way
# don't forget to leave a separating space char at the end
#DUPL_PARAMS="$DUPL_PARAMS --put_your_options_here "
----> verbindung zum ftpserver aufbauen und sicherungs verzeichniss was wir in der conf angegeben haben erstellen:
# lftp benutzername:passwort@ftp.deinedomain.de
# mkdir backupverzeichniss
#exit
dann hätten wir die conf datei angepasst und sind eigentlich fast schon fertig.
---> jetzt setzen wir berechtigungen auf den ftplicity files/confs:
# chmod 600 /root/.ftplicity/backup_profile/conf
---> wir können auch bestimmte verzecichnisse aus der sicherung ausschliessen. wir müssen lediglich eine /exclude datei in /root/.ftplicity/backup_profile/ erstellen und mit diesem inhalt füllen:
# vim /root/.ftplicity/backup_profile/exclude
Code:
/testordner <--- ordner die ausgeschlossen werden
/testornder1 <--- ordner die ausgeschlossen werden
---> wir setzen korrekte rechte auf die datei exclude:
# chmod 600 /root/.ftplicity/backup_profile/exclude
so ist ftplicity für den gebrauch fertig eingestellt/installiert! um unsere sicherung zu erstellen, führen wir in der console einfach folgenden befehl aus:
# ftplicity backup_profile backup
per crontab können wir alle 12 stunden eine sicherung durchführen. die software erkennt ob ein full backup schon vorliegt oder nicht. zusätzlich sollen monatlich die backups aufgeräumt werden und alte backups gelöscht werden!
# crontab -e
---> diesen inhalt ins cron einfügen:
Code:
# run the (incremental) backup every 12 hours!
00 */12 * * * /usr/local/bin/ftplicity backup_profile backup
# do a full backup once per month & delete old backups
27 3 1 * * /usr/local/bin/ftplicity backup_profile full && /usr/local/bin/ftplicity backup_profile purge --force
bitte backup_profile immer mit dem profil_namen ersetzen den du am anfang auch erstellt hast!
mit dieser anleitung hätten wir eine wirklich mächtige verschlüsselte ftp backup sicherung die sich sehen lässt. das zurücksichern ist kinderleicht und lässt sich in der console durchführen:
das sind die möglichen ftplicity kommandos - bitte ftplicity --help in der console ausführen:
Code:
COMMANDS:
usage: get usage help text
create: creates a configuration profile
backup: incremental backup with pre/post script execution
full: force full backup
incr: incremental backup
list: list all files in backup
verify: list files changed since latest backup
purge [--force]:
shows outdated backup archives (older than $MAX_AGE)
[--force, delete these files]
purge-full [--force]:
shows outdated backups (based on $MAX_FULL_BACKUPS,
which defines the number of 'recent' full backups and
associated incrementals to keep)
[--force, delete these files]
cleanup [--force]:
shows broken backup archives (e.g. after unfinished run)
[--force, delete these files]
restore <target_path> [<age>]:
restore the backup to <target_path>
[as it was at <age>]
fetch <file/folder> <target_path> [<age>]:
restore single file/folder from backup
[as it was at <age>]
pre/post: execute <profile>/pre or <profile>/post script
(for debugging purposes)
hier ein paar beispiele:
Veraltete Backup-Archive anzeigen und löschen:
ftplicity purge backup_profile –force
Vollständiges Backup nach /tmp zurückspielen:
ftplicity backup_profile restore /tmp
Datei /var/www/testdatei nach /tmp restaurieren - stand vor 2 tagen:
ftplicity backup_profile fetch testdatei /tmp 2D
(siehe “man duplicity”, Abschnitt TIME FORMATS)
bei fragen stehe ich gerne zur verfügung!
das backup system sichert bei mir umgerechnet 150GB täglich, und das mehrfach.
hier ein paar zusätzliche infos:
http://duplicity.nongnu.org
ausserdem können mehrere sicherungs profile erstellt werden und zu unterschiedlichen zeiten ausgeführt werden. man kann auch das gesamte "/" sichern wobei in der exculde datei dieses drinnen stehen MUSS:
jeder soll es an seine bedürfnisse anpassen. ich übernehme keine gewähr auf funktionalität! bitte viel kaffe holen und sorgfälltig alle eingaben prüfen.
duplicity sendet ausführliche backup beschreibung per email an den root user. bitte einfach in der datei /etc/aliases die umleitung bei dem root user auf deine mail einstellen.
root: deinemail@deinedomain.de
anschliessend das kommando:
# newaliases
in der konsole ausführen.
ganz wichtig!
bitte sichert eure
duplicity/ftplicity konfiguration an einen sicheren ort ausserhalb des servers (vorallem den GPG-Key), da ansonsten eine rücksicherung nach einem systemausfall nicht mehr möglich wäre.
MENKI