Online Backup-Script

Ein CMSimple Support Forum für deutsch sprechende Nutzer und Entwickler
Der Zwerch
Posts: 608
Joined: Sat Jul 28, 2012 11:38 am
Location: Perle der Grafschaft > 127.0.0.1

Online Backup-Script

Post by Der Zwerch » Wed Dec 21, 2016 10:23 am

Hallo,
meinen Respekt vor der hier (von allen) geleisteten Arbeit [ external image ](seriös gemeint).

Für die Dokumentation hätte ich ggf. noch 2 Scripts, die ich freundlicher Weise von cmb bekam.

Sie werden in der userfunctions.php eingetragen:

Code: Select all

      function fullBackup()
      {
          global $pth, $o;
          $archive = new ZipArchive();
          $archive->open(
              '../../../backup/Sicherung-' . date('Ymd'). '.zip',
              ZipArchive::CREATE
      );
          $it = new RecursiveIteratorIterator(
              new RecursiveDirectoryIterator($pth['folder']['base'])
          );
          $it->rewind();
          while ($it->valid()) {
              if (!$it->isDot() && $it->key() != $pth['folder']['base'] . 'backup.zip') {
                  $archive->addFile($it->key(), $it->getSubPathName());
              }
              $it->next();
          }
          $archive->close();
      }
      if (XH_ADM && isset($_GET['backup'])) {
          fullBackup();
      } 
Beim Hosterwechsel gab es ein Problem mit der Dateigröße. Dieses wurde von cmb entsprechend geändert:

Code: Select all

      function fullBackup()
      {
          global $pth, $o;
          
          $maxsize = 64000000;
          $part = 1;
      
          $date = date('Y-m-d');
          $archive = new ZipArchive();
          $archive->open(
              "../../Backup/Sicherung-{$date}_$part.zip",
              ZipArchive::CREATE
          );
      
          $totalSize = 0;
          $it = new RecursiveIteratorIterator(
              new RecursiveDirectoryIterator($pth['folder']['base'])
          );
          $it->rewind();
          while ($it->valid()) {
              if (!$it->isDot() && $it->key() != $pth['folder']['base'] . 'backup.zip') {
                  $size = filesize($it->key());
                  if ($totalSize + $size > $maxsize) {
                      $archive->close();
                      $part++;
                      $archive->open(
                          "[color=#FF0000]../../Backup/Sicherung-[/color]{$date}_$part.zip",
                          ZipArchive::CREATE
                      );
                      $totalSize = 0;
                  }
                  $archive->addFile($it->key(), $it->getSubPathName());
                  $totalSize += $size;
              }
              $it->next();
          }
      
          $archive->close();
      }
      
      if (XH_ADM && isset($_GET['backup'])) {
          fullBackup();
      }
Die Zeile mit dem Zielverzeichnis muss durch den Admin jeweils an die Struktur auf dem Server angepasst werden.

Der Aufruf erfolgt (nach Anmeldung ) mit "http://diedomain.tld/?backup"

isometric
Posts: 158
Joined: Thu Jun 12, 2014 8:32 am

Re: Informationen über das Plugin Referenz.

Post by isometric » Thu Dec 22, 2016 10:21 am

Was macht das Script genau?

Sieht aus, als wenn irgendwo eine ZIP-Datei als Backup erstellt wird ...
in diesem Sinne isometric

Der Zwerch
Posts: 608
Joined: Sat Jul 28, 2012 11:38 am
Location: Perle der Grafschaft > 127.0.0.1

Re: Informationen über das Plugin Referenz.

Post by Der Zwerch » Thu Dec 22, 2016 10:29 am

Hallo,
isometric wrote:...eine ZIP-Datei als Backup erstellt wird ...
in der tat. man kann, wenn man eingelogt ist, die bisherige Homepage als gepacktes Archiv in ein anderes Verzeichnis kopieren.
Wenn man also größere Änderungen online vornimmt, hat man vorher ein Backup.
Alt.kann man vom PC aus (oder bei mir vom PI3) mittels Script alle Backups downloaden. Ein Upload vom Server auf Dein NAS/PC ist nicht zu empfehlen, da Du dann ja die Zugangsdaten hinterlegen müsstest.

Grüße,
Frank

deeseecee
Posts: 53
Joined: Tue Jan 22, 2013 1:22 pm
Location: Bochum, Germany

Re: Informationen über das Plugin Referenz.

Post by deeseecee » Thu Dec 22, 2016 12:55 pm

Das sieht nach einer sinnvollen Erweiterung aus und sollte m.E. Standardbestandteil von CMSimple_XH werden. An einigen von mir betreuten Seiten werden neben den Inhalten auch regelmäßig Inhalte und Dateien für die Memberpages und für Advancedform erstellt und/oder verändert, zudem werden neue Mitglieder angelegt, gelöscht, oder die Passwörter werden von den Mitgliedern geändert usw.. Da die Einstellungen der Plugins nicht mit den 'normalen' Inhalten gespeichert werden (von den normalen Inhalten werden ja per se Backups gemacht), macht m.E. ein 'Full-Backup' in solchen Fällen durchaus Sinn. Ich werd's auf jeden Fall mal bei mir ausprobieren. Vielen Dank für die Weitergabe (hoffentlich ist das auch für Christoph OK).

