So gehts :
<?
exec("mysqldump -u Datenbankname -pPasswort --add-drop-table Datenbankname >dump" . date('dmY') . ".sql");
// exec("gzip dump" . date('dmY') . ".sql");
echo "Die Datenbank ist gesichert ...";
?>
Code: Alles auswählen
#!/bin/sh
DATUMZEIT=`date "+%d.%m.%Y, %H:%M"`
DATUM=`date "+%Y-%m-%d"`
ZIEL="dump-$DATUM.sql.gz"
cd /var/www/web0/files/backup/
mysqldump --quick --add-drop-table --add-locks --extended-insert -u[user] -p[password] [db] | gzip -c > $ZIEL
echo "$DATUMZEIT Backup durchgefuehrt: $ZIEL"
# Backups aelter als 5 Tage loeschen:
find . -name "dump-[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9].sql.gz" -mtime +5 -maxdepth 1 -exec echo "$DATUMZEIT Backupfile geloescht: {}" \;
find . -name "dump-[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9].sql.gz" -mtime +5 -maxdepth 1 -exec rm -f {} \;
Code: Alles auswählen
30 3 * * * /var/www/web0/files/crons/daily_backup >> /var/www/web0/files/logs/backup.log 2>>/var/www/web0/files/logs/backup.err
Banger hat geschrieben:Ich hab dafür ein shellscript:
[user], [password], [db] und der Zielpfad (hier: /var/www/web0/files/backup/ - außerhalb des Document Roots) müssen natürlich noch durch die entsprechenden Werte (ohne eckige Klammern!) ersetzt werden.Code: Alles auswählen
#!/bin/sh DATUMZEIT=`date "+%d.%m.%Y, %H:%M"` DATUM=`date "+%Y-%m-%d"` ZIEL="dump-$DATUM.sql.gz" cd /var/www/web0/files/backup/ mysqldump --quick --add-drop-table --add-locks --extended-insert -u[user] -p[password] [db] | gzip -c > $ZIEL echo "$DATUMZEIT Backup durchgefuehrt: $ZIEL" # Backups aelter als 5 Tage loeschen: find . -name "dump-[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9].sql.gz" -mtime +5 -maxdepth 1 -exec echo "$DATUMZEIT Backupfile geloescht: {}" \; find . -name "dump-[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9].sql.gz" -mtime +5 -maxdepth 1 -exec rm -f {} \;
Das ganze dann als daily_backup.sh speichern, Ausführbarkeitsbits setzen (chmod 700 - außer Dir sollte natürlich keiner das File und somit Dein DB-Passwort einsehen können!) und einen Crontab-Eintrag generieren:
Sodele. Nu wird jeden Morgen um halb vier ein Backup gefahren, Backups mit einem Alter von mehr als 5 Tagen werden gelöcht und die Ergebnisse in /var/www/web0/files/logs/ geloggt.Code: Alles auswählen
30 3 * * * /var/www/web0/files/crons/daily_backup >> /var/www/web0/files/logs/backup.log 2>>/var/www/web0/files/logs/backup.err
Das ist ein Shellscript! => http://de.wikipedia.org/wiki/Bourne_Shell#SkripteDreamPromise hat geschrieben:Ich hab die Datei daily_backup.sh in ein Verzeichnis kopiert und wollte sie ausführen um zu testen ob es auch geht.Aber es kommt ein Fenster wo steht ob ich die Datei downloaden will..... hmmm....
Was hab ich falsch gemacht???
Und wer führt das aus ?Ich denke der CJ.Banger hat geschrieben:Das wird auf dem System selbst aufgerufen, nicht über den Browser.
DP30 3 * * * /var/www/web0/files/crons/daily_backup >> /var/www/web0/files/logs/backup.log 2>>/var/www/web0/files/logs/backup.err
Und:DreamPromise hat geschrieben:Moin moin
So gehts :
<?
exec("mysqldump -u Datenbankname -pPasswort --add-drop-table Datenbankname >dump" . date('dmY') . ".sql");
// exec("gzip dump" . date('dmY') . ".sql");
echo "Die Datenbank ist gesichert ...";
?>
Also folgendes Prob:Gumfuzi hat geschrieben:ist die einfachste und schnellste Lösung - sofern man diesen Befehl ausführen darf (das weiss der Provider)
Code: Alles auswählen
exec()