Automatisches Web und SQL Backup

Dieses Thema im Forum "Allgemein" wurde erstellt von psprofi, 16. Juni 2008.

  1. psprofi

    psprofi New Member

    Hallo.

    Gibt es eine Möglichkeit automatisch ein tägliches Web und SQL backup zu machen und dieses dann in einem Ordner zu verstauen, der außerhalb des öffentlichen webs ist aber per FTP verfügbar ist?


    MfG
    psprofi
     
  2. Till

    Till Administrator

    Setze die Optiom:

    $go_info["server"]["do_automated_backups"] = 1;

    in der Datei /home/admispconfig/ispconfig/lib/config.inc.php
     
  3. psprofi

    psprofi New Member

    Erstmal Danke.
    Wo werden die Backups dann gespeichert?

    Werden die Backups auch automatisch gelöscht?

    Muss ich nach der Änderung noch etwas machen?

    In welchem Abstand werden wie backups gemacht?
     
  4. Till

    Till Administrator

    Im Unterverzeichnis "backup" des Webs.

    Nein.

    Nein.

    Jede Nacht.
     
  5. Blackwolf

    Blackwolf New Member

    Ich habe jetzt mal das automatische Backup laufen lassen. In jedem Web (3) im jeweiligen Backupordner befindet sich eine Datei namens: "backup_2008_07_14.zip" ... soweit so gut.

    Strato stellt auf meinem Server einen Ordner namens "/private-backup" zur Verfügung, der bei einer evtl. Neuinstallation des Servers nicht berührt wird, infolgedessen als Backupspace ideal ist. Deshalb meine Fragen:

    1. ... ist es möglich, ISP-Config zu veranlassen, die automatischen Backups dorthinzu schreiben und wenn ja ... wie?

    2. ... ist es - falls 1. bejaht wird - möglich, den Backupdateien individuelle Namen zuweisen zulassen, also z.B. "web11_backup_2008_07_14.zip" damit nicht das zuletzt gefertigte Backup die anderen überschreibt und wenn ja ... wie?

    3. Wie ist es möglich, die Backups in einem evtl. notwendigen Fall wieder zurückzuspielen? Da innerhalb des *.zip-Files weitere Zip-Files existeieren, müsste man sich - imho - einzeln durch das entpackte Backup hangeln, alles auspacken und dann mit "cp " wieder zurückspielen.

    Das müsste doch einfach gehen, oder?

    Und abschliessend ... 4. Gibt es eine Möglichkeit, ISPConfig zu veranlassen, ein komplettes Backup (ISPConfig mit allen wichtigen Dateien, die kompletten Webs nebst ihrer SQL-Datenbanken) en bloc zu sichern, um im Falle eines kompletten Server-Absturzes das Backup ebenfalls en bloc zurückzusichern und damit den Urszustnd ohne nachträgliche Konfigurationsfummelei wieder herstellen zu können?

    Falls ja, wie? Falls nein, welche Dateien resp. welche Pfade sind "händisch" zu sichern, um in einem späteren Notfall ISPConfig nebst Webs wieder "kampftauglich" zu haben?

    Greetz Blackw:cool:lf
     
  6. huschi

    huschi New Member

    Zu 3. hab ich auf die Schnelle auch nichts gefunden. :?
    Aber 1. und 2. kannst Du einfach mit Shell-Scripten lösen ohne in ISPConfig einzugreifen.
    4. kannst Du ebenfalls selber backen: "mysqldump" und "tar czf ... /var/www/" reichen aus.

    Ein Script könnte wie folgt aussehen (ungetestet!):
    Code:
    #!/bin/sh
    #finde alle backup-Verzeichnisse
        #finde darin alle backup_-Dateien die älter als ein Tag sind
            #und lösche diese
    
    find /var/www/ -name 'backup' -type d -maxdepth 2 -exec \
        find \{\} -mtime +1 -name 'backup_*' -exec \
            rm \{\} \
        \;
    \;
    huschi.
     
  7. Blackwolf

    Blackwolf New Member

    @ huschi ...

    :) die Lösung ist bei mir "Plan-B"

    ... aber es muß doch möglich sein, ISP-Config eine Variable zu übergeben, die das aktuelle Web in dem das Backup geschrieben wird auszulesen und dann dem Dateinamen voranzustellen, oder?

    Mal sehen, ob Till 'ne Idee hat.
     
  8. huschi

    huschi New Member

    Ändere in /root/ispconfig/scripts/shell/backup.php in den 3 Zeilen ab Zeile 126 folgenden Eintrag in den danach:
    $backup_dir/$backup_file_name
    $backup_dir/$web_id-$backup_file_name

    huschi.
     
  9. redi78

    redi78 Member

    Hi Leute,

    mhhh also bei mir funkt die manuelle Backup Geschichte in ISPConfig auch nur bei kleinen Mysql Datenbanken. Wenn ich zb. eine DB mit über 35 MB backupen möchte, erhalte ich immer so eine art Timeout. PHP hat ja mit grossen DBs Probleme. Das wird dann wohl auch so mit dem automatischen Backup sein.

    Gibts hierfür eine Lösung? Oder muss ich dann sowieso händisch sichern?

    lg redi78
     
  10. Blackwolf

    Blackwolf New Member

    @ huschi

    Ich hab's geändert ....

    mal sehen, was über Nacht passiert ....

    (oder kann man das händisch anschubsen?)
     
  11. redi78

    redi78 Member

    Hallo Leute,

    gibts da auch für mein Problem eine Lösung?

    lg redi78
     
  12. Blackwolf

    Blackwolf New Member

    @ redi78

    Also ich sichere meine Datenbanken via cronjob mit einem Script ... zum einen separat, also jede für sich und dann alle in einem script noch einmal extra.

    Ersteres zum gezielten wiederherstellen eines Webs,... letzteres zum Absichern bei einem Komplett-Server-Crash.

    Greetz ...
    Blackw:cool:lf
     
  13. Blackwolf

    Blackwolf New Member

    @Huschi ...

    Das hat schonmal geklappt. :D

    Ich hab jetzt im /backup ein Zip mit dem Namen "13-backup_2008_07_15", ... in den anderen Webs also entsprechend.

    Jetzt fehlt mir nur noch die Fundstelle, in der ich das Backup-Verzeichnis ändern kann.


    Wenn ich die Anweisung hier wie folgt richtig interpretiere:

    Code:
    [Zeile 110 - 119 in der backup.php]
    // Move file in /backup directory
                    [COLOR=Red][B]$backup_dir = $httpd_root ."/web".$web_id."/backup";[/B][/COLOR]
                    $web_user = fileowner($web_pfad);
                    $web_group = filegroup($web_pfad);
                    if(!@is_dir($backup_dir)) {
                      mkdir($backup_dir,0755);
                    } else {
                      [B][COLOR=Green]exec("rm -rf $backup_dir/*");[/COLOR][/B]
                    }
    
    ... dann wird in dieser Zeile die location des Backup-Verzeichnisses festgelegt. Wenn ich diese Zeile in:

    Code:
    [COLOR=Red][B][COLOR=Black]$backup_dir = [/COLOR]"/private-backup";[/B][/COLOR]
    
    ... ändere, dann müsste ISPConfig die Backups doch dorthin schreiben (Schreibrechte vorausgesetzt) "private-backup" liegt auch wie angegeben im Rootverzeichnis des Servers.

    Weiterhin ....

    ... möchte ich verhindern, das ISPConfig die alten Backups löscht, was ich dieser Zeile entnehme.

    Kann ich die Zeile einfach löschen, sodaß der Code später so aussieht:

    Code:
    // Move file in /backup directory
                    [COLOR=Black]$backup_dir = "/private-backup";[/COLOR]
                    $web_user = fileowner($web_pfad);
                    $web_group = filegroup($web_pfad);
                    exec("mv $tgz_name $backup_dir/$web_id-$backup_file_name");
                    chown("$backup_dir/$web_id-$backup_file_name",$web_user);
                    chgrp("$backup_dir/$web_id-$backup_file_name",$web_group);
    
                    // Delete temp file
                    exec("rm -rf $tmp_dir");
    
    
    Damit müsste ich ...

    ... die Backups nach "private-backup" verlagert haben ...
    ... eine Backup-Historie aufbauen ...

    ... die ich dannn nach eigenem Gusto händisch oder via Script "ausflöhen" kann.

    Oder irre ich mich?

    Greetz ...
    Blackw:cool:lf
     
  14. Till

    Till Administrator

    Das sollte eigentlich so funktionieren.
     
  15. huschi

    huschi New Member

    Konkrete Fehlermeldung?

    Aber es ist mysqldump der den Dump erzeugt.


    huschi.
     
  16. Blackwolf

    Blackwolf New Member

    @ Till und huschi

    Könnt ihr nochmal kurz über die Syntax hier huschen:
    Code:
    // Move file in /backup directory
                    [B][COLOR=Red]$backup_dir = "/private-backup"."/web-".$web_id;[/COLOR][/B]
                    $web_user = fileowner($web_pfad);
                    $web_group = filegroup($web_pfad);
                    if(!@is_dir($backup_dir)) {
                      mkdir($backup_dir,0755);
                    } [COLOR=Green][I][B](vormals else)[/B][/I][/COLOR]
                    if(@fileowner($backup_dir) != $web_user) {
                      chown($backup_dir,$web_user);
                    }
                    if(@filegroup($backup_dir) != $web_group) {
                      chgrp($backup_dir,$web_group);
                    }
    
                    exec("mv $tgz_name $backup_dir/$web_id-$backup_file_name");
                    chown("$backup_dir/$web_id-$backup_file_name",$web_user);
                    chgrp("$backup_dir/$web_id-$backup_file_name",$web_group);
    
    
    Hier:
    ... soll im bestehenden Verzeichnis "/private-backup" ein Verzeichnis namens (z.B.) "web-11" erzeugt werden, in die dann das Backup geschrieben wird ... also:

    /private-backup/web-11/11-backup_2008_07_16.zip

    Hier:
    ... habe ich die Else-Anweisung gekippt, da ich den rm-Befehl unterbinden will, was natürlich die "If-Anweisung" obsolet macht, aber ich möchte ihn am Anfang einmalig das Verzeichnis schreiben lassen.

    Gilt Till's Kommentar:
    ... noch immer? :)

    Greetz ...
    Blackw:cool:lf
     
  17. huschi

    huschi New Member

    Ich sehe adhoc keinen Fehler. Aber Testen mußt das sowieso Du selber.
    Falls Du Quota aktiviert hast und Dein Backup-Verzeichnis auf der selben Platte wie die Webs liegen, solltest Du die chown und chgrp überdenken.


    huschi.
     

Diese Seite empfehlen