Viele Grüße,
Dirk

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: Informationen über das Plugin Referenz.

Post by cmb » Thu Dec 22, 2016 1:31 pm

deeseecee wrote:Vielen Dank für die Weitergabe (hoffentlich ist das auch für Christoph OK).
Ja, das ist natürlich okay. :)

Wichtig: der Speicherort der Backups ist im Script hart kodiert ('../../../backup/') und muss nach Bedarf angepasst werden. Dabei ist darauf zu achten, dass die Backups in einem vor direktem HTTP(S)-Zugriff geschützten Verzeichnis abgelegt werden (bevorzugt oberhalb des Webroot, was aber nicht immer möglich ist). Ansonsten können sich andere die Daten aneignen, was zumindest teilweise sicher nicht wünschenswert ist (Passwörter etc.)

Ansonsten ist zu beachten, dass das Script u.U. zu lange braucht, und durch PHP abgebrochen wird. Und Dateien, die nicht lesbar sind (bzw. die nicht ausgeführt werden dürfen), dürften Probleme machen. Daher die Backups immer überprüfen. Und falls möglich besser Backups per FTP erstellen.
Christoph M. Becker – Plugins for CMSimple_XH

Der Zwerch
Posts: 608
Joined: Sat Jul 28, 2012 11:38 am
Location: Perle der Grafschaft > 127.0.0.1

Re: Informationen über das Plugin Referenz.

Post by Der Zwerch » Thu Dec 22, 2016 2:42 pm

Hallo,
prinzipiell wäre eine schöne Ergänzung für das CMS. Aber der haken ist halt:
  • Der Pfad kann (im Moment) nur manuell angepasst werden, nicht im Backend.
  • Dateinamen können ebenfalls nicht im Backend geändert werden.
  • Ab einer bestimmten Größe bricht das Script ab, ist serverabhängig.
Ich denke, dass es so zu mehr Problemen als Nutzen kommen wird.

Als manuelle Ergänzung durch den Admin ist es aber zu empfehlen.

Hartmut
Posts: 553
Joined: Sat Nov 05, 2011 6:13 pm
Location: Butzbach, Deutschland
Contact:

Re: Online Backup-Script

Post by Hartmut » Thu Dec 22, 2016 8:59 pm

Hallo,

das Backup Script halte ich für eine sinnvolle Bereicherung für CMSimple_XH und ich nehme es in die in die AddOn Referenzdokumentation auf wenn für euch OK ist.

Viele Grüße

Hartmut

Der Zwerch
Posts: 608
Joined: Sat Jul 28, 2012 11:38 am
Location: Perle der Grafschaft > 127.0.0.1

Re: Online Backup-Script

Post by Der Zwerch » Fri Dec 23, 2016 6:59 am

Hallo,
ich denke nicht, dass etwas dagegen spricht.
cmb wrote:Ja, das ist natürlich okay. :)
Grüße,
Frank

cmss
Posts: 244
Joined: Mon Jan 02, 2017 6:15 pm

Re: Online Backup-Script

Post by cmss » Tue Nov 21, 2017 10:29 pm

Ich habe die 2te 'function fullBackup()' an die userfuncs.php angehängt und bekomme (eingeloggt) unter xh1610 nur
WARNING: ZipArchive::close(): Failure to create temporary file: No such file or directory
/home/www/web724/html/upfad/cmsimple/userfuncs.php:183

183 $archive->close();

WARNING: ZipArchive::close(): Failure to create temporary file: No such file or directory
/home/www/web724/html/upfad/cmsimple/userfuncs.php:197

197 : $archive->close();

Ein Verzeichnis Backup unter der root anzulegen bewirkt nichts. (ich bin s.o. auch bei Strato)

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: Online Backup-Script

Post by cmb » Tue Nov 21, 2017 10:57 pm

cmss wrote:Ich habe die 2te 'function fullBackup()' an die userfuncs.php angehängt und bekomme (eingeloggt) unter xh1610 nur
WARNING: ZipArchive::close(): Failure to create temporary file: No such file or directory
/home/www/web724/html/upfad/cmsimple/userfuncs.php:183

183 $archive->close();

WARNING: ZipArchive::close(): Failure to create temporary file: No such file or directory
/home/www/web724/html/upfad/cmsimple/userfuncs.php:197

197 : $archive->close();

Ein Verzeichnis Backup unter der root anzulegen bewirkt nichts. (ich bin s.o. auch bei Strato)
Das Problem befindet jeweils etwas weiter oben, wo per $archive->open() die Dateinamen festgelegt werden. Die müsstest du anpassen. (Beim zweiten $archive->open() hat sich wohl ein [ color ] eingeschließen – das hat da sowieso nichts verloren.)
Christoph M. Becker – Plugins for CMSimple_XH

Post Reply