Wettbewerb: Script für Backupspace

  • Für unser neues Feature, dem Backupspace für vServer, suchen wir für unsere Kunden ein Script was diesen hilft automatisiert Backups anzulegen.


    Folgende Anforderungen haben wir an das Script:



    • Backups sollen automatisiert auf dem Backupspace angelegt werden können, z.B. täglich.
    • Backups sollen inkrementell abgelegt werden, sprich nur geänderte Dateien sollen erneut gespeichert werden
    • Über Config-Files sollen die zu sichernden Datenbanken und Verzeichnisse simpel angegeben werden können


    Beispiel einer Config-Datei:

    Code
    #Datenbank   User    Passwort
    db1   user1   passwort1
    db2   user2   passwort2

    Was gibt es als Belohnung für die Arbeit?



    • Einen bei uns gebuchten vServer ein Jahr kostenlos
    • Einen passenden Backupspace ein Jahr kostenlos


    Die fertigen Scripte können hier vorgestellt werden. Anschließend können die Scripte hier bewertet werden. Die ersten drei Scripte gewinnen die oben genannte Belohnung.


    Die drei Scripte die die Ausschreibung gewonnen haben, werden wir dann im Wiki den Kunden zur Verfügung stellen.


    Die Ausschreibung endet, sobald drei brauchbare Scripte hier vorgestellt wurden.


    Wir wissen das es viele fertige Scripte dafür gibt. Es sollte aber simpel und effektiv sein. Daher ein eigenes.

  • Zitat

    Wir wissen das es viele fertige Scripte dafür gibt. Es sollte aber simpel und effektiv sein. Daher ein eigenes.


    Ich hab mich lange mit der Problematik beschäftigt und habe nach unzähligem Testen duplicity als sehr einfach und effektiv als klaren Sieger gewählt.


    Gerne verfasse ich dafür auch, sofern zugelassen ein Ausführliches How to, sodass auch jemand der 0 Ahnung von Linux hat sein System ohne Probleme backuppen kann.

  • Lucan:


    Ein Howto für duplicity wäre auch möglich.


    @sim4000:


    Ein Backlink aus dem Wiki ist möglich. Die Rechte von dem Script müssten aber an uns über gehen. Dafür gibt es ja auch eine Belohnung im Wert von bis zu 347,88 Euro (je nach vServer).

  • Zitat

    Ein Backlink aus dem Wiki ist möglich. Die Rechte von dem Script müssten aber an uns über gehen. Dafür gibt es ja auch eine Belohnung im Wert von bis zu 347,88 Euro (je nach vServer).

    Wollte gerade sagen. Es ist ja nicht so, dass man für das Script nichts oder wenig bekäme. Da kann man ruhig mal auf die Rechte an seinem Laien*-Script verzichten.

    *) Soll jetzt nicht abwertend klingen, aber ist ja so. Machst du das professionell? Hast du studiert und/oder dicke Ausbildungen oder Zertifikate? Keine sagt, das Scripts von Laien nicht gut sein können, bitte nicht falsch auffassen.

    Mein Server:
    v(olks)Server 1. Serie: 2,5GHz, 1024MB RAM, 1024MB Swap, 2x60GB-Raid1-HDD, Traffic-Flat
    Node:
    78.46.117.9x | hos-tr2.ex3k4.rz7.hetzner.de

  • Das ist auch sehr nobel :)
    Aber netcup will das wahrscheinlich aus rechtlichen Gründen...

    Mein Server:
    v(olks)Server 1. Serie: 2,5GHz, 1024MB RAM, 1024MB Swap, 2x60GB-Raid1-HDD, Traffic-Flat
    Node:
    78.46.117.9x | hos-tr2.ex3k4.rz7.hetzner.de

  • Ja, dahinter stehen wieder komplexe Vereinbarungen mit unseren Versicherungen. Unsere Haftpflicht setzt als Bedingung voraus, dass alles auf unseren Websites (Forum ausgeschlossen), unser Eigentum ist. Auch Überwacht ein Rechtsanwalt unser geistiges Eigentum.

  • System Backup mit Duplicity


    Auf folgendem System getestet:
    Debian Lenny


    Zuerst loggen wir uns per SSH auf unserem Server ein.
    Wir updaten das System:

    Code
    aptitude update
    aptitude safe-upgrade


    Danach installieren wir uns Python sowie librsync, lftp und ncftp

    Code
    aptitude install python-dev
    aptitude install librsync-dev
    aptitude install ncftp
    aptitude install lftp


    Anschliesend laden wir uns Duplicity runter

    Code
    cd /tmp
    wget http://launchpad.net/duplicity/0.6-series/0.6.08b/+download/duplicity-0.6.08b.tar.gz

    Wenn wir das gemacht haben, entpacken und installieren wir duplicity

    Code
    tar xvzf duplicity-0.6.08b.tar.gz
    cd duplicity-0.6.08b
    python setup.py install


    Jetzt
    erstellen wir uns einen GPG Key

    Code
    gpg –-gen-key

    (beim kopieren aufpassen, lieber von Hand eingeben)


    Alle nun kommenden Fragen bestätigen wir durch das drücken unserer [ENTER] Taste.
    Bis folgende Frage auftauch:
    Is this correct? (y/N) Das bestätigen wir mit y


    Anschliesend gibst du dort die geforderten Eingaben an (Dein Name, Email Adresse etc.


    Bis folgende Frage kommt:

    Zitat

    Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?

    Dort bestätigen wir alles mit O


    Jetzt muss eine Passphrase angegeben werden - sprich Passwort deiner wahl angeben und bestätigen. - GUT MERKEN!


    Anschliesend wird der GPG Key erstellt.
    (Das kann ein weilchen dauern, um das ganze zu beschleunigen hilft es eine 2te Konsole zu öffnen und ein paar Eingaben zu tätigen)



    Sobald der Key erstellt wurde, erhaltet ihr so eine Aussage:

    Hier müsst ihr euch den Key in folgender Zeile merken:

    Zitat

    gpg: key XXXXXXX marked as ultimately trusted


    Danach installieren wir uns Duplicity Wrapper Script:

    Code
    cd /tmp
    wget http://sourceforge.net/projects/ftplicity/files/duply%20%28simple%20duplicity%29/1.5.x/duply_1.5.2.3.tgz/download
    tar xvzf duply_1.5.2.3.tgz
    cp duply_1.5.2.3/duply /usr/local/bin


    Darauf erstellen wir uns ein Backup Profil:

    Code
    duply ProfilName create

    (ProfilName durch den gewünschten Namen ersetzen z.B. Server1)


    Jetzt passen wir unsere Config Datei an:

    Code
    cd /root/.duply/ProfilName
    nano conf


    Und passen in der Datei folgende Zeilen an:

    Zitat

    GPG_KEY='_KEY_ID_'
    GPG_PW='_GPG_PASSWORD_'

    Statt _KEY_ID_ gebt ihr euren GPG Key ein.
    Statt _GPG__ gebt ihr eure Passphrase ein, die Ihr beim erstellen des GPG Keys eingegeben habt.



    Danach ersetzen wir in der Conf folgende Zeile:

    Code
    TARGET='scheme://user[:password]@host[:port]/[/]path'

    Mit:

    Code
    TARGET='ftp://FTPBenutzer@FTPserverhostname/BackupVerzeichniss/'
    TARGET_PW='FTPBenutzerPasswort'

    (Natürlich alle Angaben bei euch anpassen)


    Wenn ihr das gemacht habt, passen wir noch folgende Angabe an:

    Code
    # base directory to backup
    SOURCE='/path/of/source'

    Hier geben wir an, welche Verzeichnisse wir sichern wollen.


    In unserem Beispiel sichern wir den gesamten Server geben dort also folgendes an:


    Code
    # base directory to backup
    SOURCE='/'

    Wir speichern die Datei ab.


    Der Datei geben wir jetzt die richtigen Rechte

    Code
    chmod 600 /root/.duply/ProfilName/conf

    Anschliesend erstellen wir uns das Backup Verzeichniss, welches wir in der Config angegeben haben auf unserem FTP Backup Space

    Code
    lftp ftpbenutzername:ftppasswort@ftpserverhostname.de

    (Natürlich alle Angaben bei euch anpassen)


    Wenn ihr anschliesend enter drückt müsste das ganze so aussehen:

    Zitat

    lftp ftpbenutzername:ftppasswort@ftpserverhostname.de:~>


    Jetzt gebt ihr folgendes ein:

    Code
    mkdir BackupVerzeichniss

    (Das BackupVerzeichniss, dass ihr vorher in der Config angegeben habt).
    Nun schliesen wir die verbindund durch die Eingabe von

    Code
    exit



    Da wir den ganzen Server sichern wollen, müssen wir noch eine exclude Datei anlegen, die bestimmte Verzeichnisse vom Backup ausschliest, da das Backup sonst Fehlerhaft wird.

    Code
    nano /root/.duply/ProfilName/exclude


    Dort geben wir folgendes ein:

    Anschliesend speichern wir die Datei ab und geben Ihr die passenden Rechte:

    Code
    chmod 600 /root/.duply/ProfilName/exclude


    Danach legen wir erstmal ein Full Backup an:

    Code
    duply ProfilName backup

    (ProfilName wieder anpassen)




    Sobald das Backup durch ist, legen wir uns einen Cronjob an, der folgendes bewirkt:


    * 1 mal im Monat ein Full Backup
    * alle 12 Stunden ein inkrementelles Backup
    * Veraltete Backups werden gelöscht (älter als 1 Monat)


    also geben wir folgendes ein:

    Code
    crontab -e

    und fügen folgenden Inhalt ein:

    Code
    # run the (incremental) backup every 12 hours!
    00 */12 * * * /usr/local/bin/duply ProfilName backup
    
    
    
    
    # do a full backup once per month & delete old backups
    27 3 1 * * /usr/local/bin/duply ProfilName full && /usr/local/bin/duply ProfilName purge --force

    (ProfilName wieder anpassen)
    Und speichern das ganze wieder ab.



    Und das wars auch schon, die Backups werden anschliesend immer automatisch erstellt und gelöscht (sofern veraltet) und jeder Admin kann beruhigt schlafen ;)




    ------




    Wer vor einem Backup noch seine gesamten MYSQL Datenbanken backuppen will, muss folgendes machen:


    Code
    nano /root/.duply/ProfilName/pre

    (ProfilName natürlich wieder anpassen)
    Dort fügen wir folgendes ein:

    Code
    /usr/bin/mysqldump –-all-databases -u root -pDEINMYSQLROOTPASSWORT > /home/exampleuser/db.sql

    DEINMYSQLROOTPASSWORT dort schreibst du natürlich dein Mysql Root Passwort hin.
    Zum schluss machen wir die Datei ausführbar:

    Code
    chmod 700 /root/.duply/ProfilName/pre

    (ProfilName natürlich wieder anpassen)


    Das ganze bewirkt, dass jetzt immer vor dem Backup alle Mysql Datenbanken im Ordner /mysqldump/ gesichert werden.
    Beachte dabei aber, dass das Backup die Mysql Datenbank während des Backups sperrt, damit keine Inkonsistenz entsteht.
    Sprich Websites die auf die Datenbank zugreifen, werden eben jene für den Dump nicht erreichen können.
    Bei kleinen Datenbanken geht das allerdings sehr schnell, so dass das ganze nicht ganz so schlimm ist.



    -------



    Zum Schluss noch ein paar Beispiel befehle:


    Veraltete Backups anzeigen und löschen:

    Code
    duply purge ProfilName –force

    Komplettes Backup nach /tmp zurückspielen:

    Code
    duply ProfilName restore /tmp

    z.B. die Datei test.php von vor 2 Tagen in /tmp wiederherstellen:

    Code
    duply ProfilName fetch test.php /tmp 2D

    Zu Duply:


    Durch die Eingabe von

    Code
    duply usage

    erhaltet ihr eine Übersicht an Befehlen



    zusätzliche Infos:
    http://duplicity.nongnu.org/



    Viel Erfolg ;)

  • Das sich howtos für die selbe Software wohl ähneln, ist wohl nicht zu vermeiden, schlieslich müssen ja mehr oder weniger die selben befehle verwendet werden.


    Im ispCP howto ist aber unteranderem ne veraltete Version verwendet, deswegen funktionieren die meisten Befehle wie sie dort stehen auch nicht mehr.

  • Die aktuelle Version gibts nur in den Backports und zur Zeit wo ich das Howto geschrieben hab, war in den Backports nur die Version 0.6.08a verfügbar, welche nen Fehler hatte, wodurch nichts funktionierte.

  • Arbeitet hier noch jemand aktiv an einer Lösung?
    Hab mich, dadurch das ich auch FTP Backupspace habe, mal an eine Lösung gemacht.


    Die ist auch fast fertig. :)


    Aktuelle Features:

    • Backup auf die Minute genau Planbar
    • Backup über FTP und SSH (auch mit Keys)
    • Backup von Ordnern und MySQL Datenbanken
    • Konfigurierbar über XML Datei
    • Backups die älter als x Tage sind automatisch löschen
  • Zitat von sim4000;23218

    Die ist auch fast fertig. :)


    Ich habe zwar eine Lösung, wäre aber auch an deiner Interessiert. Wie weit bist du? :cool:

    Rechtschreibfehler sind unter Creative Commons BY-NC-ND 3.0 DE lizenziert.