PHP Script für Backup

Von: , Frage gestellt am Do, 12. Jul 2007
Hallo.

Ich hab da mal wieder ein Problem.

Hab auf meiner Homepage eine Shoutbox, die Einträge der Shoutbox werden in shouts.txt geschrieben.

Jetzt möchte ich von dieser shouts.txt je Tag vier Backup-Dateien erstellen. z.B. um 24:00h, 06:00h, ...
Das Script soll einfach die Datei shouts.txt kopieren und den Dateinamen in date("d.m.Y") und date("H:i") _ shouts.txt umbenennen.

Ist das mit PHP möglich??

Falls ja, bitte um hilfestellung.

Grüße,
Sebastian

11 Antworten zu dieser Frage

  1. Antwort von nach 37 Minuten 0 hilfreich
    Re: PHP Script für Backup
    Jetzt möchte ich von dieser shouts.txt je Tag vier
    Backup-Dateien erstellen.

    Ist das mit PHP möglich??
    Prinzipiell wohl schon, nachdem meines Wissens PHP auch ohne Webserver einsetzbar ist.

    Aber das größere Problem ist das Starten des Scripts zu einem bestimmten Zeitpunkt. Das geht natürlich nicht über den Webserver, weil der ja nur Scripts ausführt, wenn sie von einem Besucher angefordert werden.

    Bei Unix-Webservern gibt es oftmals bei den Webspaces etwas dabei, was sich "Cronjob" nennt. Per Cron lassen sich zeitgesteuert Programme oder Scripts ausführen. Ob es sowas auch unter Windows gibt, entzieht sich meiner Kenntnis. Ob das Dein Webspace erlaubt, musst Du herausfinden.

    In die Crontab kannst Du dann sowas wie das eintragen:
    0 0,6,12,18 * * * /pfad/zum/webspace/scripts/backup_shoutbox

    Das wurde zu jeder Minute 0 und Stunde 0,6,12,18, also jeweils ab 0:00 alle 6 Stunden, das dort angegebene Script starten. Ich würde da (unter Unix) ein kleines Shellscript machen, das quasi sowas macht wie
    cp /pfad/zur/shoutbox.txt /pfad/zum/backupdir/shoutbox.txt.`date +'%d%m%y%H%M'`
    Das kopiert die Datei unter dem Namen shoutbox.txt.TTMMJJHHMM. Ist aber Unix-Shellscript und kein PHP, also wahrschienlich eigentlich keine Antwort für dieses Forum ;-)

    Immer lächeln!
    -Efchen
    • Antwort von nach 45 Minuten 0 hilfreich
      Re^2: PHP Script für Backup
      Hallo Efchen. Prinzipiell wohl schon, nachdem meines Wissens PHP auch ohne
      Webserver einsetzbar ist.

      Aber das größere Problem ist das Starten des Scripts zu einem
      bestimmten Zeitpunkt. Das geht natürlich nicht über den
      Webserver, weil der ja nur Scripts ausführt, wenn sie von
      einem Besucher angefordert werden.
      dann wäre es aber meines erachtens am sinnvollsten, einfach den Codeteil in die index.php zu packen und bei jedem aufruf eines benutzers, wird eine backup-shoutbox.txt-datei erzeugt??

      Wäre dies dann möglich?? In die Crontab kannst Du dann sowas wie das eintragen:
      0 0,6,12,18 * * * /pfad/zum/webspace/scripts/backup_shoutbox

      Das wurde zu jeder Minute 0 und Stunde 0,6,12,18, also jeweils
      ab 0:00 alle 6 Stunden, das dort angegebene Script starten.
      Ich würde da (unter Unix) ein kleines Shellscript machen, das
      quasi sowas macht wie
      cp /pfad/zur/shoutbox.txt
      /pfad/zum/backupdir/shoutbox.txt.`date +'%d%m%y%H%M'`
      Das kopiert die Datei unter dem Namen shoutbox.txt.TTMMJJHHMM.
      Ist aber Unix-Shellscript und kein PHP, also wahrschienlich
      eigentlich keine Antwort für dieses Forum ;-)
      k...dann wird mir das ja eh nicht weiterhelfen, weder hab ich unix, noch kenntnisse. :/

      Grüße,
      Sebastian
      • Antwort von nach 11 Stunden 0 hilfreich
        Re^3: PHP Script für Backup
        dann wäre es aber meines erachtens am sinnvollsten, einfach
        den Codeteil in die index.php zu packen und bei jedem aufruf
        eines benutzers, wird eine backup-shoutbox.txt-datei erzeugt??
        Das wäre zumindest eine Lösung. Aber wenn Du mit jedem Schreiben
        Deiner Shoutbox ein Backup mit dem selben Namen anlegst, ist das
        halt nicht mehr viel Backup. Zumindest nicht mehr so viel Backup,
        wie Deine 6-Stunden-Lösung. Wäre dies dann möglich??
        Ja. k...dann wird mir das ja eh nicht weiterhelfen, weder hab ich
        unix, noch kenntnisse. :/
        Die meisten Webspaces laufen unter Unix.
        Daraus schließe ich, dass Du das für Zuhause brauchst.
        Da ist dann das Backuppen vermutlich auch nicht sooo wichtig.

        Schönen Abend,
        -Efchen
        • Antwort von nach 22 Stunden 0 hilfreich
          Re^4: PHP Script für Backup
          hallo efchen.

          :Das wäre zumindest eine Lösung. Aber wenn Du mit jedem
          :Schreiben
          :Deiner Shoutbox ein Backup mit dem selben Namen anlegst, ist
          :das
          :halt nicht mehr viel Backup. Zumindest nicht mehr so viel
          : Backup,
          :wie Deine 6-Stunden-Lösung.

          nene...der name setzt sich dann aus datum, uhrzeit und shouts.txt zusammen...also die sind nie ident.

          :Die meisten Webspaces laufen unter Unix.
          :Daraus schließe ich, dass Du das für Zuhause brauchst.
          :Da ist dann das Backuppen vermutlich auch nicht sooo wichtig.

          nene...wird schon auf nem server liegen. also wäre deine lösung auch möglich.

          habe aber im mom. das script von johnny bravo und dominik in meinen quellcode eingefügt und es klappt spitze. :)

          grüße,
          sebastian
  2. Antwort von nach einer Stunde 0 hilfreich
    Re: PHP Script für Backup
    Hallo,

    du könntest auch das Backup anstoßen, wenn das erste mal anch der geplanten Zeit jemand die Seite aufruft.

    /* --------- PHP-Code beginnt ------------------- */
    // Letzte gewünschte Stunde
    // Tag durch vier teilen und Rest von aktueller Zeit abziehen
    $lastbackuphour = date("G") - (date("G") % 4);

    // Dateiname nur mit Datum, Stunden und Minuten
    $backupfile = date("d.m.Y H:i").'_shouts.txt';

    // Backup noch nicht vorhanden? Dann kopieren.
    if (! file_exists($backupfile))
    copy('shouts.txt', $backupfile);
    /* --------- PHP-Code zu Ende ------------------- */

    Fiel mir gerade so spontan ein. Bite um kurze Rückmeldung, was du von der Idee hältst. Hab's nicht getestet, aber bin zuversichtlich, dass es klappt *g*.

    Grüße,
    Nik

    P.S.: Wenn in den 4 Stunden dazwischen niemand die Seite aufruft, läuft natürlich kein Backup. Macht auch keinen Sinn, denn dann hat sich die Shoutbox garantiert auch nicht geändert ...
    • Antwort von nach 22 Stunden 0 hilfreich
      Re^2: PHP Script für Backup
      Hallo Dominik. du könntest auch das Backup anstoßen, wenn das erste mal anch
      der geplanten Zeit jemand die Seite aufruft.
      Ja deine Variante wäre für mein Backup-System auch möglich, denn warum backupen, wenn eh niemand drauf war.
      Danke für deine Lösung. :)

      Hat gut geklappt.

      Grüße,
      Sebastian /* --------- PHP-Code beginnt ------------------- */
      // Letzte gewünschte Stunde
      // Tag durch vier teilen und Rest von aktueller Zeit abziehen
      $lastbackuphour = date("G") - (date("G") % 4);

      // Dateiname nur mit Datum, Stunden und Minuten
      $backupfile = date("d.m.Y H:i").'_shouts.txt';

      // Backup noch nicht vorhanden? Dann kopieren.
      if (! file_exists($backupfile))
      copy('shouts.txt', $backupfile);
      /* --------- PHP-Code zu Ende ------------------- */

      Fiel mir gerade so spontan ein. Bite um kurze Rückmeldung, was
      du von der Idee hältst. Hab's nicht getestet, aber bin
      zuversichtlich, dass es klappt *g*.

      Grüße,
      Nik

      P.S.: Wenn in den 4 Stunden dazwischen niemand die Seite
      aufruft, läuft natürlich kein Backup. Macht auch keinen Sinn,
      denn dann hat sich die Shoutbox garantiert auch nicht geändert
      ...
  3. Antwort von nach 6 Stunden 0 hilfreich
    Re: PHP Script für Backup
    Hallo!

    Füg mal in deine Index.php folgenden Code am Anfang ein:
    <?php
    echo $letztes_backup_Stunde=date(H)-date(H)%6; 
    if (!is_file("Backup_".$letztes_backup_Stunde."h_".date(y)."_".date(m)."_".date(d)."_shouts.txt")){
    	$fp=fopen('./shouts.txt', 'r'); 
    	$fp2=fopen("Backup_".$letztes_backup_Stunde."h_".date(y)."_".date(m)."_".date(d)."_shouts.txt", 'a');
    	while (!feof($fp)){
    	echo $read=fread($fp, 1024);
    	fwrite($fp2, $read);
    	}
    	fclose($fp);
    	fclose($fp2);
    }	
    ?>
    


    Dann wird beim öffnen der Seite ein Backup angelegt, es sein denn, dass schon eins in den letzten 6 Stunden angelegt wurde... [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
    • Antwort von nach 16 Stunden 0 hilfreich
      Re^2: PHP Script für Backup
      Warum denn so umständlich? Der Code macht genau das Gleiche, wie der von mir gepostete, nur mit sehr viel mehr Aufwand ...
    • Antwort von nach 22 Stunden 0 hilfreich
      Re^2: PHP Script für Backup
      Hallo Johnny.

      Danke, dass du mir nochmals antwortest.

      :Füg mal in deine Index.php folgenden Code am Anfang ein:
      : <?php
      : echo $letztes_backup_Stunde=date(H)-date(H)%6;
      : if
      (!is_file("Backup_".$letztes_backup_Stunde."h_".date(y)."_".date(m)."_".date(d)."_shouts.txt")){
      : $fp=fopen('./shouts.txt', 'r');
      :$fp2=fopen("Backup_".$letztes_backup_Stunde."h_".date(y)."_".date(m)."_".date(d)."_shouts.txt",
      'a');
      :while (!feof($fp)){
      :echo $read=fread($fp, 1024);
      :fwrite($fp2, $read);
      :}
      :fclose($fp);
      :fclose($fp2);
      :}
      :?>
      :Dann wird beim öffnen der Seite ein Backup angelegt, es sein
      :denn, dass schon eins in den letzten 6 Stunden angelegt
      :wurde...

      Stimmt...es funktioniert. Das nächste backup wird dann in 6h wieder ausgeführt?? (sofern, jemand drauf geht) :)

      Schön wäre auch noch, wenn die Datei nach dem fwrite in den ordner ./shoutbox/backup verschoben wird...gibts da eine Function / Methode ?

      Grüße,
      Sebastian


Keine passende Antwort gefunden? Jetzt eigene Frage stellen!