Shopware 6 Backup über Konsole durchführen
Wir werden als Shopware Agentur häufig gefragt, welche Möglichkeiten es gibt, ein sauberes Shopware-Backup durchzuführen. Grundsätzlich gibt es da verschiedene Optionen. Du kannst zum Beispiel ein Plugin nutzen, das dir die Arbeit abnimmt, aber in der Regel ein wenig Geld kostet.
Wenn das für dich interessant ist, empfehle ich den Shopware Store zu besuchen und in der Suche einfach mal Backup einzugeben. Nicht vergessen die Ergebnisse nach Shopware 6 zu filtern.
Im heutigen Beispiel zeige ich dir, wie du das Backup manuell per SSH Terminal anfertigen kannst. Alles, was du dafür brauchst, ist, dass du bei deinem Hosting oder Server über einen SSH Zugang verfügst. Das sollte aber in der Regel selbst bei kleineren Paketen gegeben sein.
Zunächst benötigen wir einen SSH Client. Das kann beispielsweise Putty sein – ist ein kleines Tool, sehr einfach in der Handhabung und im Grunde für so gut wie jedes System kostenlos erhältlich. Man kann sich seit Windows 10 Open SSH integriert auch ganz normal die Windows Konsole nutzen. Das Vorgehen ist dabei immer gleich. Wir benötigen einen Host, Benutzernamen und Passwort. Die Portnummer ist in der Regel 22.
SEO-ready Premium-Theme vom Orangebytes
Flexibel anpassbar
SEO-ready - optimierter Quellcode
12 Monate Plugin-Support inklusive
30 Tage kostenlos testen - ohne Risiko
Verbindung per SSH Terminal
Der Befehl zum Verbinden kann sich von System zu System etwas unterscheiden. Tools wie Putty nehmen einem dabei auch teils durch die grafische Benutzeroberfläche ein bisschen der Arbeit ab.
Für das heutige Beispiel nutze ich die normale Windows 10 Eingabeaufforderung. Um eine Verbindung per SSH herzustellen, kannst du folgenden Befehl nutzen:
ssh -p 22 username@host.de
Im nächsten Schritt musst du noch dein Passwort eingeben und bist anschließend verbunden. Du befindest dich zunächst im Root-Verzeichnis deines SSH-Users.
Damit du das Backup machen kannst, solltest du natürlich Zugriff auf das Verzeichnis haben, in dem der Shop liegt. Damit alles klappt wie im Tutorial, navigierst du am besten in den übergeordneten Ordner deines Shops.
Wir sind nun bereit unser Backup durchzuführen. Für eine vollständige Sicherung benötigen wir zum einen die Dateien auf unserem Webserver und natürlich noch unsere Datenbank.
Datei-Backup per Zip-Befehl oder Rsync
Die einfachste Methode die Dateien zu sichern, ist ein Zip-Archiv zu stellen. Da die Dateien komprimiert werden, ist das auch sehr platzsparend.
Der Befehl zum erstellen eines Zip-Archivs lautet:
zip -r backup.zip quellordner
Durch das -r werden Dateien rekursiv zum Zip-Archiv hinzugefügt – sprich alle Daten und Unterordner in unserem Quellordner.
Eine andere Möglichkeit ist das Kopieren des Shop-Ordners mittels Rsync. Der Befehl dazu lautet:
rsync -av quellordner zielordner
Du musst natürlich nur eine der beiden gezeigten Optionen nutzen. Für unser heutiges Beispiel nutze ich den Zip-Befehl.
Datenbankbackup über Konsole erstellen
Kommen wir nun zur Datenbank-Backup. Für die Sicherung der Datenbank erstellen wir einen simplen MySQL-Dump. Das ist im Grunde nichts weiter als ein Export der Datenbank als Datei, die SQL-Befehle enthält. Beim Import werden die Befehle ausgeführt und unsere Datenbank so erzeugt.
Für den Dump benötigen wir die Datenbank-Zugangsdaten. Die findest du entweder bei eurem Hoster, oder auch in der .env-Datei in deinem Shopware-Verzeichnis.
In der .env-Datei findest du einen Connection-String, der etwa wie folgt aussieht:
DATABASE_URL=mysql://user:passwort@host:3306/dbname
Für den MySQL-Dump kannst du nun folgenden Befehl nutzen:
mysqldump -h host -u user -p dbname > dateiname.sql
Falls es bei deinem User zu Rechteproblemen, wegen Tablespaces kommt, kannst du folgenden Befehl verwenden:
mysqldump -h host -u user -p --no-tablespaces dbname > backup.sql
Anschließend musst du noch dein Passwort eingeben und der Dump wird erstellt.
Wenn alles geklappt hat, solltest du zwei neue Dateien haben: Eine Zip-Datei mit den Dateien deines Shops und eine SQL-Datei mit dem Datenbank-Dump.
Damit ist das Backup auch bereits abgeschlossen und du hast eine vollständige Sicherheitskopie deines Shopware 6 Shops erstellt.
Wenn du die Dateien herunterladen möchtet, kannst du das am einfachsten über FTP, indem du dich mit deinem Webserver verbindest. Die meisten Hoster haben auch einen WebFTP-Zugang, sodass du kein zusätzliches Programm installieren musst.
Shopware 6 Backup wiederherstellen per Konsole
Nun, da du ein Backup hast, kannst du deinen Shop bei Bedarf jederzeit wieder auf den Stand der Sicherung zurücksetzen. Und in Folgenden zeige ich dir wie das geht.
Wie du dir wahrscheinlich bereits denken kannst, musst du dazu den Datenbank-Dump wieder einspielen, unser Zip-Archiv entpacken und ein paar finale Änderungen vornehmen.
Datenbank-Dump einspielen
Für das Einspielen des Datenbank-Dumps benötigen wir eine leere Datenbank.
Du kannst entweder die vorhandene Shop-Datenbank säubern oder einfach eine neue Datenbank anlegen und die vorhandene im Anschluss einfach löschen. Ersteres kannst du beispielsweise über einen PHPMyAdmin oder Adminer Zugang über deinen Hoster machen. Eine neue Datenbank anzulegen ist die deutlich schnellere und einfachere Variante.
Beim Anlegen einer neuen Datenbank ändern sich in der Regel die Zugangsdaten, weshalb du im Anschluss noch den Connection-String in der .env-Datei anpassen musst.
Hast du nun eine leere Datenbank, kannst du den MySQL-Dump über folgenden Befehl einspielen:
mysql -h host -u user -p dbname < backup.sql
Als nächstes wird wieder das Passwort abgefragt und nach kurzer Wartezeit sollte der Dump erfolgreich eingespielt sein.
Dateien wiederherstellen
Nun, da unsere Datenbank bereit ist, müssen wir uns noch um die Dateien kümmern.
Wenn wir uns das Zip-Archiv einmal anschauen sehen wir, dass darin der Shop-Ordner enthalten ist.
Wir können also auf der Ebene über dem Shop-Ordner bleiben. Wir müssen nichts weiter tun, als den bestehenden Ordner zu löschen und das Archiv zu entpacken. Umbenennen geht natürlich auch und ihr könnt den Ordner dann später löschen.
Um den Shop-Ornder zu löschen kannst du folgenden Befehl nutzen:
rm -rf shopordner
Folgenden Befehl kannst du für das Umbennnen nutzen:
mv shopordner neuername
Nun kannst du das Zip-Archiv mit dem Backup mit folgendem Befehl entpacken:
unzip archiv.zip
Wenn der Vorgang abgeschlossen ist, sind wir mit dem Wiedereinspielen der Daten fertig und müssen nur noch die neuen Datenbank-Zugangsdaten hinterlegen.
.env-Datei anpassen bei geänderter Datenbank
Wie bereits erwähnt, musst du dazu die .env-Datei in Root-Verzeichnis des Shops anpassen.
Hier ist wieder die Zeile mit dem folgenden Ausdruck relevant:
DATABASE_URL=mysql://user:passwort@host:3306/dbname
Hier kannst du bei user, passwort, host und dbname deine neuen Zugangsdaten eintragen, wobei sich der Host in der Regel nicht geändert haben dürfte.
Im Anschluss solltest du noch deinen Cache leeren. Das kannst du per Konsole, wenn du in dein Shop-Verzeichnis navigierst und folgenden Befehl ausführst:
bin/console cache:clear
Und damit ist das Wiederherstellen des Backups abgeschlossen und wir sollten wieder auf dem Stand unserer Sicherung sein. Nun solltest du deinen Shop testen, um sicherzustellen, dass auch alles funktioniert hat und der Onlineshop sauber funktioniert.