Automatisches Web und SQL Backup

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
 

Till

Administrator
Setze die Optiom:

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

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

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?
 

Till

Administrator

Im Unterverzeichnis "backup" des Webs.

Werden die Backups auch automatisch gelöscht?

Nein.

Muss ich nach der Änderung noch etwas machen?

Nein.

In welchem Abstand werden wie backups gemacht?

Jede Nacht.
 

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
 

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.
 

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.
 

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.
 

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
 

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
 

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
 

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:
Zitat von Till:

... noch immer? :)

Greetz ...
Blackw:cool:lf
 

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.
 

Werbung

Top