Datenbank-Backup über PHP-Skript

Bash, Shell, PHP, Python, Perl, CGI
mozzarella
Posts: 5
Joined: 2006-12-15 18:29

Datenbank-Backup über PHP-Skript

Post by mozzarella » 2006-12-15 18:59

Hallo!

Ich möchte auf einer selbstprogrammierten Admin-Seite über einen Formular-Button ein Datenbank-Backup auslösen. Und zwar so, wie man es von phpmyAdmin kennt: dass eine datenbankname.sql-Datei erzeugt wird, die man auf dem Rechner speichern kann. Nur will ich eben nicht jedesmal über phpmyAdmin gehen, sondern in meinem eigenen CMS diesen Befehl über PHP absetzen.

Der Server gehört nicht mir; ich habe lediglich Webspace gemietet und eine Domain mit ein paar Zusätzen wie Datenbank usw. Cronjobs ist in meinem Vertrag leider nicht aktiv.

Von dem mysqldump-Befehl habe ich schon gehört, weiss aber nicht, wie ich den in PHP formulieren soll.

Vielen Dank!! :)
Moz

lucki2
Posts: 427
Joined: 2006-10-03 01:31

Re: Datenbank-Backup über PHP-Skript

Post by lucki2 » 2006-12-16 09:05


mozzarella
Posts: 5
Joined: 2006-12-15 18:29

Re: Datenbank-Backup über PHP-Skript

Post by mozzarella » 2006-12-21 23:58

Ok, jetzt bin ich schon soweit, dass er die Datenbank in eine Datei exportiert. Aber was muss ich tun, damit sich ein Fenster mit Aufforderung zum Speichern öffnet, wie es automatisch bei phpmyAdmin passiert oder auch, wenn man im Internet auf einen Link klickt, hinter dem ein zip-File liegt?

Klar ich kann die Datei auch mit FTP runtersaugen, aber so wär's noch schneller.

Dankeschön!

exception
Posts: 8
Joined: 2004-08-17 13:31

Re: Datenbank-Backup über PHP-Skript

Post by exception » 2007-01-01 23:17

Mozzarella wrote:Ok, jetzt bin ich schon soweit, dass er die Datenbank in eine Datei exportiert. Aber was muss ich tun, damit sich ein Fenster mit Aufforderung zum Speichern öffnet, wie es automatisch bei phpmyAdmin passiert oder auch, wenn man im Internet auf einen Link klickt, hinter dem ein zip-File liegt?

Klar ich kann die Datei auch mit FTP runtersaugen, aber so wär's noch schneller.

Dankeschön!
Um den Download automatisch zu starten, schau am besten unter der PHP-Funktion header() nach, mit Content-Type und Content-Disposition kannst du festlegen, was für einen Inhalt dein Document hat.

mozzarella
Posts: 5
Joined: 2006-12-15 18:29

Re: Datenbank-Backup über PHP-Skript

Post by mozzarella » 2007-01-02 13:10

Ich habe es jetzt so gemacht:

Code: Select all

<?php
// ...
elseif ($dbBefehl == "jetzt sichern") {
	$table = "videothek";
	
	$zeitPunkt = getdate();
	$tag = $zeitPunkt[mday];
	if ($tag < 10) $tag = "0$tag";
	$monat = $zeitPunkt[mon];
	if ($monat < 10) $monat = "0$monat";
	$jahr = substr($zeitPunkt[year],2,2);
	$stunde = $zeitPunkt[hours];
	if ($stunde < 10) $stunde = "0$stunde";
	$minute = $zeitPunkt[minutes];
	if ($minute < 10) $minute = "0$minute";
	
	system(sprintf('mysqldump -h%s -u%s -p%s %s %s > %s_%s%s%s_%sh%smin.sql', $host, $user, $pass, $database, $table, $table, $jahr, $monat, $tag, $stunde, $minute));

	$file = $table."_".$jahr.$monat.$tag."_".$stunde."h".$minute."min.sql";
	$dir = "./";
	$type = "application/sql";
	
	if(file_exists ($dir.$file)) {
		header("Content-Type: $type");
		header("Content-Disposition: attachment; filename="$file"");
		readfile($dir.$file);
	}
}
?>
<!-- Hier beginnt der HTML-Quellcode -->
Nun passiert etwas, das ich nicht verstehe: Wenn ich die erzeugte sql-Datei direkt auf dem Server öffne bzw. per FTP downloade, ist sie korrekt. Dieselbe Datei, wenn ich sie durch "readfile()" auf meinem Rechner speichere, enthält auch noch den kompletten Quellcode der Webseite, auf der ich gerade bin.

Wie kann das denn sein?? 8O
Kann mir jemand sagen, wie ich das ändern kann?

Moz

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Datenbank-Backup über PHP-Skript

Post by Roger Wilco » 2007-01-02 22:38

Verwende statt readfile() die Funktion fpassthru() und lies die das Beispiel unter http://de.php.net/manual/en/function.fpassthru.php durch.

mozzarella
Posts: 5
Joined: 2006-12-15 18:29

Re: Datenbank-Backup über PHP-Skript

Post by mozzarella » 2007-01-03 12:19

Danke, so klappt's!! [-o<