SSH-Befehl um die Dateien von Contao auf dem Webspace sichern
Mit diesem Befehl erstellst du eine gepackte Dateisicherung der Ordner und Dateien deines Contao-Projekts.
Wichtig: Du musst zusätzlich noch die Datenbank sichern (Befehl dafür weiter unten)!
Schauen wir uns mal den prinzipiellen Befehl an, den du noch an deine Situation anpassen musst:
tar -vczpf backup-demoprojekt-files_$(date +"%Y-%m-%d_%H-%M").tar.gz ./demoprojekt
Was bedeuten die einzelnen Bestandteile des Befehls?
tar
weist den Server an, dass er das bekannte Programm tape archiver nutzen soll um die nachfolgenden Aktionen
durchzuführen. Der Vorteil dieses Programms gegenüber zip ist, dass man hier auch die eingestellten Benutzerrechte für Ordner und Dateien mitsichern kann,
so dass diese beim Entpacken wieder korrekt eingestellt sind. Das klappt aber nur dann, wenn der Server auf dem die Datei wieder entpackt wird
UNIX-Dateirechte unterstützt.
-vczpf
ist eine Abfolge von Optionen, die im Rahmen des Befehls umgesetzt werden sollen. Aufgeschlüsselt lautet die Vorgabe:
v
= Aktiviere die ausführliche Anzeige der „Arbeiten“ die tar durchführt. Diese Option könnte man auch weglassen, aber ich sehe ganz gerne, wenn das Programm sein Werk tut. Wichtig ist, dass diese Option möglichst weit am Anfang der Optionen steht.c
= erstell ein Archivz
= komprimiere das Archiv zusätzlich mit gzip, damit es noch weniger Platz verbrauchtp
= Merke dir die Zugriffsrechte, damit du sie beim Extrahieren wieder ausgeben kannstf
= schreibe das Archiv in die nachfolgend genannte Datei. Diese Option muss zwingend als letzte Option in dieser Reihenfolge stehen, da es sonst Fehler gibt!
Wenn du dich noch mehr für die möglichen Optionen interessierst, findest du eine schöne Aufschlüsselung im Ubuntuusers-Wiki.
Die Anweisung backup-demoprojekt-files_$(date +"%Y-%m-%d_%H-%M").tar.gz
legt fest, wie die Sicherungsdatei benannt sein soll.
Den Begriff demoprojekt
ersetzt du mit dem Namen deines Projekts (ohne Umlaute/Sonderzeichen). So ist sichergestellt, dass du bei deinen
Sicherungsdateien später noch weißt, zu welchen Projekten sie gehören. Die nachfolgende Anweisung sorgt dafür, dass der Server eigenständig das aktuelle
Datum mit Uhrzeit in den Dateinamen schreibt. .tar.gz
ist die Dateiendung, die man bei einer tar-Datei mit zusätzlicher gzip-Komprimierung benötigt.
Die abschließende Anweisung ./demoprojekt
gibt ab, welcher Ordner (samt Unterordner und Dateien) gesichert werden soll (davon ausgehend, dass du in der
Struktur gerade eine Ebene über dem Projektordner bist). Ersetze den Begriff demoprojekt
mit dem echten Namen deines Projektordners.
Wenn du im Befehl den Ordernamen und den Projektordner korrekt eingegeben hast, kannst du den gesamten Befehl in der Konsole eingeben und bestätigen. Der Server erstellt nun die gewünschte Dateisicherung, was je nach Größe des Projekts sehr unterschiedlich lange dauert. Warte einfach ab, bis die Arbeiten abgeschlossen sind und die Konsole dir anzeigt, dass sie zur Eingabe neuer Befehle bereit ist.
Nun musst du noch die Datenbank sichern…
SSH-Befehl um die Datenbank von Contao auf dem Webspace sichern
Mit diesem Befehl erstellst du eine gepackte Dateisicherung der MySQL-Datenbank deines Contao-Projekts. Falls du die Zugangsdaten der Datenbank nicht zur
Hand hast, findest du sie im Contao-Projekt an dieser Stelle /app/config/parameters.yml
. Die parameters.yml
kannst du mit
einem gängigen Editor öffnen und findest darin die für Contao hinterlegten Datenbank-Zugangsdaten.
Wichtig: Du musst
zusätzlich noch die Daten vom Webspace sichern, falls du das noch nicht getan hast (Befehl dafür siehe oben)!
Der Befehl zur Sicherung der Datenbank ist strukturell wie folgt aufgebaut und muss noch an deine Situation angepasst werden:
mysqldump -h DBHOST -u DBUSER -p DBNAME -r backup-demoprojekt-database_$(date +"%Y-%m-%d_%H-%M").sql
Was bedeuten die einzelnen Bestandteile des Befehls?
mysqldump
weist den Server an, dass er das üblicherweise verfügbare Programm mysqldump nutzen soll um ein sogenanntes logisches Backup der Datenbank
zu erstellen.
Wichtig: Damit die Datenbank konsistent ist, sperrt der Befehl mysqldump die Datenbank für den Zeitpunkt der Sicherungserstellung.
In dieser Zeit sind also keine Zugriffe auf die Datenbank möglich. Bei einer sehr großen Datenbank und der damit einhergehenden längeren Sperrzeit für die
Erstellung der Sicherung, ist es daher ratsam, die Datensicherung zu einem Zeitpunkt zu machen, an dem gerade möglichst keine oder nur wenige
Nutzer*innenzugriffe auf die Website erwartet werden.
-h DBHOST
gibt an, an welcher Stelle der Server nach der Datenbank suchen soll. ErsetzeDBHOST
mit der Adresse des Datenbankservers. Bei vielen Servern ist das localhost, also der Datenbankserver befindet sich auf dem selben Server. Dann würde der Abschnitt-h localhost
heißen. Bei anderen Anbietern ist der Datenbankserver separat untergebracht, so dass du hier eine Adresse wie z.B. beispiel.deinanbieter.de oder eine IP-Adresse eingibst und der Abschnitt nach diesem Beispiel-h beispiel.deinanbieter.de
heißen würde.-u DBUSER
gibt an, wie der Datenbank-Nutzer heißt. ErsetzeDBUSER
mit dem entspchenden Nutzernamen aus den Zugangsdaten für die Datenbank. Wenn der Nutzer z.B.demoprojekt1
heißt, änderst du den Abschnitt in-u demoprojekt1
ab.-p
steht für das Passwort. Du gibst das Passwort aber nicht hier sichtbar an, sondern teilst dem Server mit, dass er dich aus Sicherheitsgründen später separat danach fragen soll.DBNAME
gibt an, welche Datenbank du wählen möchtest. Ersetze DBNAME daher mit dem Namen der Datenbank aus den Zugangsdaten. Wenn die Datenbank z.B. demoprojektdb heißt, änderst du den Abschnitt des Befehls indemoprojektdb
ab.
Die Anweisung backup-demoprojekt-database_$(date +"%Y-%m-%d_%H-%M").sql
legt fest, wie die Sicherungsdatei der Datenbank benannt
sein soll. Den Begriff demoprojekt
ersetzt du mit dem Namen deines Projekts (ohne Umlaute/Sonderzeichen). So ist sichergestellt, dass du bei deinen
Sicherungsdateien später noch weißt, zu welchen Projekten sie gehören. Die nachfolgende Anweisung sorgt dafür, dass der Server eigenständig das aktuelle
Datum mit Uhrzeit in den Dateinamen schreibt. .sql
ist die Dateiendung, die man bei SQL-Datenbank benötigt.
Wenn du den gesamten Befehl nun in die Konsole eingibst und bestätigst, fragt die Konsole dich noch nach dem Passwort („Enter password“). Tippe das Passwort ein und bestätige mit der Enter-Taste. Das Passwort wird dir dabei aus Sicherheitsgründen nicht angezeigt, ebenso wenig wie die Länge des Passworts.
Sobald du das korrekte Passwort eingegeben und bestätigt hast, fängt der Server mit der Datenbanksicherung an. Wie lange das dauert, hängt von der Größe der Datenbank ab. Bei kleinen Webprojekten ist das oft binnen weniger Sekunden erledigt, bei großen Projekten kann es schon mal eine ganze Weile dauern. Deshalb sollten insbesondere Datensicherungen von großen Datenbanken zu Zeiten stattfinden, an denen möglichst keine Nutzer auf der Website sind, da die Datenbank während der Sicherung gesperrt ist.
Wenn du beide Sicherungen gemacht hast, kannst du sie dir wie gewohnt z.B. per FTP vom Server herunterladen.
SSH-Befehl um die Datensicherung von Contao auf dem Webspace zu entpacken
Ich geh davon aus, dass du die Datensicherung wie oben beschrieben gemacht hast.
Lade die Datei auf den Webspace auf dem du sie installieren möchtest.
Beachte bitte, dass du sie möglichst auf eine Ebene lädst, die nicht von außerhalb erreichbar ist, da sonst Unbefugte Zugriff auf die Datei erhalten könnten.
Der Befehl zum Entpacken der Datensicherung ist wie folgt aufgebaut:
tar -xzf ./dateiname.tar.gz -C ./
Was bedeuten die einzelnen Bestandteile des Befehls?
Ich geh jetzt nicht mehr auf alle Details ein, da es auf derselben Logik aufbaut, die schon beim Packen der Dateisicherung relevant war.
Die Optionen -xzf
bedeuten:
x
= Die Daten sollen aus der Datensicherung extrahiert werden,z
= Da die Datensicherung per GZIP komprimiert wurde, muss sie jetzt wieder per GZIP zusätzlich dekomprimiert werden.f
= Die Daten sollen aus der angegebenen Datensicherungsdatei herausgelesen werden. Diese Option muss als letzte benannt sein, damit es keinen Fehler gibt.
Die Angabe ./dateiname.tar.gz
gibt an, wo die Datei – ausgehend von deinem aktuellen Standpunkt am Server – liegt und wie sie heißt. Im Beispiel
liegt sie also in dem Verzeichnis in dem du gerade bist (./
) und heißt dateiname.tar.gz
-C ./
bedeutet, dass der tar archiever beim Entpacken der Datei in das nachfolgend angegebene Dateiverzeichnis wechseln und die Datensicherung
dort entpacken soll. Im konkreten Beispiel würde die Datensicherung also in dem Verzeichnis entpackt werden, in dem wir uns gerade befinden.
Wichtig: Denk dran, die .tar.gz-Datei nach der erfolgreichen Entpackung wieder vom Server zu löschen.
SSH-Befehl um die Datenbank-Sicherung von Contao in die Datenbank einzuspielen
Ich geh davon aus, dass du die Datensicherung wie oben beschrieben gemacht hast.
Lade die Datenbank-Sicherung auf den Webspace auf dem du sie installieren
möchtest. Beachte bitte, dass du sie möglichst auf eine Ebene lädst, die nicht von außerhalb erreichbar ist, da sonst Unbefugte Zugriff auf die Datei erhalten könnten.
Der Befehl zum Entpacken der Datenbank-Sicherung ist wie folgt aufgebaut:
mysql -hDBHOST -uDBUSER -p DBNAME < dateiname.sql
Was bedeuten die einzelnen Bestandteile des Befehls?
Ich geh jetzt nicht mehr auf alle Details ein, da es auf derselben Logik aufbaut, die schon beim Erstellen der Datenbanksicherung relevant war.
Du benötigst auch
hier wieder die vollen Zugangsdaten für die Datenbank in die die Datenbanksicherung importiert werden soll.
- Ersetze
DBHOST
durch die Adresse der Datenbank,DBUSER
mit dem Datenbank-Nutzer undDBNAME
mit dem Datenbank-Namen. - Ersetze
dateiname.sql
mit der korrekten Bezeichnung der Datenbanksicherung. - Bei Bedarf kannst du auch hier Pfadangaben machen, wenn beispielsweise die .sql-Datei in einem anderen Verzeichnis liegt.
- Nach dem Absenden des Befehls wird auch hier wieder das Passwort der Datenbank abgefragt.
Wichtig: Denk dran, die .sql-Datei nach der erfolgreichen Entpackung wieder vom Server zu löschen.
Sonstige Empfehlungen zum Entpacken/Importieren von Contao-Datensicherungen
Ein paar Aktionen, die ich unmittelbar nach dem Entpacken und Importieren empfehle:
- Öffne in app/config/ die Datei parameters.yml und prüfe, ob die dort hinterlegten Datenbank-Zugangsdaten korrekt sind. Es wäre fatal, wenn du dich irrtümlich mit der falschen Datenbank verbindest und so z.B. ein Live-Projekt überschreibst.
- Schau nach, ob in system/config/ in der localconfig.php noch veraltete Angaben hinterlegt sind und korrigiere diese ggf.
- Lösche am besten unter var/cache den kompletten prod- und dev-Ordner, da es sonst passieren könnte, dass Contao daraus noch veraltete Daten nutzt (ebenfalls mit fatalen Ergebnissen).
- Öffne den Contao Manager, prüfe ob hier alle Pakete laufen.
- Öffne die Contao Install, ob hier alles ok ist.
- Log dich ins Contao-Backend ein, geh in die Systemwartung und lass hier nochmal alles ordentlich bereinigen (insbesondere Symlinks etc.).
Die Sache mit den Symlinks etc. kann man auch über die Konsole machen, aber das beschreibe ich ggf. mal in einem anderen Beitrag.