Backup: SimpleBackup

Die Einrichtung unseres Servers ist ja nun mittlerweile beachtlich fortgeschritten, daher wird es mal Zeit die verschiedenen Jails und die persönlichen Daten zu sichern. Wir wollen ja nicht, dass was verloren geht.
Ich habe mir ein relativ einfaches Skript ausgesucht, da ich keinen Backup-Server betreiben will, der mir meine Clients sichert, sondern ich lediglich ein paar gepackte Dateien auf nen Backup-Server speichern will. Daher verwende ich das Skript "SimpleBackup".

  1. Zunächst laden wir uns die aktuelle Version (aktuell 1.8.1) von der Website herunter und entpacken sie. Da ich auf einen Server sichere, der nur über SFTP erreichbar ist, installiere ich mir noch den Port 'p5-Expect' mit folgendem Befehl:

    # cd /usr/ports/lang/p5-Expect/ && make install clean

  2. Noch ein Hinweis zu den verfügbaren Archiven: Ich würde "rar" empfehlen, da "tar.bz2", mein eigentlicher Favorit, keine leeren Verzeichnisse packen kann. Das ist bei den Jails aber eventuell mal unangenehm, daher für die Jails nicht zu empfehlen.

    Da "rar" leider nicht openSource ist, kannst du nur die Shareware zum Testen nutzen, solltest aber bei dauerhaftem Einsatz eine Lizenz kaufen. Aber um nun "rar" zu installieren, führe folgenden Befehl aus:

    # cd /usr/ports/archivers/rar/ && make install clean

  3. Da ich das Skript in das Verzeichnis '/root/backup/' entpackt habe, lege ich mir ein Unterverzeichnis 'configs' in '/root/backup/' an. Hier werden dann die Konfigurationsdateien für die verschiedenen Backups gespeichert. Ich lege zum Beispiel für jede Jail eine eigene Konfigurationsdatei an, da ich Test-Jails zum Beispiel nicht sichern will bzw. die Jail mit dem Mailserver täglich sichern möchte.

    Mit folgendem Befehl erstellst du eine Default-Konfiguration:

    # perl -w simplebackup.pl --econf configs/default.conf

  4. Wenn du die Datei 'configs/default.conf' mit einem Editor öffnest, wirst du eine sehr gut dokumentierte Datei finden, in der du einige Parameter setzen kannst. Interessant sind hauptsächlich folgende Parameter:
    • backup_mode (z.B. incremental)
    • full_backup_day (z.B. first_day_month)
    • backup_format (z.B. rar)
    • input_backup (z.B. /home oder file://@/root/backup/dirlist.txt)
    • output_backup (z.B. sFTP, WebDAV)
    • run_ -Variablen (z.B. run_before_backup um Jails zu stoppen)
    • encryption_passwd (Verschlüsselungsstring)
    • mail_server (Mailserver über den der Statusbericht versandt wird)
    • mail_from_address (Absenderadresse)
    • mail_to_address (Empfängeradresse für den Statusbericht)
    • backup_full_path_rejections (Liste mit Verzeichnissen/Dateien die ausgeschlossen werden)

  5. Wenn du nun eine Konfigurationsdatei erstellt hast, solltest du diese testen. Das machst du mit folgendem Befehl:

    # perl -w simplebackup.pl --tconf configs/default.conf

    Wenn kein Fehler angezeigt wird, ist die Konfiguration in Ordnung.

  6. Jetzt kannst du dir einen Cronjob anlegen, sodass deine Daten entsprechend gesichert werden. Wenn du "backup_mode = incremental" gesetzt hast, werden nur dann Daten gesichert, wenn sich etwas verändert hat.

HINWEIS: Zum Zeitpunkt dieses Textes ist ein Fehler in der sFTP-Funktionalität in der Datei 'simplebackup.pl' enthalten. Dieser Fehler tritt auf, wenn du einen alternativen Port statt 22 verwendest.

Zeile 5569:
Vorher:

$sftp_expect = Expect->spawn("$sftp_command -oport=$sftp_server_port sftp_username\@$sftp_server") or $error_flag = 3;

Nachher:

$sftp_expect = Expect->spawn("$sftp_command -oPort=$sftp_server_port sftp_username\@$sftp_server") or $error_flag = 3;

 

Zeile 5576:
Vorher:

$sftp_expect = Expect->spawn("$sftp_command -oport=$sftp_server_port -v $sftp_username\@$sftp_server") or $error_flag = 3;

Nachher:

$sftp_expect = Expect->spawn("$sftp_command -oPort=$sftp_server_port -v $sftp_username\@$sftp_server") or $error_flag = 3;

Einen Kommentar hinzufügen

Einen Kommentar hinzufügen

This is a captcha-picture. It is used to prevent mass-access by robots. (see: www.captcha.net)
Code im diesem Bild:
Ihr Name(*):
Kommentar(*):
 
  • October 8, 2009, 3:52 pm - Benedikt

    Hallo Ralf,
    Danke für den Hinweis.

    Ich nutze SimpleBackup leider nicht mehr, aber anderen wird es sicher helfen!!

    Vielen Dank!
    Beste Grüsse,
    Benedikt

  • October 8, 2009, 3:19 pm - Ralf

    Nettes Programm!

    Bei mir gab es nur ein Problem, Stichwort:

    Backups using a ftp server fail to erase previous backup files.

    Das Backup wurde sauber per ftp übertragen aber das Löschen des vorhandenen Backups wurde nicht ausgeführt.
    (Stichwort: keep_last_n_files =)

    Als Problem konnte ich identifizieren:
    Bevor die Datei gelöscht wird, wird mit dem "size" Kommando das Vorhandensein überprüft. "size" wird aber nur im binary Modus ausgeführt. Mein Proftpd-Server befand sich aber immer im ascii Modus und "size" schlug fehl und somit das Löschen.

    Workaround:

    In der Datei simplebackup.pl muß vor der Zeile 6215
    if ( $network_connection->size($erase_me) ) { # check if the file exists

    die folgende Zeile eingefügt werden:

    $network_connection->binary(); # put in binary download mode

    Jetzt funktioniert das Script bei mir!

    Grüße!