Backup per Cronjob

  • Hallo zusammen.


    Momentan mache ich alle paar Tage per Confixx ein Backup und zieh mir das dann daheim per FTP auf NAS.


    Kann ich das erstellen des Backups irgendwie per Cronjob automatisieren ?
    Im Confixx gibt es ja den Punkt "Crontab". Aber was muss ich da eintragen ?

  • Prinzipiell wäre es per PERL-Skript, das man dann als Crontab einträgt sicher möglich (solange die benötigten Funktionen unterstützt werden), dennoch kann ich dir für das Praktische nichts Genaueres sagen, weil ich in PERL nur das Nötigste mache und sonst nichts ...

  • Ah, da war mal was, wozu ich etwas schreiben wollte. Hier mal eine Möglichkeit:


    [PHP]<?php
    header('Content-Type: text/plain');


    $user = 'web123';
    $password = urlencode('DEIN_PASSWORT');
    $host = 's123.netcup.net';


    $fp = fsockopen($host, 80, $errno, $errstr, 30);
    if (!$fp) {
    echo "$errstr ($errno)<br />\n";
    } else {
    $loginData = "username={$user}&password={$password}";
    $out = "POST /login.php HTTP/1.0\r\n";
    $out .= "Host: {$host}\r\n";
    $out .= "Connection: close\r\n";
    $out .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $out .= 'Content-Length: ' . strlen($loginData) . "\r\n";
    $out .= "\r\n";
    $out .= "{$loginData}\r\n";


    fwrite($fp, $out);
    $response = '';
    while (!feof($fp)) {
    $response .= fgets($fp, 128);
    }
    fclose($fp);


    preg_match_all('#Set-Cookie: (.*);#', $response, $matches);


    if (in_array('mysql', $argv))
    $out = "GET /user/{$user}/tools_backup2.php?destination=upload&bname_search=&selectAll=1&backup%5B%5D=mysql&action=backup HTTP/1.0\r\n";
    else
    $out = "GET /user/{$user}/tools_backup2.php?destination=upload&bname_search=&selectAll=1&backup%5B%5D=html&backup%5B%5D=files&backup%5B%5D=mysql&action=backup HTTP/1.0\r\n";
    $out .= "Host: {$host}\r\n";
    $out .= "Connection: close\r\n";
    $out .= 'Cookie: ' . implode('; ', $matches[1]) . "\r\n";
    $out .= "\r\n";


    $fp = fsockopen($host, 80, $errno, $errstr, 30);
    fwrite($fp, $out);
    $response = '';
    while (!feof($fp)) {
    $response .= fgets($fp, 128);
    }
    fclose($fp);


    echo $response;
    }


    [/PHP]


    Ich habe den Host noch als Parameter gemacht, abgesehen davon war das Skript vor gut 3 Monaten in der Lage, von einem vServer per Cronjob ein Backup von einem Webspace zu machen. Dort müssen die FTP-Daten so eingestellt sein, dass ein manuelles Backup funktioniert. Dieses Skript meldet sich in Confixx an und stößt das Backup an. Da die Datenbank häufiger gesichert werden sollte als die Dateien, kann man über einen Parameter angegeben, dass nur die DB gebackupt werden soll. Der Cronjob dafür sieht so aus:

    Code
    0 3 * * * root /usr/bin/php -q /home/backup_scripts/backup.php > /dev/null
    0 0,6,9,12,15,18,21 * * * root /usr/bin/php -q /home/backup_scripts/backup.php mysql > /dev/null
    30 */3 * * * root /home/backup_scripts/archivieren.sh


    Damit wird einmal täglich alles gebackupt und alle drei Stunden die DB (ist im vollen Backup auch mit drin, deswegen nicht */3). Eine halbe Stunde später wird ein Skript aufgerufen, das die Dateien umbenennt, sodass die Backups nicht beim nächsten Mal wieder überschrieben werden.


    Könnte man auch kürzer schreiben, aber es tut was es soll.



    Das ist jetzt wie gesagt eine Beschreibung, wenn man einen Server zur Verfügung hat. Ich weiß nicht, ob man das auch alles mit Cronjobs von Confixx abdecken kann, ob dort alle Funktionen verfügbar sind usw.

  • Danke. Werde ich, sobald Zeit ist mal testen.


    Mir reicht einmal am Tag DB und Files sichern. Das wird dann abends vom NAS per FTP gedownloaded. Daher brauch ich das umbenennen auch nicht.