Eine Datensicherung einer Website wird meist dann schmerzlich vermisst, wenn man sie am meisten benötigt. Nämlich wenn die Website gar nicht mehr, oder nur noch fehlerhaft läuft. Dabei ist das Erstellen einer Datensicherung, wenn man die entsprechenden Voraussetzungen hat, mit weniger Handgriffen zu erledigen.
Diese Dokumentation beschreibt, wie man eine manuelle Datensicherung einer Website mitsamt einer dazu gehörenden MySQL-Datenbank anlegt. Dies ist vor allem vor einem Update eines Content-Management-Systems wie Joomla oder Typo3 oder einem Online-Shop wie Magento oder OXID sinnvoll.
Die Website läuft auf einem Linux-Server und es besteht ein SSH-Zugang zu diesem Server. Auf einem Windows-Server sind die beschriebenen Kommandozeilen-Tools evtl. nicht vorhanden, und ohne SSH-Zugang hat man keinen Zugriff auf diese Werkzeuge.
Als erstes sollte das komplette Projekt-Verzeichnis, in dem alle Dateien der Website liegen gesichert werden. Hierfür eignet sich hervorragend das Archivierungsprogramm tar, welches eigentlich auf jedem Linux-System verfügbar sein sollte. Der Vorteil bei diesem Vorgehen besteht darin, dass neben den eigentlichen Dateien und Verzeichnissen auch die dazu gehörenden Eigentümer und Berechtigungen gespeichert werden.
cd /srv/www/projektname/httpdocs tar -czf /home/benutzer/projektname.tar.gz *
Die Parameter für tar
haben folgende Bedeutung:
Die Sicherung der MySQL-Datenbank erfolgt mit dem Kommandozeilen-Tool mysqldump. Dabei wird für die angegebene Datenbank ein so genannter Datenbankabzug (Dump) erzeugt. Ein solcher Dump enthält die komplette Struktur der Datenbank mit allen Inhalten in Form von SQL-Anweisungen. Dadurch lässt sich eine Datenbank vollständig rekonstruieren. Um die Dateigröße gering zu halten, wird die Ausgabe des Dump nicht direkt in eine Datei geschrieben, sondern mittels gzip komprimiert.
mysqldump -ubenutzer -p --databases datenbankname | gzip -c >/home/benutzer/projektname.sql.gz
Nach dem Ausführen des Befehls erwartet mysqldump
die Eingabe des Kennwortes des angegeben Benutzers. Bei Bedarf kann der mysqldump
-Befehl um weitere Parameter ergänzt werden:
DROP DATABASE
-Anweisung vor jede CREATE DATABASE
-Anweisung ein.DROP TABLE
-Anweisung vor jede CREATE TABLE
-Anweisung ein. name
übergeben.Um bei einem Ausfall des Servers weiterhin Zugriff auf die Datensicherung zu haben ist es Sinnvoll, die Sicherungsdateien auf einem anderen Server zu übertragen. Diese Übertragung kann mittels scp erfolgen:
scp /home/benutzer/projektname.tar.gz benutzer@example.org:/home/benutzer/ scp /home/benutzer/projektname.sql.gz benutzer@example.org:/home/benutzer/
Außerdem ist es immer Sinnvoll die Rücksicherung einer Datensicherung zu prüfen, bevor man auf diese angewiesen ist. Dies kann ohne die aktuelle Website zu gefährden auf dem Backup-Server erfolgen.
Wenn man nun die Datensicherung wieder einspielen möchte, nutzen wir wieder das Kommandozeilen-Tool tar
um unsere Sicherungs-Datei in das Projekt-Verzeichnis zu entpacken. Dabei gehen wir wie folgt vor:
cd /srv/www/projektname/httpdocs rm -r * cp /home/benutzer/projektname.tar.gz ./ tar -xzf projektname.tar.gz rm projektname.tar.gz
Vorsicht! Alle zuvor im Projekt-Verzeichnis /srv/www/projektname/httpdocs
befindlichen Dateien werden dadurch unwiederbringlich gelöscht!
Den erzeugten Datenbank-Dump müssen wir nun in die MySQL-Datenbank zurück spielen. Dies geschieht mit folgendem Befehl:
zcat /home/benutzer/projektname.sql.gz | mysql -ubenutzer -p datenbankname
Vorsicht! Beim Einspielen des Datenbank-Dumps werden die Daten einer bereits angelegten Datenbank unwiederbringlich gelöscht!
Die in dieser Dokumentation beschriebene Datensicherung ersetzt keine regelmäßige Datensicherung, die für jedes Web-Projekt eingerichtet werden sollte.