Große Dateien und Datenmengen zwischen zwei Servern übertragen

Wie überträgt man eine 40 GB große Datei von einem Server zum anderen? Per FTP-Download und erneutem Upload macht das jedenfalls keinen Spaß. Weitaus effektiver ist es da, das direkt von einem Server zum anderen zu übertragen, mit SCP oder FTP.

40 Gigabyte!!! Das ist eine ganze Menge, kann bei großen Projekten aber durchaus vorkommen, insbesondere wenn die Möglichkeit besteht, Dateien hochzuladen. Optimalerweise hat man diese Projekte vorher über die Konsole gezippt
Der Download wäre ja noch irgendwie zu managen - beim anschließenden Upload würde aber selbst der schnellste DSL-Zugang vermutlich an der meist obligatorischen 24h Zwangstrennung scheitern.

Okay, man könnte das ganze auf mehrere Dateien zippen, aber wirklich Spaß machen wird das in keinem Fall. Die einzig realisierbare Möglichkeit besteht hier darin, die Dateien direkt von Server zu Server zu übertragen. In normalen Rechenzentrum hängen die Webserver normalerweise mit mindestens 100MBit am Backbone. Das erlaubt die Übertragung in relativ kurzer Zeit.
In der Praxis habe ich meist so eine Übertragungsrate von ca 3MB/s - das entspricht dann 24 MBit netto, die man bei einem normalen Internetzugang niemals erreicht - geschweige denn im Upstream.

Übertragung per SCP


SCP bietet sich als verschlüsseltes Protokoll hier als erste Wahl an. Es ist bei direkter Übertragung zwischen zwei Servern nicht nur schnell sondern auch sicher.
Grundsätzlich bekomme ich als überzeugter Windows-User immer das nackte Grauen wenn es mal an die konsole geht. Aber letztlich ist es eigentlich recht einfach
Code: Alles auswählen
scp /pfad/dateiname benutzername@server-adresse:dateiname


Konkret an einem Beispiel:
Code: Alles auswählen
scp /var/www/backup.tar.gz web58@server.de:backup.tar.gz


Hier wird die Datei backup.tar.gz auf den Server server.de in das Wurzelverzeichnis des Benutzers web1 übertragen.

Okay, ich will ehrlich sein und nicht den großen Linux-Checker raushängen lassen, obwohl ich selber keinen Plan habe: Wie man Verzeichnisse auf dem Zielserver auswählt habe ich irgendwie noch nicht raus. Sobald ich ein Verzeichnis angebe meckert er immer rum, dass der angegebene Dateiname nicht existiert (logisch, will die Datei ja auch erst anlegen). Aber naja eine Datei zu kopieren ist nicht so der große Akt.

Übertragung per FTP


Falls möglich sollte man immer die verschlüsselte Übertragung per SCP benutzen. Wenn man ganze Webs kopiert, sind dabei mit an Sicherheit grenzender Wahrscheinlichkeit auch PHP-Dateien dabei, die Passwörter im Klartext enthalten.
Manchmal gibt es bei der Übertragung per SCP aber Probleme, weswegen sich hier das etwas schnellere - aber unverschlüsselte FTP-Protokoll anbietet.
Als erstes startet man den FTP-Dienst mit dem Befehl:
Code: Alles auswählen
ftp server.de

Für server.de muss natürlich die Adresse des FTP-Servers angegeben werden.
Man gelangt dann in die FTP-Konsole und es wird nach Benutzernamen und Passwort gefragt, das sollte in etwas so aussehen:
Code: Alles auswählen
Name (server.de:root): web58
331 Password required for web58
Password:


Nun ist die Verbindung aufgebaut. Hier kommt eine entsprechende Meldung und man landet in der FTP-Konsole:
Code: Alles auswählen
230 User web5 logged in
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>


Wichtig ist hier die letzte Meldung: "Using binary mode to transfer files" Ich weiß nicht, ob hier immer der binär-Modus gewählt ist. Aber man sollte das im Hinterkopf behalten. Mir ist nicht bekannt ob es hier keine automatische Erkennung zwischen binary und Text-Mode gibt, wie bei normalen FTP-Programmen.
Allein schon deswegen empfiehlt es sich, die zu übertragenen Dateien vorher zu zippen (siehe Tutorial zum Zippen unter Linux) und hier den binary Modus zu verwenden. Sollte dieser nicht voreingestellt sein. Erreicht man das in der FTP-Konsole mit der Eingabe von
Code: Alles auswählen
binary


Das Übertragen von Dateien selber ist dann wieder sehr einfach:
Code: Alles auswählen
put backup.tar.gz

Mit dem put-Befehl überträgt man die entsprechende Datei auf den anderen Server. Das wird dann mit einer entsprechenden Meldung bestätigt:
Code: Alles auswählen
local: backup.tar.gz remote: backup.tar.gz
200 PORT command successful
150 Opening BINARY mode data connection for backup.tar.gz
226 Transfer complete
39860230155 bytes sent in 4597.22 secs (8670.5 kB/s)


Mit exit kann man dann die FTP-Konsole verlassen.

Nicht wirklich komfortabel, weil der Bunti-Klicki-Faktor ziemlich weit unten angesiedelt sein dürfte, allerdings schnell und effektiv und optimal wenn es um Server-Umzüge geht.




loading




BBcode für diesen Artikel:


HTML-Code mit Link zu diesen Artikel:
Diese Seite zu Mister Wong hinzufügen   Delicious