Manual:MediaWiki sichern/Lanthanis backup CMD

From mediawiki.org
This page is a translated version of the page Manual:Backing up a wiki/Lanthanis backup CMD and the translation is 100% complete.

Wie es funktioniert

Dieser Batch-Code exportiert alle Seiten des Wikis im Rahmen der angegebenen Namensräume als eine XML-Sicherungsdatei. Zusätzlich wird in diesem Sicherungsskript die Datenbanktabellen LDAP Domains und die Benutzer der MediaWiki Datenbank gesichert, wie auch alle in der fileList angegebenen Dateien und Ordner.

Automatisch werden alle alten Sicherungsdateien, bei der Ausführung dieses Skriptes, gelöscht.

Es überprüft, ob alle notwendigen ausführbaren Dateien erreichbar und verfügbar sind. Des Weiteren sichert es (in diesem Beispiel nur die LDAP Domänen und die Benutzer Datenbanktabellen) die MediaWiki Datenbank und sichert den Inhalt des Wikis als XML Datei.

Die Namensräume der zu sichernden Seiten des Wikis können in Zeile 54 angegeben werden.--filter=namespace:0,2,4,6,8,10,12,14

Anschließend wird die Sequenznummer hochgezählt und alle in der fileList spezifizierten Dateien und Ordner mit 7-Zip komprimiert und im angegebenen Pfad unter den angegebenen Dateinamen inkl. Sequenznummer gespeichert.

Weitere zu sichernde Dateien und Ordner können der fileList als absolute Pfade hinzugefügt werden.

Existieren mehr als die angegebene maximale Anzahl der Backups, werden die alten Sicherungsdateien (ZIP-Dateien) gelöscht.

Um die zu komprimierenden Dateien zu aggregieren, ist ein Arbeitsverzeichnis empfehlenswert. pathWORK

Da die eigentlichen Seiten (Inhalt) als XML Datei gesichert werden, ist es nicht notwendig diese über die Datenbank zu sichern.

Um jedoch bspw. die Benutzerprofile bzw. Accounts zu speichern ist die Sicherung der jeweiligen Datenbanktabellen empfohlen - dafür ist die Zeile 48 anzupassen.

Diese Batch benötigt administrative Rechte um ihre Aufgabe zu erfüllen!

Parameter / Variablen

Parameter / Variablen Beschreibung
maxBackups Maximale gleichzeitige Anzahl von Backups
backupFileName Name der Sicherungsdatei
pathPHP Pfad zur PHP.exe
pathZ7 Pfad zur 7-Zip.exe
pathMYSQLDUMP Pfad zur mysqldump.exe
pathWIKIROOT Installationsverzeichnis des Wikis
pathBACKUP Pfad zum Sicherungsordner, in denen die Sicherungen abgelegt werden sollen
pathDUMP SQL Sicherungsdatei des Wikis
pathWORK Arbeitsverzeichnis
fileList Liste in der alle zu sichernden Dateien und Ordner angegeben werden
dbUSER Benutzername des Datenbankbenutzers, mit allen zur Sicherung notwendigen Berechtigungen
dbPASSWORD Passwort des angegebenen Datenbankbenutzers
databaseName Der Name der Wiki-Datenbank.

Code

@echo off
CLS
:: VARIABLES
SET /A maxBackups=4
SET backupFileName=WIKIBACKUP
SET pathPHP="C:\Program Files\PHP\v7.1\php.exe"
SET pathZ7="C:\Program Files\7-Zip\7z.exe"
SET pathMYSQLDUMP="C:\Program Files\MySQL\Server 5.7\bin\mysqldump.exe"
SET pathWIKIROOT=C:\inetpub\wwwroot\wiki
SET pathBACKUP=<PATH TO BACKUP DIRECTORY>
SET pathDUMP="%pathWIKIROOT%\maintenance\dumpBackup.php"
SET pathWORK=%pathBACKUP%\WORK
SET fileList=%pathBACKUP%\CMDs\fileList.txt
SET dbUSER=<YOUR DB USER>
SET dbPASSWORD=<YOUR DB USERS PASSWORD>
SET databaseName=<YOUR WIKI DATABASE NAME>
SETLOCAL enabledelayedexpansion

:: CHECK PHP
IF NOT EXIST %pathPHP% (
  ECHO PHP can't be located at %pathPHP%
  goto :END
)

:: CHECK DUMP PATH
IF NOT EXIST %pathDUMP% (
  ECHO [%date% - %time:~0,8%] - %pathDUMP% file does not exist
  GOTO :END
)

