Backup-Lösung für FTP und MySQL in PHP

Dieser Beitrag ist eine Ergänzung bzw. Erweiterung des vorherigen Posts „FTP-Backup-Lösung mit PHP“. Die große Neuerung der Version 1.2 ist die Funktion MySQL Datenbanken sichern zu können. Auch hier wird ein Backup erstellt, überschüssige Backups (wenn mehr vorhanden sind als der gewünschte Maximalwert) werden gelöscht und neue Backups ggf. zu einem externen Server übertragen. Mit Version 1.2.1 gibt es zusätzlich die Möglichkeit, ALLE Ordner der Root-Ebene, mit Ausnahmen, zu sichern und Version 1.2.2 ermöglicht detailliertere Ausnahmen.

Features

Diese Lösung (v1.2.2) bietet nun folgenden Funktionsumfang:

  • beliebig viele Ordner des All-Inkl Accounts in einzelne .tar.gz Archive sichern
  • oder: alle Ordner der Root-Ebene, mit möglichen Ausnahmen, sichern
  • Detailliertere Ausnahmen mit Datei- und Ordnermasken wie z.B. „*.tar.gz“
  • Einschränkung der Anzahl aufgehobener Backups – älteste Backups werden automatisch gelöscht
  • detaillierte Ausgabe inklusive benötigter Zeit
  • E-Mail Benachrichtigung
  • Farbliche Hervorhebung
  • Verbesserungen des Backup Prozesses, zusätzliche Überprüfungen und Debug Infos bei Fehlern
  • Verbinden eines externen FTP Server und Kopieren aller neuen Backups
  • Angabe eines beliebigen FTP Ports
  • Verbindung über FTPs (SSL FTP) Port 21 wird verwendet, unsicheres FTP nur noch als Fallback
  • detailliertere Informationen über die Backups in der Benachrichtigungsmail
  • Backup von beliebig vielen MySQL Datenbanken von localhost, Aufräumen der Backups und Export an externen Server
  • E-Mail Anpassungen über Parameter möglich – Betreff, Anmerkungen, Details
  • ausführliche Ausgabe aller Backups im Skript und per Mail

Zwischen den Zeilen 37 und 82 findet ihr alle Variablen, die ihr anpassen müsst/könnt.

Zur Datenbanksicherung ist zu sagen, dass diese auf den Hoster All-Inkl optimiert ist. Sie sichert nur Datenbanken von localhost und benötigt den PHP Befehl „exec()“ sowie die Komponenten „mysqldump“ und „gzip“, die auf All-Inkl Servern erlaubt bzw. installiert sind. Auf anderen Hostern müssen daher ggf. diese Möglichkeiten geschaffen oder die MySQL Sicherung (Zeile 190-191) verändert werden.

Screenshot

Das Bild zeigt die Ausgaben des Backup Skripts und die versendete E-Mail Benachrichtigung

Code

Schaut für Code-Alternativen oder ein weniger komplexes System auch auf die Version 1.1 und 1.0

Update 03.2016: Update des Codes auf Version 1.2.2
Code anzeigenDen Code könnt ihr bequem mit den Links/Rechts Pfeiltasten horizontal bewegen.

Zufälliger Artikel:  Passwörter mit Batch versteckt speichern + auslesen

Sicherheit: Absicherung mit .htpasswd

Das Verzeichnis, in dem die backup.php und die Backups liegen, sollte natürlich mit einer .htpasswd abgesichert werden. Mit einer eingerichteten .htpasswd Datei ist zuerst ein Login nötig, eh man auf bestimmte Bereiche des Webspaces zugreifen darf:
Das Bild zeigt eine Login Datenabfrage beim Aufruf der Backup URL
Die Datei .htpasswd enthält hierbei die Login Daten und in der .htaccess des Backup Unterordners wird festgelegt, dass eine .htpasswd diesen Ordner schützt. Die .htpasswd generiert ihr euch am besten mit diesem Generator und baut sie dann folgendermaßen in die .htaccess dieses Ordners ein:

Sicherheit: Absicherung mit .htaccess

