Christopher Dittrich

Der Blog (fast) ohne P!

Archiv für die 'Funktionen' Kategorie

Eigene und/oder nützliche Funtkonen

Datenbanksicherung Marke Eigenbau

Erstellt von Chris am 12. August 2008

Die Funktion erstellt Datenbanksicherungen und löscht alle Sicherungen außer den neuesten 5.

Sie kann entweder via Cronjob oder händisch aufgerufen werden.

Zum Aufruf per Cron quelltext in eine .php-Datei sichern, und in den Crontab folgendes einfügen:

* * * * * wget –spider -q http://pfad/zur/backup.php

Wobei die Sternchen für folgendes stehen: (von links nach rechts!)

Minuten: 0-59

Stunden: 0-23

Tag des Monats: 1-31

Monat: 1-12

Tag der Woche: 0-7 (0 und 7 stehen für Sonntag)

Für jeden Wert kann auch ein * gesetzt werden, sodass der Cronjob

* 2 5 11 * wget –spider -q http://domain.tld/ordner/ordner/datei

nur am 5. November und nur von 2:00 bis 2:59 ausgeführt wird.

* 19 17 1 0 wget –spider -q http://domain.tld/ordner/ordner/datei

wird folglich nur an einem 17. Januar ausgeführt, der zusätzlich ein Sonntag ist, und dann auch nur zwischen 19:00 und 19:59.

<?php
    // Datenbankdaten eintragen
    $host= ‘localhost’;
    $user= ‘xxxxxxx’;
    $kennwort= ‘xxxxxxx’;
    $db=    ‘xxxxxxx’;

    //
    system(sprintf(
      ‘mysqldump –opt -h %s -u %s -p%s %s | gzip > %s’.$_SERVER['DOCUMENT _ROOT'].’/pfad/zum/zielordner/dump.’ . date(’Ymd_g_i’) . ‘.sql.gz’,
      $host,
      $user,
      $kennwort,
      $db,
      getenv(’DOCUMENT_ROOT’)
    ));
    echo ‘Sicherung Abgeschlossen’;

// Ordner Auslesen und veraltete Sicherungen finden
$archive = array();

$ordner = $_SERVER['DOCUMENT_ROOT'].”/pfad/zum/zielordner”;
$handle = opendir($ordner);
while ($file = readdir ($handle)) {
    if($file != “.” && $file != “..”) {
        if(is_dir($ordner.”/”.$file)) {
        } else {
            // absoluter Pfad
            $absolut = $ordner.”/”.$file;
            array_push($archive, $absolut);
        }
    }
}

closedir($handle);

//Arraysortierung umkehren, sodass neueste Sicherungen am Anfang stehen
rsort($archive);
$counter = 1;
foreach($archive as $row){

    //Archiv-Eintrag im Array > 5 Dann lösche Archiv
    if($counter > 5){
        unlink($row);
    }
    $counter++;
}
unset($archive, $counter);
?>

 

Nichts besonders tolles oder aufwendiges, aber die Funktion war mir trotzdem einen Eintrag wert :)

Tags:Datenbanksicherung, Eigenbau, mysql, php

Abgelegt unter Funktionen | Keine Kommentare »