:: CHECK WORK PATH
IF NOT EXIST %pathWORK% (
  ECHO [%date% - %time:~0,8%] - %pathWORK% path does not exist
  GOTO :END
)

:: CHECK 7-zip
IF NOT EXIST %pathZ7% (
  ECHO [%date% - %time:~0,8%] - 7-zip can't be located at %pathZ7%
  GOTO :END
)

:: CHECK mysqldump
IF not exist %pathMYSQLDUMP% (
  ECHO [%date% - %time:~0,8%] - mysqldump can't be located at %pathMYSQLDUMP%
  GOTO :END
)

%pathMYSQLDUMP% --verbose --quick --opt -C -e -u %dbUSER% -p %dbPASSWORD% %databaseName% ldap_domains user > "%pathWORK%\LDAPandUSER_WIKI.sql"
IF %errorlevel% neq 0 GOTO :END
ECHO.

:: CREATING XML DUMP FILE (WIKI)
ECHO [%date% - %time:~0,8%] - Creating XML Dump file...
%pathPHP% -d error_reporting=E_ERROR %pathDUMP% --current --filter=namespace:0,2,4,6,8,10,12,14 > "%pathWORK%\currentBackUp.xml"
IF %errorlevel% neq 0 GOTO :END
ECHO [%date% - %time:~0,8%] - XML Dump file done! [%pathWORK%\currentBackUp.xml]

:: ADD LAST SEQUENCE NUMBER TO ZIP
SET /A lastSequenceNumber=0
FOR /F "tokens=2 delims=-." %%A IN ('DIR /B "%pathBACKUP%\%backupFileName%-*.zip"') DO IF %%A gtr !lastSequenceNumber! SET /A lastSequenceNumber=%%A
SET /A lastSequenceNumber=%lastSequenceNumber%+1

:: COMPRESS BACKUP (ZIP)
ECHO [%date% - %time:~0,8%] - Creating zip file...
ECHO.
CALL %pathZ7% a -tzip "%pathBACKUP%\%backupFileName%-%lastSequenceNumber%.zip" @%fileList%
IF %errorlevel% neq 0 IF %errorlevel% neq 1 GOTO :END
ECHO.
ECHO [%date% - %time:~0,8%] - Zip file done! ["%pathBACKUP%\%backupFileName%-%lastSequenceNumber%.zip"]
ECHO.

:: DELETE OBSOLETE ZIP FILES

IF %maxBackups% gtr 0 (
  ECHO [%date% - %time:~0,8%] - Deleting obsolete files...
  SET /A max=%lastSequenceNumber%-%maxBackups%
  FOR /L %%B IN (!max!,-1,1) DO (
    IF EXIST "%pathBACKUP%\%backupFileName%-%%B.zip" (
      ECHO [%date% - %time:~0,8%] - Deleting %pathBACKUP%\%backupFileName%-%%B.zip.
      DEL /Q /F "%pathBACKUP%\%backupFileName%-%%B.zip"
    )
  )
  ECHO [%date% - %time:~0,8%] - Deletion done
)

GOTO :END

:END
ECHO.
ECHO [%date% - %time:~0,8%] - END BACKING UP WIKI

Sicherung weiterer Dateien und Ordner - fileList

Alle zu sichernden Ordner und Dateien welche der Sicherungsdatei (ZIP) hinzugefügt werden soll, können in dieser Liste fileList angegeben werden.

Die Liste muss mindestens den absoluten Pfad zur XML Sicherungsdatei enthalten. Sollten Datenbanktabellen gesichert werden, müssen diese Sicherungsdateien der Liste ebenfalls hinzugefügt werden.

7-Zip nutzt die Liste um alle dort angegebenen Dateien und Ordner zu aggregieren und in einer komprimierten Datei (ZIP) zu sichern. Folgend ein Beispiel, in dem die Datei, welche in der ersten Zeile angegeben wurde, eine Notwendigkeit darstellt.

"<Pfad zum Arbeitsverzeichnis>\currentBackUp.xml"
"<Pfad zum Arbeitsverzeichnis>\LDAPandUSER_WIKI.sql"
"<Pfad zum Installationsverzeichnis des MediaWikis>\LocalSettings.php"
"<Pfad zum Installationsverzeichnis des MediaWikis>\images"
"<Pfad zum Installationsverzeichnis des MediaWikis>\extensions"

Haftungsausschluss

Dieser Batch Code sollte nur für Windows Systeme verwendet werden. Der Code basiert auf Darizotas Windows backup script, wurde jedoch stark modifiziert.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Verwenden Sie diese Software bzw. diesen Code daher auf eigene Verantwortung und eigenes Risiko.