[s] PHP-Script für Datenbankbackup

HamburgerJungx

Well-known member
ID: 465838
L
28 April 2006
848
39
Wie oben beschrieben, suche ich ein PHP Script um ein Backup meiner Datenbank zu machen.
Außerdem möchte ich auch gerne den Namen der Datei selber bestimmen. Ausgabe der Datei in *.sql .

Was für Scripte benutzt ihr?
Wenn ihr ein paar Links habt, immer raus damit.

MfG
 
PHP:
<? system("mysqldump -u benutzer -ppasswort -h ip.oder.host datenbank > dateiname.sql"); ?>
wäre das einfachste und schnellste was mir grad einfällt :)
 
Hi

top-downline schrieb:
das ist natürlich auch ein weg. Wie kann ich denn bestimmen in welches Verzeichnis die Daten abgelegt werden?

Bin da jetzt nicht so 100%ig sicher, denke aber, daß Du einfach vor dem File den Pfad angeben kannst.
PHP:
<? system("my... datenbank > ./db_backup/070506/dateiname.sql"); ?>

KA, was/wie/ect. der Befehl mysqldump macht und ob er ein Verzeichnis so annimmt, zur Not macht Versuch Kluch :)

MfG
Posti
 
Von system() ist auf jeden Fall abzuraten, weil es in keiner Safe Mode-Umgebung funktionieren wird.

Nehm stattdessen etwas in dieser Richtung: (ok, der Code ist schon etwas veraltet und auch nicht von gestern *g*)

PHP:
$dbtables = mysql_list_tables($dbname);
$nt = mysql_num_rows($dbtables);

for ($a=0;$a<$nt;$a++) {
    $row = mysql_fetch_row($dbtables);
    $tablename = $row[0];
    $crtable = mysql_fetch_array(mysql_query("SHOW CREATE TABLE ".$dbname.".".$tablename));
    $out .= $crtable[1];
    $out .= "\n\n";
    $vltable = mysql_query("SELECT * FROM `$tablename`");
    $nf = mysql_num_fields($vltable);
    $nr = mysql_num_rows($vltable);
    for ($c=0;$c<$nr;$c++){
        $out .= "INSERT INTO `$tablename` VALUES (";
        $row = mysql_fetch_row($vltable);
        for ($d=0;$d<$nf;$d++) {
            $data = strval($row[$d]);
            $out .= "'".mysql_escape_string($data)."'";
            if ($d<($nf-1)) {
                $out .= ", ";
            }
        }
        $out .= ");\n";
    }
    $out .= "\n";
}

Am besten einfach die Technik abgucken und komplett neuschreiben.
 
PHP (Funktion: system()) schrieb:
Note: When safe mode is enabled, you can only execute executables within the safe_mode_exec_dir. For practical reasons it is currently not allowed to have .. components in the path to the executable.

Außer von dir habe ich dabei noch von nicht vielen gehört, bei denen es geht. Naja, evtl. haste ja Glück ;)
 
Naja, es kommt auf den hoster an ob er das erlaubt oder nicht. Wenns funktioniert ist es wohl mit Abstand die schnellste und sicherste und zugleich sauberste Methode. Ansonsten muss man halt die Umwege über php gehen. Du kannst dir ja auch mal die export lib von phpmyadmin anschauen wie die das vom Prinzip machen. Im Normalfall wirste aber die ganzen Unterscheidungen nicht brauchen und das Script von H3v3n reichen.
 
Grinch schrieb:
Naja, es kommt auf den hoster an ob er das erlaubt oder nicht. Wenns funktioniert ist es wohl mit Abstand die schnellste und sicherste und zugleich sauberste Methode. Ansonsten muss man halt die Umwege über php gehen. Du kannst dir ja auch mal die export lib von phpmyadmin anschauen wie die das vom Prinzip machen. Im Normalfall wirste aber die ganzen Unterscheidungen nicht brauchen und das Script von H3v3n reichen.

Mit PHP6 kommt safe_mode ja sowieso weg :)
 
Johnson schrieb:
Mit PHP6 kommt safe_mode ja sowieso weg :)
Und was noch viel wichtiger ist: register_globals ist zwar noch in den Codezweigen enthalten, kann aber nicht so einfach - und schon gar nicht per Config - aktiviert werden *muaha* :ugly:
 
H3v3n schrieb:
Und was noch viel wichtiger ist: register_globals ist zwar noch in den Codezweigen enthalten, kann aber nicht so einfach - und schon gar nicht per Config - aktiviert werden *muaha* :ugly:

Und magic_quotes kommt auch weg (glaube ich ^^) :mrgreen:

Das werden rosige Zeiten für Cracker :-?
 
Johnson schrieb:
Und magic_quotes kommt auch weg (glaube ich ^^) :mrgreen:

Das werden rosige Zeiten für Cracker :-?

Wer ein solches Billig-5 Minuten-Schnellimbiss-Skript benutzt ist selbst schuld. Ich finde es ehrlich gesagt besser so - so wird die Qualität von Skripts um ein wesentliches gesteigert.
 
H3v3n schrieb:
Wer ein solches Billig-5 Minuten-Schnellimbiss-Skript benutzt ist selbst schuld. Ich finde es ehrlich gesagt besser so - so wird die Qualität von Skripts um ein wesentliches gesteigert.

Ja, ist schlimm, dass man die Steigerung der Qualität nur durch solche Sachen erreichen kann ... visit cracked-by-magic-quotes.de :mrgreen:

Ich glaub ich hör jetzt mal mit dem OT auf :biggrin:
 
hier hast ein Komplettes Script was viele Verwenden und was ich in jedes Script was mit datenbank ist einbaue..

du bekommst das Backup per Mail und er Speicher es auf dem Server..
Funzt alles via Cronjop...


https://www.img5.de/backup.zip (phpMyBackup)
 
Moin,
das beste, in PHP geschrieben Script ist für mich aktuell mysqldumper. Da es ziemlich leicht zu bedienen ist und recht viele Funktionen hat. z.B.

PHP:
Logfiles komprimiert speichern (gz).
Multipart-Backup
Tabellen vor dem Backup optimieren
Backup-Format => vollständige Inserts, erweiterte Inserts, verzögerte Inserts etc.
automatisches Löschen nach Zeit
Backup per Mail zukommen lassen
Backup aufn anderen Server laden lassen
Perlscript, damit kann man dann per Cronjob die Backups ausführen lassen
 
Zuletzt bearbeitet: