Ich hätte hier ebenfalls eines von protectus.de
Es funktioniert nicht exakt gleich wie jenes, das TruckerB gerade veröffentlicht hat (Dieses hier greift auf den mysqldump Befehl zu, arbeitet also über die Funktion system()). Es komprimiert das ganze in GZip, man braucht also ein Entpackungsprogramm, welches GZip auch entschlüsseln kann.
[php]<?php
// error_reporting(0);
// ### (c) by Protecus.de ########
// ### EINSTELLUNGEN #############
// ###############################
$user = 'root'; // Name
$pass = ''; // Passwort
$database = 'test'; // zu sichernde Datenbank
$path = './backup/'; // Backup Ordner
$number_of_files = '5'; // mehr als x Dateien löschen (Autodelete)
// ###############################
// Updates:
http://board.protecus.de/t9581.htm
// checke Backupordnergrösse
function dirsize($dir){
$dirsize=0;
$handle=opendir ($dir);
while (false !== ($file = readdir ($handle))) {
$dirsize+=filesize($dir.$file);
}
closedir($handle);
return $dirsize;
}
// Starte Output
echo '<html>
<head>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<title>MySQL Backup</title>
<style type=\'text/css\'>
<!--
h1 { font-family: verdana, arial;}
body,p,td,a { font-family: verdana, arial; font-size: 8pt;}
//-->
</style>
</head>
<body>
<h1>MySQL Backup</h1>
<b><u>Konfiguration:</u></b>
<br /><b>Sicherung Datenbank:</b> '. $database .'<br />
<b>Auto-Löschen aktiviert:</b> +'.$number_of_files.' Dateien<br />
<b>GZip-Komprimierung:</b> aktiv<br />
<b>Backups gesamt:</b> '.round(dirsize("$path")/(1024*1024),2).' MB<br /><br />
<p><b>Backup wird ausgeführt...</b><br /><br /><span style="color:darkblue; font-weight:bold" id="dspan">|</span></p>
<script type="text/javascript"><!--
function js_dots()
{
dspan.innerText = dspan.innerText + "|";
jstimer = setTimeout("js_dots();", 200);
}
if (document.all)
{
js_dots();
}
//--></script>';
// Backupverzeichnis erstellen, falls noch nicht existient!
if (!is_dir($path)) mkdir($path, 0777);
$dh = opendir($path);
while (false !== ($filename = readdir($dh)))
{
if ($filename != "." && $filename != "..") $files_unlink[] = $filename;
}
@rsort($files_unlink);
if (sizeof($files_unlink) >= $number_of_files)
{
for($n=sizeof($files_unlink)-1; $n>=$number_of_files; $n--)
{
unlink($path.$files_unlink[$n]);
}
}
// Backup erstellen
$datei = date("d\.m\.Y\_H",time())."_Uhr_".date("i",time()); // Dateiname aus Datum und Uhrzeit bilden
$datei .= ".gz";
if (file_exists($datei)) unlink($datei);
$path = str_replace(".", "", $path);
system("/usr/bin/mysqldump -u$user -p$pass -h localhost $database | gzip > ".dirname(__FILE__)."$path/$datei", $fp);
if ($fp==0) $meldung = "Backup erfolgreich!"; else $meldung = "Es ist ein Fehler aufgetreten!";
// und Meldung, dass fertig!
echo '
<script type="text/javascript"><!--
if (document.all)
{
clearTimeout(jstimer);
}
//--></script>
<p>'.$meldung.'</p>
<p><blink><b>Fertig!</b></blink></p>
</html>
</head>';
?>[/php]
Des weiteren habe ich diese kleine Version im 1&1 Hilfe-Center gefunden:
[php]<?php
// Bitte hier Ihre Daten eintragen
$host= 'dbxx.1und1.de';
$user= 'dbxxxxxx';
$pass= 'xxxxxxxx';
$db= 'dbxxxxxxx';
// Befehl ausführen und in Zipfile speichern
system(sprintf(
'mysqldump --opt -h%s -u%s -p"%s" %s | gzip > %s/dumpDB.sql.gz',
$host,
$user,
$pass,
$db,
getenv('DOCUMENT_ROOT')
));
echo '+DONE';
?>[/php]
Und als letztes noch ein Vorschlag für einen Cronjob, den ich bei vbulletin-germany.de gefunden habe.
$this->bbcode_second_pass_code('', '##!/usr/bin/ksh
# Erstellt ein Backup der mySQL Datenbanken
# die dann später mal wieder importiert werden können
# (Dieses script wird automatisch täglich durch crontab ausgeführt!
#
# Aktuelles Datum für Dateinamen setzen
# (Wochentag --> 1=Mo, 7=So, d.h. 7 Backups pro Woche, danach wird wieder überschrieben)
date=`date +%u`
#
# Backup Database: (only tables)
mysqldump -d --add-drop-table --user=MYSQLUSER --password=KENNWORT DB >/home/www/web/backup/tables_$date.sql
#
# Backup Database: (only data)
mysqldump -t -a -C -c --user=MYSQLUSER --password=KENNWORT DB >/home/www/web/backup/data_$date.sql')
Man muss hier natürlich noch Passwort und Benutzername ändern. Desweiteren sollte man auch das Verzeichnis ändern, wenn es nicht korrekt übereinstimm.
Mit freundlichen Grüssen,
Harthas