Hi,
ich habe für mein CMS (welches ich auch bald veröffentliche) ein Script geschrieben, welches ein Backup erstellt und auch wieder importieren kann. Wenn das schon irgendwo vorhanden ist und hier unpassend, kann der Beitrag auch wieder gelöscht werden.
Benötigt wird eine backup.sql-Datei, in der der SQL-Code gespeichert wird. Weiter Beschreibungen mache ich nicht, wer sich auskennt, findet sich schon rein und einfache Kopierer interessiert die Funktionsweise meistens wenig.
Achso, DBNAME muss vorher defniert werden: define("DBNAME", "datenbankname");
ich habe für mein CMS (welches ich auch bald veröffentliche) ein Script geschrieben, welches ein Backup erstellt und auch wieder importieren kann. Wenn das schon irgendwo vorhanden ist und hier unpassend, kann der Beitrag auch wieder gelöscht werden.
Benötigt wird eine backup.sql-Datei, in der der SQL-Code gespeichert wird. Weiter Beschreibungen mache ich nicht, wer sich auskennt, findet sich schon rein und einfache Kopierer interessiert die Funktionsweise meistens wenig.
PHP-Code:
<h1>Datenbank-Backup</h1>
<p><a href="admin.php?dbbackup=jetzt" id="submit">Datenbank-Backup erstellen</a></p>
<p style="margin-top:2em;"><a href="admin.php?dbbackup=loe" class="asubmit" onclick="return confirm('Wollen Sie wirklich alle Datenbanktabellen im nächten Schritt löschen?')">Datenbanktabellen löschen</a></p>
<?php
$datei = "backup.sql";
if (file_get_contents($datei) != "") {
echo '<p style="margin-top:2em;"><a href="admin.php?dbbackup=drop" class="asubmit" onclick="return confirm(\'Wollen Sie wirklich alle Datenbanktabellen im nächten Schritt löschen und das Backup aufspielen?\')">jetztige Datenbanktabellen löschen und Backup aufspielen</a></p>';
}
if (isset($_GET['dbbackup'])) {
if ($_GET['dbbackup'] == "jetzt") {
$result_show = mysql_query("SHOW TABLES");
while ($row_show = mysql_fetch_assoc($result_show)) {
$result_create = mysql_query("SHOW CREATE TABLE " . $row_show['Tables_in_' . DBNAME]);
while ($row_create = mysql_fetch_assoc($result_create)) {
$zeile[] = $row_create['Create Table'];
$result_id = mysql_query("SELECT * FROM " . $row_show['Tables_in_' . DBNAME]);
while ($row_id = mysql_fetch_assoc($result_id)) {
$zeile[] = "INSERT INTO " . $row_show['Tables_in_' . DBNAME] . " (id) VALUES ('" . $row_id['id'] . "')";
$result_update = mysql_query("SELECT * FROM " . $row_show['Tables_in_' . DBNAME] . " WHERE id = '" . $row_id['id'] . "'");
while ($row_update = mysql_fetch_assoc($result_update)) {
foreach ($row_update as $key => $value) {
if ($key != "id") {
$zeile[] = "UPDATE " . $row_show['Tables_in_' . DBNAME] . " SET " . $key . " = '" . $value . "' WHERE id = '" . $row_id['id'] . "'";
}
}
}
}
}
}
if (is_writable($datei)) {
$schreiber = fopen($datei, "w");
foreach ($zeile as $vau) {
fwrite($schreiber, $vau . ";\n");
}
fclose($schreiber);
echo '<p id="showsubmit">Es wurde ein Backup der Datenbanktabellen erstellt.</p>' . "\n";
} else {
echo '<p id="showsubmit">Die Datei backup.sql kann nicht beschrieben werden.</p>' . "\n";
}
} elseif ($_GET['dbbackup'] == "drop") {
$result_auf = mysql_query("SHOW TABLES");
while ($row_auf = mysql_fetch_assoc($result_auf)) {
$sql_drop[] = "DROP TABLE " . $row_auf['Tables_in_' . DBNAME] . ";";
}
$sql_back = file_get_contents($datei);
$sql_drop_count = count($sql_drop);
$sql_a_back = explode(";", $sql_back);
$sql_back_a_count = count($sql_a_back);
for ($i = 0; $i < $sql_drop_count; $i++) {
mysql_query($sql_drop[$i]) OR die(mysql_error());
}
for ($o = 0; $o < $sql_back_a_count - 1; $o++) {
mysql_query($sql_a_back[$o]) OR die(mysql_error());
}
echo '<p id="showsubmit">Es wurden die alten Datenbanktabellen gelöscht und das Backup aufgespielt.</p>' . "\n";
} elseif ($_GET['dbbackup'] == "loe") {
$result_auf = mysql_query("SHOW TABLES");
while ($row_auf = mysql_fetch_assoc($result_auf)) {
$sql_drop[] = "DROP TABLE " . $row_auf['Tables_in_' . DBNAME] . ";";
}
$sql_drop_count = count($sql_drop);
for ($i = 0; $i < $sql_drop_count; $i++) {
mysql_query($sql_drop[$i]) OR die(mysql_error());
}
echo '<p id="showsubmit">Es wurden alle Datenbanktabellen gelöscht.</p>' . "\n";
}
}
?>
Kommentar