Linux Server kopieren – Source Code
Im letzten Teil habe ich allgemein darüber geschrieben wie man einen Linux Server beziehungsweise genau genommen einen LAMP Server umzieht. Zusätzlich habe ich auch noch gezeigt wie man die Datenbank (im Beispiel eine MySQL Datenbank) kopiert und übersiedelt. Neben der Datenbank hat eine Webapplikation natürlich auch noch Source Code und effektive Programmdaten wie zum Beispiel Bilder. Diese wollen wir nun auch kopieren.
Source Code und Dateien kopieren
Das Kopieren der Daten von einem Linux Rechner zu einem anderen beziehungsweise von einem Webspace zu einem anderen ist sehr einfach und es gibt auch mehrere Möglichkeiten das zu realisieren:
- Webinterface des Hosters
Jeder Webspace eines Shared oder Managed Servers wird durch ein Webinterface angeboten, damit die Benutzer dort möglichst alle Einstellungen selber treffen können. Manche Webinterfaces bieten dabei auch eine Kopierfunktion an in der man lediglich einen FTP Zugang eingeben muss und einen Zielpfad am neuen Webspace definiert. Alles weitere wird komplett automatisch von dem Hoster übernommen. Sehr praktisch für viele Benutzer, leider aber nicht immer verfügbar. Wie genau kopiert wird und wie lange das dauert wird aber in den seltensten Fällen angezeigt. - Datei für Datei
In der Praxis üblich ist das Kopieren des Webspace Datei für Datei. Unter Linux wird das Kommandozeilen-Programm scp (Secure Copy) angeboten. Dieses funktioniert wie das Linux Benutzern bekannte cp, nur können dabei Quell und Zielverzeichnis auf unterschiedlichen Rechnern liegen. Über SSH Zugangsdaten greift scp dann auf ein fremdes Dateisystem zu. Das ist meine Lieblingsoption. Die Dauer des Kopiervorgangs ist von vornherein nicht bekannt und abhängig davon wie viele Dateien kopiert werden müssen. Es zeigt aber zumindest grafisch an welche Datei gerade kopiert wird und wie lange dieser Kopiervorgang dauert. - Komprimiertes Archiv
Manchmal ist es nötig aus Zeitgründen den Kopiervorgang zu beschleunigen. Wenn am Webspace genug Platz vorhanden ist, dann kann man sich vorab ein komprimiertes Archiv aller zu kopierenden Dateien erstellen. Dieses kann man als ganzes per scp kopieren und am neuen Webspace entpacken. Der Vorteil ist, dass weniger Daten kopiert werden müssen (beziehungsweise die Anzahl zu übertragender Bytes geringer ist) und diese eine Datei eine relativ genaue Schätzung der Kopierdauer zulässt.
Dateien per SCP kopieren
Der Linux Befehl scp ist einer meiner Lieblingskommandos. Damit kann man sehr schnell und einfach ganze Server kopieren. Das ist immer dann notwendig, wenn ein Kunde auf einen neuen Server umziehen möchte. Da das mindestens einmal im Monat vorkommt ist ein Grundwissen dazu für einen Webprogrammierer oder Administrator Pflicht.
scp kopiert Dateien in einem Batch Betrieb, d.h. nacheinander und das gegebenenfalls auch rekursiv über ganze Verzeichnisbäume. Es erzeugt eine gut lesbare Ausgabe und läuft auch sicher über Nacht ohne Probleme und ohne Benutzereingaben. Mit dem folgenden Kommando kann man beispielsweise eine Webapplikation wie WordPress auf einen neuen Webserver kopieren. In diesem Fall bin ich bereits am neuen Server über SSH eingeloggt und befinde mich bereits im Zielverzeichnis:
scp -r benutzername@alterwebspace.com:/der/pfad/zu/wordpress .
Bei diesem Beispiel muss man „benutzername“ mit dem SSH Login des alten Servers austauschen, „alterwebspace.com“ mit der IP Adresse des Servers oder der Domain und den Pfad nach dem Doppelpunkt anpassen. Wir kopieren das komplette Verzeichnis und alle Unterordner rekursiv, also mit dem Parameter -r. Ziel ist das aktuelle Ordner, deshalb steht dort der Punkt. Bei der Ausführung des Kommandos wird man noch nach dem Passwort des Benutzers gefragt.
SCP Port angeben
Viele Hoster erlauben SSH Logins nur über einen eigenen Port. Das scp Kommando verwendet des Standardport 22. Falls man also den Port zusätzlich angeben muss, dann funktioniert das mit dem Parameter -P:
scp -P 26 -r benutzername@alterwebspace.com:/der/pfad/zu/wordpress .
Warum -P und nicht -p? Das ist leicht erklärt. Der Parameter -p wird anderweitig genutzt. Falls man -p angibt, dann werden zusätzlich zu den Dateien auch deren Zugriffsrechte und Zeitstempel übertragen. Das ist aber bei vielen Hostern problematisch und davon ist abzuraten.
Warum ist das so einfach?
Daten sind atomar, d.h. eine Bilddatei ist immer die selbe, egal wo sie liegt. Solange die Datei nicht beschädigt ist und teile Fehlen wird das Bild auf jedem System gleich dargestellt. Bei Source Code ist das ähnlich. Die einzelnen Dateien sind für sich auch immer überall lesbar, das einzige was bei Source Code ebenso wichtig ist ist die Verzeichnishierarchie. Bleibt diese ebenfalls gleich und es wird im Code nirgend wo ein absoluter Pfad verwendet den es am neuen Server nicht mehr gibt, dann wird der Code auch weiterhin funktionieren.
Fazit
Dateien kann man mit Linux relativ einfach und ohne großen Aufwand kopieren. Das Arbeiten auf der Kommandozeile ist aber für viele Benutzer unzumutbar. Deshalb bieten viele Hoster automatisierte Tools an die ganze Webspaces 1:1 kopieren. Einige wenige bieten sogar Tools an, die bestimmte Webapplikationen wie WordPress, Joomla oder ähnliches 1:1 kopieren und die relevanten Einstellungen zu Datenbank automatisch ändern. Generell ist das Übersiedeln von Daten und Applikationen von Server zu Server relativ einfach und mit wenig Aufwand durchführbar.
Im nächsten Teil geht es nun noch um Einstellungen und dem Vorteil von virtuellen Maschinen beziehungsweise virtuellen Servern.