GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Kopieren Sie große Dateien von einem Linux-Server auf einen anderen

Lösung 1:

Sneakernet Jemand?

Angenommen, dies ist eine einmalige Kopie, nehme ich nicht an, dass es möglich ist, die Datei einfach auf eine CD (oder ein anderes Medium) zu kopieren und sie über Nacht an das Ziel zu bringen, wo sie ist?

Das könnte tatsächlich Ihre schnellste Option sein, da eine Dateiübertragung dieser Größe über diese Verbindung möglicherweise nicht korrekt kopiert wird ... in diesem Fall müssen Sie von vorne beginnen.

rsync

Meine zweite Wahl/Versuch wäre rsync, da es fehlgeschlagene Übertragungen, Teilübertragungen usw. erkennt und dort weitermachen kann, wo es aufgehört hat.

rsync --progress file1 file2 [email protected]:/destination/directory

Das --progress-Flag gibt Ihnen ein Feedback, anstatt nur herumzusitzen und es Ihnen zu überlassen, sich selbst zu raten. :-)

Vuze (BitTorrent)

Die dritte Möglichkeit wäre wahrscheinlich, Vuze als Torrent-Server zu verwenden und dann Ihren entfernten Standort einen Standard-Bitorrent-Client zum Herunterladen zu verwenden. Ich kenne andere, die dies getan haben, aber weißt du... als sie alles zum Laufen gebracht hatten, etc... hätte ich die Daten über Nacht behalten können...

Hängt von Ihrer Situation ab, denke ich.

Viel Glück!

AKTUALISIERUNG:

Weißt du, ich habe ein bisschen mehr über dein Problem nachgedacht. Warum muss die Datei ein einziger riesiger Tarball sein? Tar ist durchaus in der Lage, große Dateien in kleinere aufzuteilen (z. B. um Medien zu überspannen). Warum also nicht diesen riesigen Tarball in besser handhabbare Teile aufteilen und die Teile dann stattdessen übertragen?

Lösung 2:

Ich habe das in der Vergangenheit mit einer 60-GB-tbz2-Datei gemacht. Ich habe das Skript nicht mehr, aber es sollte einfach sein, es umzuschreiben.

Teilen Sie zuerst Ihre Datei in Stücke von ~2 GB auf :

split --bytes=2000000000 your_file.tgz

Berechnen Sie für jedes Stück einen MD5-Hash (um die Integrität zu überprüfen) und speichern Sie ihn irgendwo, und beginnen Sie dann, die Stücke und ihre MD5 mit dem Tool Ihrer Wahl (me :netcat-tar-pipe in a screen Sitzung).

Überprüfen Sie nach einer Weile mit dem md5, ob Ihre Stücke in Ordnung sind, dann :

cat your_file* > your_remote_file.tgz

Wenn Sie auch ein MD5 der Originaldatei gemacht haben, überprüfen Sie es auch. Wenn es in Ordnung ist, können Sie Ihre Datei entpacken, alles sollte in Ordnung sein.

(Wenn ich die Zeit finde, werde ich das Skript umschreiben)

Lösung 3:

Normalerweise bin ich ein großer Befürworter von rsync, aber wenn ich zum ersten Mal eine einzelne Datei übertrage, scheint es nicht viel Sinn zu machen. Wenn Sie die Datei jedoch mit nur geringfügigen Unterschieden erneut übertragen, wäre rsync der klare Gewinner. Wenn Sie sich trotzdem dafür entscheiden, rsync zu verwenden, empfehle ich dringend, ein Ende in --daemon auszuführen -Modus, um den leistungsmindernden SSH-Tunnel zu eliminieren. Die Manpage beschreibt diesen Modus ziemlich ausführlich.

Meine Empfehlung? FTP oder HTTP mit Servern und Clients, die die Wiederaufnahme unterbrochener Downloads unterstützen. Beide Protokolle sind schnell und leichtgewichtig und vermeiden die SSH-Tunnelstrafe. Apache + wget würde schnell schreien.

Der Netcat-Pipe-Trick würde auch gut funktionieren. Tar ist nicht erforderlich, wenn eine einzelne große Datei übertragen wird. Und der Grund, warum es Sie nicht benachrichtigt, wenn es fertig ist, ist, weil Sie es nicht gesagt haben. Fügen Sie eine -q0 hinzu Flag auf der Serverseite und es verhält sich genau so, wie Sie es erwarten würden.

server$ nc -l -p 5000 > outfile.tgz

client$ nc -q0 server.example.com 5000 < infile.tgz

Der Nachteil des Netcat-Ansatzes ist, dass Sie nicht fortfahren können, wenn Ihre Übertragung 74 GB in...

stirbt

Lösung 4:

Geben Sie netcat (manchmal auch nc genannt) eine Chance. Das Folgende funktioniert in einem Verzeichnis, aber es sollte einfach genug sein, es zu optimieren, um nur eine Datei zu kopieren.

Auf dem Zielfeld:

netcat -l -p 2342 | tar -C /target/dir -xzf -

Auf der Quellbox:

tar czf * | netcat target_box 2342

Sie können versuchen, die Option „z“ in beiden tar-Befehlen zu entfernen, um die Geschwindigkeit etwas zu erhöhen, da die Datei bereits komprimiert ist.


Linux
  1. So kopieren Sie Dateiberechtigungen und Eigentumsrechte in eine andere Datei in Linux

  2. So kopieren oder klonen Sie Berechtigungen von einer Datei in eine andere unter Linux

  3. Wie kopiert man Einstellungen von einem Gerät auf ein anderes?

  4. Kopieren Sie die letzten N-Zeilen von einer Datei in eine andere?

  5. Wie finde ich Wörter aus einer Datei in einer anderen Datei?

Kopieren von Dateien unter Linux

Cp-Befehl in Linux (Dateien kopieren)

Kopieren Sie eine Datei in mehrere Verzeichnisse von der Befehlszeile unter Linux

Wie kopiert man eine Datei aus einem anderen Verzeichnis in das aktuelle?

Exaktes Kopieren von Dateien von NTFS auf ein anderes NTFS unter Linux

Warum kann rsync keine Dateien von /sys in Linux kopieren?