Da wir schonmal bei .htaccess sind, erhöhen wir die Sicherheit mit ein paar weiteren grundlegenden Zeilen:

Dadurch werden Zugriffe auf bestimmte Dateitypen (auch die Backup Dateien), Verzeichnisse und Zugriffe mit sicherheitskritischen Merkmalen unterbunden. Alle diese nicht validen Zugriffe bekommen die index.htm serviert, welches einfach nur eine leere HTML Datei ist. Somit wird den Abfragenden auch kein detaillierter Grund gegeben, warum der Zugriff fehlschlug.

Automatisierung mit All-Inkl Cronjobs

Zu guter Letzt hilft diese Sicherungslösung natürlich nur, wenn sie automatisiert wird. Auch dies ist stark abhängig von eurem Hoster, System, dem Anwendungsbereich usw.
Im Falle von All-Inkl als Webhoster, könnt ihr die Cronjob Funktionalität im KAS (KAS -> Tools -> Cronjobs) benutzen:
Das Bild zeigt die Cronjob Einrichtungsoberfläche von All-Inkl

41 Kommentare

  1. Zwar alles sehr technisch für mich, aber mit dieser grandiosen Anleitung hab ich die Absicherung der .htacess hinbekommen.
  2. Ich danke viel viel mals, danach habe ich gesucht und lange gesucht. Endlich gefunden. Du erklärst sogar alles genau bei dem Anbieter bei dem ich auch bin All inkl.

    ich werde mir deinen Beitrag schnappen und ein Review drüber schreiben da ich dein tool bzw script genial finde thanks.

  3. Eigentlich das was ich gesucht habe, jedoch beim Testlauf bekomme ich eine Fehlermeldung:

    Parse error: syntax error, unexpected ‚[‚ in

    und komme daher nicht weiter.

  4. Hallo Guido, das sollte natürlich nicht passieren. Ich kann mich voraussichtlich erst Ende der Woche darum kümmern, werde aber den Fehler versuchen nachzuvollziehen und zu beheben. Kannst du mir bitte nochmal die komplette Fehlermeldung inklusive Screenshot schicken und an welcher Stelle der Fehler aufgetreten ist?
    Danke
  5. Fehlermeldung:

    Parse error: syntax error, unexpected ‚[‚ in /www/htdocs/123456/backup/wert/backup.php on line 365

    Danke für Deine Mühen!

  6. Hallo Guido,

    ich habe bei mir das Backup nochmal seperat eingerichtet, um es zu testen. So der Ablauf:

    1. Neues FTP-Verzeichnis: [root]/backup/test/
    2. backup.phpx Datei erstellt und den Code aus diesem Artikel 1:1 reinkopiert
    3. Folgende Stellen im Code angepasst:
      $ftpFoldersToBackup = array(„dev___test“, „feed2___test 2″);
      $copyToExternalFtp = 0;
      $backupMysqlData = 0;
      $dir = $pfad.“backup/test/“;
    4. Gestartet…

    Ich kriege da also kein Fehler. Damit würde ich den Fehler bei deinem Code oder Hoster vermuten.
    1.) Zeig mir mal bitte deine Zeilen 360-370 mit 365 fett markiert.
    2.) Bei welchem Hoster bist du?

    LG

  7. Also schauen wir mal:

    Neues Verzeichnis im root – hab ich
    code original aus

    http://hannes-schurig.de/09/06/2015/backup-loesung-fuer-ftp-und-mysql-in-php/

    raus kopiert

    in eine leere phpx reinkopiert

    Code angepasst:

    // ########## EDIT HERE ###################
    // ### FTP Data
    // which root folders should get backed up? comment is optional
    // format: „foldername___comment“
    // or: „foldername“
    $ftpFoldersToBackup = array(„test“);
    $copyToExternalFtp = 0; // copy new backup files to external ftp server? should be 1/“yes“/“ja“ or 0/“no“/“nein“
    // external (ftp) servers to copy new backups to, format:
    // in general: ftp://username:password@url:port/path (port is required!)
    // ftp://user:pw@ftp.server.com:21/
    // ftp://user:pw@serverurl.com:21/optional/path
    $externalFtpUri = „ftp://admin:password@barketing.dns.com:21/Data/FTP-Backups“;
    // ### MySQL Data
    $backupMysqlData = 0;
    // one or more databases of the local mysql server to backup, multiple data combined with „___“, comment is optional
    // format: „dbName___dbUser___dbPassword___comment“
    // or: „dbName___dbUser___dbPassword“
    $databasesToBackup = array(
    „d01ce064___d01ce064___password___main website DB“,
    „d01d7131___d01d7131___password“
    );
    // ### Mailing Data
    $sendMail = 0; // send notification mail when all backups are done – should be 1/“yes“/“ja“ or 0/“no“/“nein“
    $mailTo = „schurigh@gmail.com“; // valid mail address to send the mail to
    $mailSubject = „Automatische FTP Sicherung abgeschlossen“; // mail subject
    // additional mail annotations that gets inserted after the main mail content
    $mailAdditionalNotes = „Hiermit kann – wenn gewünscht – zusätzlicher Text in die Mail eingebaut werden.“;
    $mailBackupDetails = 1; // send information about successful backup files? should be 1/“yes“/“ja“ or 0/“no“/“nein“
    // ### General Options
    $backupFileMaximum = 2; // how many archives should be stored?
    $dir = $pfad.“test/“; // in which subfolder is this backup php file? this would be: „root/backup/“
    // ######### STOP EDITING HERE ###################

    Gestartet…….

    Sofort Fehlermedung:

    Parse error: syntax error, unexpected ‚[‚ in /www/htdocs/w007d6c2/backup/backup.php on line 365

    Die Zeile 365 ist die Originalzeile aus Deinem Skript

    pathinfo($file)[„extension“] == $fileType &&

    Gehostet ist die Kiste bei all-inkl.de

    LG

  8. Hallo Hannes,
    erst mal vielen Dank für deine Scripte auf der Seite. So was habe ich gesucht und zum Glück bei dir gefunden. Mein Hoster ist auch all-inkl, daher kann ich die gut gebrauchen. Ich habe nur jetzt nur Probleme, das backup script läuft nicht ganz und bei der kompletten htaccess habe ich Probleme.

    Backscrip hat bei der Datenbank folgenden Fehler:

    Warning: exec() has been disabled for security reasons in

    Und bei der kompletten htaccess:

    AuthType BasicAuthName "Backups"AuthUserFile "/www/htdocs/mein account/backup/.htpasswd"Require valid-user#block access to certain file types<FilesMatch ".(htaccess|htpasswd|ini|phps|log|sh|tar.gz)$"> Order Allow,Deny Deny from all</FilesMatch># disable directory browsingOptions All -Indexes# prevent basic url hacking stuff# from: http://www.queness.com/post/5421/17-useful-htaccess-tricks-and-tipsRewriteEngine On# proc/self/environ? no way!RewriteCond %{QUERY_STRING} proc/self/environ [OR]# Block out any script trying to set a mosConfig value through the URLRewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [OR]# Block out any script trying to base64_encode crap to send via URLRewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]# Block out any script that includes a <script> tag in URLRewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]# Block out any script trying to set a PHP GLOBALS variable via URLRewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]# Block out any script trying to modify a _REQUEST variable via URLRewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})# Send all blocked request to homepage with 403 Forbidden error!RewriteRule ^(.*)$ /index.htm [F,L]ErrorDocument 401 /backup/index.htmErrorDocument 403 /backup/index.htmErrorDocument 404 /backup/index.htmErrorDocument 500 /backup/index.htm

    habe ich immer folgenden Fehler:

    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator,

    Kannst du mir vielleicht weiter helfen?

    Danke dir

    LG

    Stingrays

  9. Hast du irgendwo einen eigenen Fehler entdeckt? Kannst du den Lesern hier irgendwelche Tipps, Hinweise oder Hilfen geben, die vielleicht in Zukunft Probleme wie deines vermeiden?

  10. Hallo,
    da bin ich dann noch mal. Hast recht vielleicht ist ja noch jemand blind und macht nicht alles genau nach Anweisung.

    In deinem Script habe ich keine Fehler gefunden, sondern ich habe den Fehler begangen und die Seite nicht backup.phpx genannt sondern backup.php und das ist bei allinkl falsch, wenn man exec() nutzen möchte. Sonst habe ich jetzt alles umgesetzt was in deinem Script steht und auch die .htaccess habe ich so eingerichtet und bis jetzt kommt keine Fehlermeldung. Klappt alles bestens auch das mit SyncBack. Bin begeistert denn das erspart mir eine Menge Arbeit und Zeit.

  11. Hallo Hannes,

    vielen Dank für Deine Backup-PHP Scripte.

    Ist es mit Version 1.2 Deines Scriptes auch möglich, den kompletten Webspace zu sichern?

    in Zeile 040 Deines Scriptes werden die einzelnen Folder $ftpFoldersToBackup definiert.
    Gerne möchte ich jedoch alle Folder „root/*“ auf meiner Seite sichern, mit Ausnahme der unter Zeile 105 $ignorieren definierten Folder.

    Wie/was muss ich hierzu anpassen?

    Da ich die Option $CopyToExternalFTP deaktiviert habe, ist es möglich, in Deiner Beachrichtigungsemail
    welche beim erfolgreichem erstellen der Backups per email versandt werden, die Dateinamen auf die tatsächlichen Backupdateien zu verlinken? So dass beim anklicken dieser Links ein Download dieser Files nach Authentifizierung erfolgen kann?

    Zu guter letzt: Werden die Datenbankdumps auch per FTP übertragen? Wenn die Option $CopyToExternalFTP aktiviert wurde?

    Viele Grüße
    Martin

  12. Also, ich hab mich mal kurz hingesetzt und zwei Ergänzungen programmiert: alle Root-Ordner sichern sowie Excludes ermöglichen.

    Hier nur die Änderungen, die du in deinem Script einbauen kannst; im Artikel ist der Code ebenfalls aktualisiert.

    Vor

    einbauen:

    Vor

    einbauen:

    Die Sachen mit dem verlinkten Text in der Mail hätte jetzt eine größere Umprogrammierung einer Funktion benötigt. Wenn du möchtest, kannst du dich gerne selber damit beschäftigen,
    function backupDetails($backups) enthält den Code, der dann sowohl in die Mail als auch in den HTML Bericht beim direkten Aufruf der .phpx eingefügt wird. Dort müsste man es bei

    irgendwie reinfriemeln aber dafür muss man die Schleifen ändern, die Spalten analysieren, die Datei-/Ordner-Pfade mit in das Array geben usw. – also einige Änderungen, die ne Weile dauern. Sorry.

    LG

  13. ich hoffe es klappt wäre geniale lösung

    eine frage zu diesem ftp external backup i habe einen qnap nas und die ddns ist myqnapcloud.com

    ich denke ich habe alles richtig wie kann ich das aber testen ob es funzt ???

    und ich möchte gerne die datenbanken sichern aber ich muss nirgends login oder so etwas eingeben macht das script das automatisch ? bin auch auf all inkl

    und bei ordner strutur die so lautet:
    root/backup1/backup2
    er sichert den ordner backup1 aber auch die unterordner mit datenbank ?

  14. irgend etwas stimmt mit dem zusatz für die htaccess nicht. wenn ich diesen einfüge beomme ich sofort einen 500 server error.

    wenn ich die htaccess via all inkl verzeichnis schutz erstelle funktioniert alles sofern ich den zusatz mit einbaue geht es nicht.

    außerdem backupt das script leider nur 2 datenbanken ich habe aber um die 20 datenbanken wo kann da der fehler sein?

  15. wenn man aus den kommentaren den code der htaccess nutzt geht es

    AuthType BasicAuthName "Backups"AuthUserFile "/www/htdocs/mein account/backup/.htpasswd"Require valid-user#block access to certain file typesOrder Allow,DenyDeny from all# disable directory browsingOptions All -Indexes# prevent basic url hacking stuff# from: http://www.queness.com/post/5421/17-useful-htaccess-tricks-and-tipsRewriteEngine On# proc/self/environ? no way!RewriteCond %{QUERY_STRING} proc/self/environ [OR]# Block out any script trying to set a mosConfig value through the URLRewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [OR]# Block out any script trying to base64_encode crap to send via URLRewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]# Block out any script that includes a  tag in URLRewriteCond %{QUERY_STRING} (|%3E) [NC,OR]# Block out any script trying to set a PHP GLOBALS variable via URLRewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]# Block out any script trying to modify a _REQUEST variable via URLRewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})# Send all blocked request to homepage with 403 Forbidden error!RewriteRule ^(.*)$ /index.htm [F,L]ErrorDocument 401 /backup/index.htmErrorDocument 403 /backup/index.htmErrorDocument 404 /backup/index.htmErrorDocument 500 /backup/index.htm

  16. nach rumbasteln geht nun alles. einzig die datenbanken werden nicht gesichert. zwar werden 2 datenbanken gesichert ich finde diese aber weder in meinem kas.all… noch wo anders. und die datenbanken meiner webseiten werden nicht gesichert. warum ?
  17. war mein fehler also meine letzten koments können gelöscht werden

    aber ich habe dennoch einen fehler
    Stelle (FTPs über SSL - Port 21) Verbindung zu FTP Server hompii.myqnapcloud.com her...Verbindung hergestellt, Login erfolgreich, passiver Modus aktiviert, Verzeichniswechsel zu /Windows/backupweb/ erfolgreich.15 FTP Backups werden auf externen FTP kopiert...Kopiere FTP_adder_2016-03-20_211050.tar.gz (Größe: 68.9 MB MB) auf den FTP...Warning: ftp_put(): php_connect_nonb() failed: Operation now in progress (115) in /www/htdocs/sssb/backup/ftp-backup.phpx on line 545Warning: ftp_put(): Type set to A in /www/htdocs/ssssb/backup/ftp-backup.phpx on line 545Fehler beim Kopieren des Backups.Kopiere FTP_ansen_2016-03-20_211059.tar.gz (Größe: 73.7 MB MB) auf den FTP...Warning: ftp_put(): php_connect_nonb() failed: Operation now in progress (115) in /www/htdocs/sssb/backup/ftp-backup.phpx on line 545Warning: ftp_put(): Entering Passive Mode (192,168,1,122,219,152). in /www/htdocs/assb/backup/ftp-backup.phpx on line 545Fehler beim Kopieren des Backups.Kopiere FTP_comp_2016-03-20_211115.tar.gz (Größe: 21.1 MB MB) auf den FTP...

    was mag das sein ??

  18. Hallo bill,

    ich lösche für gewöhnlich keine solche Kommentare. Jeder Fehler, den ein Leser macht, kann auch von einem anderen Leser gemacht werden. Von daher wäre es hilfreicher, wenn du mir zu jedem deiner Kommentar kurz schreiben könntest, was das Problem war und wie du es dann gelöst hast. Irgendeine Codezeile nicht angepasst, eine Einstellung vergessen, was können die anderen Leser beachten, wenn sie die gleichen Fehler bekommen?

    Zu deinen letzten Fehlern: das scheint eher am FTP-Server, deiner Firewall oder der Server/NAS-Konfig zu liegen als am Code.
    Schau dir mal diese Artikel und diese Google Suche an. Vielleicht hilft dir das weiter.

  19. Also zu dem Fehler 1 mit den Datenbanken
    Lösung : die einzelnen Datenbanken müssen mit Name dB login dB password in den Code geschrieben werden. Sonst werden diese nicht gesichert die 2 Datenbanken die immer gesichert werden sind die Demo Datenbanken aus dem Script die existieren ja bei uns Usern nicht

    Fehler 2 htaccess
    Ich habe den Code der htaccess eines Kommentares genommen damit ging alles

    Außerdem cache löschen wenn man die htaccess erstellt hat Bülow inkognito Fenster aufmachen

    Fehler 3
    Ftp ich vermute auch das es an den Einstellungen meiner nas liegt weiß aber nicht wo ich dort was einstellen muss

    Fehler 4
    Unterordnen unterordnen
    Also Ordner in Ordner werden gesichert als der übergeordnetrn Ordner wäre toll wenn man dem Script sagen kann aus dem Ordner Tools sichere Ordner 1 aber nicht zwei oder 1 und 2 aber einzelne

    Das Script sichert bislang den gesamten Tools Ordner mit allem was drin ist

  20. Zu Problem 1:
    Ja natürlich müssen die 2 im Code enthaltenen Datenbanken gelöscht werden – das sollen ja nur Beispiele sein. Ich habe den Code im Artikel an der Stelle nochmal angepasst, damit das noch deutlicher wird.
    In den zwei Zeilen über diesen Datenbankangaben steht das Format aber extra nochmal als Gerüst:

    Noch einfacher kriege ich das nicht beschrieben, glaube ich.

    Problem 2:
    Das lag wohl am Encoding des Blogbeitrags – HTML Entities wurden leider umgewandelt und so wurde aus “ ein ".
    Ich habe das korrigiert und jetzt müsste man es 1:1 kopieren können.

    Problem 3:
    Das kann ich dir leider nicht sagen. Das Sichern der Backups auf mein NAS (Synology) funktioniert problemfrei. Dort habe ich am FTP Protokoll damals aber auch ne Menge gefummelt.

    Problem 4: Du meinst du willst Datei- oder Ordnerausschlüsse beim Backup? Die Möglichkeit gab es bereits, sie war jedoch etwas versteckt. Ich habe die entsprechende Zeile in den Config-Bereich nach oben gezogen. In Zeile 53 stehen jetzt Komma-seperiert Datei- und Ordnermasken zum Ausschließen.

    LG

  21. also ich bekomme es einfach nicht zum laufen also die ftp verbindung

    es kommt immer : Stelle (FTPs über SSL – Port 21) Verbindung zu FTP Server hdddcloud.com her…
    Verbindung hergestellt, Login erfolgreich, passiver Modus aktiviert, Verzeichniswechsel zu /Windows/backddeb/ erfolgreich.
    15 FTP Backups werden auf externen FTP kopiert…
    Kopiere FTP_addddentskdddder_2016-04-18_200934.tar.gz (Größe: 69.1 MB MB) auf den http://FTP...

    Warning: ftp_put(): php_connect_nonb() failed: Operation now in progress (115) in /www/htdocs/w01ddddb/backup/ftp-backup.phpx on line 545

    Warning: ftp_put(): Type set to A in /www/htdocs/w01ddddd6b/backup/ftp-backup.phpx on line 545

    weiß einfach nicht was ich machen soll 🙁

  22. Sorry, wie kann man die zuvor erstellten – alten Backups über das Script löschen lassen. Finde die Einstellung leider nicht, Danke.
  23. für alle die auch das problem haben wie ich, backupauf einen externen ftp ( mein QNAP NAS ) funktioniert nicht.

    Ich habe die funktion RTRR Zweiweg Synchronisierung des QNAP NAS genutzt.

    Dort wird direkt der FTP eingetragen von ALL INkl oder anderem FTP und die NAS zieht sich dann den Backup ordner.

    so schickt das script nicht auf den FTP sondern der NAS zieht sich den Ordner vom FTP

  24. ich noch einmal. was müsste geändert werden damit ich zwei backups anlegen kann. einmal wöchentlich undmonatlich.
    klar zwei cronjobs

    aber wie kann ich einen ordner erzeugen wo woche und einen monatliche backups drin sind?

    habe gerade im folder backup/backupmonatlich erstellt dort die phpx datei hinein kopiert. bekomme aber einen fehler das kein backup erstellt werden kann
    sicherlich wegen dem pfad wo trage ich den weiteren folder ein?

  25. Ich bekomme eine Fehlermeldung:

    Parse error: syntax error, unexpected ‚[‚ in /www/htdocs/backup/backup.phpx on line 384

  26. Hallo gamma, ist Zeile 384 bei dir auch
    pathinfo($file)["extension"] == $fileType &&
    so wie in meinem Originalcode oder um welche Zeile handelt es sich?
    Welche PHP Version läuft auf deinem Server?

  27. Hat jemand bemerkt das bei den Datenbanken keine Kommentare angehangen werden auch wenn man diese angibt?

    Meine dB haben alle nur die Nummer man findet schwer raus welche Seite es ist

  28. Hallo Bill,
    das stimmt, wenn du den Dateinamen meinst. Dieser wird nur aus dem Datum gebildet:
    $archivName = "FTP_$folder".date('_Y-m-d_His').".tar.gz";
    Das Kommentar wird nur in die „Berichterstattung“ (Feedbacktext, E-Mail) eingebaut. Wenn du das auch im Dateinamen haben willst, ginge das in etwa so:
    var comment = explode("___", $folderData, 2)[1];$archivName = "FTP_$folder".date('_Y-m-d_His')."_".$comment.".tar.gz";
    (nicht getestet)
    Mit dem Kommentar bei den Datenbanken geht es ähnlich – mit explode trennst du die Bestandteile am „___“ auf und holst es es in den Dateinamen.
    LG
  29. Bzgl. des nachfolgendes Fehler:
    Parse error: syntax error, unexpected ‚[‚ in /www/htdocs/backup/backup.phpx on line 384

    Bei mir habe ich die Zeile wie folgt ersetzt:
    pathinfo($file, PATHINFO_EXTENSION) == $fileType &&

    Damit funktioniert es.

  30. Ich habe aber auch noch ein Problem,

    bei mir gibt es Verzeichnisse, welche gesichert werden sollen, wo ich mit dem 10 Minuten Script-Timeout nicht klar komme.

    All-inkl-Support sagt, ich könne versuchen vorm Timeout Ausgaben des Scriptes zu generieren.

    Es stehen eine Menge flush(); Anweisungen im Script, bei mir erfolgt die Ausgabe aber erst wenn das Script komplett durchgelaufen ist.

    Hat hier jemand eine Idee, wie ich das ändern kann?

  31. @Bill,

    $sqlFile = „DB_$dbName“.date(‚_Y-m-d_His‘).“_“.$dbComment.“.sql“;

    das schreibt den Kommentar aus dem zu sichernden DB-Array auch in den Dateinamen.

    HTH

  32. kann man irgendwie auch das script so erstellen das ich zum einen jeden tag db sicherung mache aber nur jede woche ein ftp ??

    bzw kann ich irgendwie zwei der backup scripts ausführen ich habs probiert aber irgendwie klappt das nicht so

    da ich es echt satt habe mit den ganzen backup plugins für wordpress die so wie so bei all inkl nie richtig funzen

  33. @bill,

    du könntest z.B. den Wochentag abfragen ($tag=date(„w“)) und in Abhängigkeit des Ergebnisses die ftp-Backup-Parameter setzten.

    HTH

      1. Hi Billy, entschuldige die späte Antwort. Es ist eigentlich ziemlich einfach, aber Weihnachten, Silvester… ich kam nicht recht dazu.

        Also, mit PHP kann man relativ einfach den aktuellen Tag rausfiltern – du kannst also vor einer FTP-Sicherung erst den Wochentag abfragen und abhängig von diesem FTP sichern oder überspringen.

        Vor Zeile 86 wird jetzt folgender if-else-Part eingefügt:

        Nach dem else folgt die Zeile 86 im alten Code (die FTP Überschrift) und der FTP Bereich bleibt unverändert. Du brauchst dann noch eine geschlossene Klammer – im alten Code Zeile 175, mit den Zeilen oben drin Zeile 178. Die 3 im Code steht jetzt beispielhaft für Mittwoch, die Wochentage werden von Montag beginnend mit 1-7 nummeriert. Hier also die gewünschte Wochentag-Zahl eintragen und den Cronjob täglich ausführen, dann wird FTP 1x und SQL täglich gesichert. Auch FTP ließe sich mit den 3 Zeilen oben entsprechend anpassen.

        That’s it! 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.