Ahoi,
ich habe mir mal ein kleines PHP-Skript gebastelt, welches DB und die komplette Contao-Installation in ein Backup-Verzeichnis sichert (jeweils als tar.gz). Man kann es entweder direkt aufrufen, oder als Cron-Job wenn möglich.
Ich habe so auf diese Weise immer die letzten 14 Tage als Backup vorliegen.
PHP-Code:
<? php
// Variablen für das Backup
$dbHost = "localhost"; // Datenbank Host
$dbDatabase = "contao"; // Name der Datenbank
$dbUser = "root"; // Datenbank User
$dbPass = "root"; // Datenbank Passwort
$project = "Contao"; // Projektname
$root = "https://contao.local/"; // Http-Pfad der Installation mit / am Ende
$path = "_Backup"; // Ordner für Sicherung (Ordner muss existieren)
$prefix = "backup"; // Backup Namen (Daten)
$date = date("Y-m-d_H-i-s"); // Datumsformat
$tage = 14; // Angabe in Tagen nach denen Sicherungen gelöscht werden sollen
$fileType = 'gz'; // Dateiendung welche gelöscht werden soll
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Ab hier keine Änderungen mehr nötig
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Datenbank sichern und als gz-Archiv ablegen
shell_exec('mysqldump -h '.$dbHost.' -u '.$dbUser.' -p'.$dbPass.' '.$dbDatabase.' | gzip > '.$path.'/'.$date.'_'.$dbDatabase.'.sql.gz');
// Daten sichern und als gz-Archiv ablegen
shell_exec('tar --exclude=\''.$path.'\'* -cvpzf '.$path.'/'.$date.'_'.$prefix.'.tar.gz ./* .??*');
// Textausgabe
echo '<p>Die <strong>'.$project.'</strong> Sicherung wurde am '.$date.' erstellt</p>';
// Ältere Sicherungen löschen
foreach (array_slice(scanDir($path), 2) as $datei) {
$dateityp = pathinfo($datei);
if (is_file($path . $datei)) {
if ($dateityp['extension'] == $fileType) {
if (floor((time() - filemtime($path . $datei)) / 86400) > $tage) {
unlink($path . $datei);
}
}
}
}
?>
Lesezeichen