Einfachster Weg für die schnelle Übertragung von Dateien zwischen Linux-Servern?

16

Ich muss Dateien von einem CentOS-Server auf einen anderen übertragen. Überträgt etwa alle 10 Minuten 5 MB Dateien. Benötigen keine Verschlüsselung.

Was ist eine einfache Möglichkeit zum schnellen Übertragen von Dateien?

Gibt es etwas einfacher als FTP?

Vielen Dank!

Alex L
quelle
1
Ich glaube,
Evan Anderson
Da ich keine Verschlüsselung benötige, aber Geschwindigkeit benötige, bevorzuge ich rsync.
Alex L
Ich habe gerade erfahren, dass HTTP-Übertragungen nicht viel Overhead haben, also könnte ich das vielleicht einfach nutzen.
Alex L
Bearbeiten Sie keine Antwort in Ihrer Frage, sondern posten Sie sie stattdessen als Antwort. Rollback.
HopelessN00b
für "fast" siehe auch unix.stackexchange.com/questions/48399/…
Rogerdpack

Antworten:

25

rsync

Ich würde Rsync verwenden, bevor ich FTP oder TFTP verwendet habe.

Mehr Möglichkeiten und (meiner Erfahrung nach) zuverlässigere Übertragung.

KPWINC
quelle
1
Ich habe auch festgestellt, dass rsync normalerweise einen höheren Durchsatz erzielt als alles andere (scp, cifs, nfs)
Ophidian
Was ist mit http-Übertragungen?
Alex L
@Ophidian Meinst du rsync als Daemon verwenden? Ansonsten wie kann es schneller sein als scp, da beide ssh benutzen und es Verschlüsselung gibt.
Balki
@balki Ja, der rsync-Daemon. Es ist nicht besonders gesprächig, füttert die Daten von der Festplatte in die Leitung und erledigt die Anforderung mit so wenig Aufwand wie nötig (gilt beispielsweise für Unterschiede bei Textdateien).
Ophidian
21

tar over ssh ist in Ordnung, aber tar over TCP via Netcat ist so wenig Overhead wie möglich! Wenn dies einmalig ist, probieren Sie es aus:

Auf dem Empfänger:

nc -l -p 8989 | tar x

Auf dem Absender:

tar cf - /source-path | nc (receiving host ip address) 8989

Wenn Sie dies regelmäßig tun, würde ich wahrscheinlich rsync verwenden.

Evan Anderson
quelle
+1 für netcat, das schweizer
Taschenmesser
Dasselbe gilt für Sie, weil Sie Evan nicht gelesen haben. Hahaha! Es ist eigentlich keine einmalige Sache. Er sagte, er werde etwa alle 10 Minuten 5MB-Dateien übertragen. Vielleicht wäre das Senden per Morsecode eine gute Alternative? ;-) (Anmerkung: privater Witz zwischen Evan und mir)
KPWINC
8

Zwei Leute haben Teer über SSH erwähnt, aber nicht gesagt, wie es geht. Für die Aufzeichnung ist die grundlegende Prozedur auszuführen:

tar cf - files... | ssh remotehost 'cd /destination && tar xvf -'

Oder, wenn Sie Überweisungen vom empfangenden Ende aus starten möchten:

ssh remotehost 'cd /source && tar cf - files' | tar xvf -

Der Vorteil dieser Vorgehensweise gegenüber der Netcat-Lösung von Evan besteht darin, dass das Ganze von einem Computer aus gestartet werden kann. Sie müssen nicht zwei Netcat-Aufrufe koordinieren. Wenn dies für die automatische Ausführung erforderlich ist, können Sie einen SSH-Schlüssel einrichten, mit dem Sie Verbindungen ohne Passphrase herstellen und diesen Schlüssel für diese Verbindungen verwenden können.

ssh hat die Option -C, um den Datenstrom zu komprimieren, oder Sie können die eingebaute Komprimierungsfunktion von GNU tar verwenden:

tar zcf - files... | ssh remotehost 'cd /destination && tar xzvf -'

Rsync ist eine andere Option, aber die Hauptattraktion besteht darin, Dateien zu aktualisieren, die bereits auf der empfangenden Seite vorhanden sind. Ich habe festgestellt, dass es langsamer als scp oder tar / ssh ist, wenn es zum Übertragen von Dateien verwendet wird, die am anderen Ende noch nicht vorhanden sind.

Kenster
quelle
1
+1 Was, du meinst, nicht jeder weiß intuitiv, wie man über ssh tariert? Seltsam. :)
Chaos
tar an sich ist nicht zuverlässig - es gibt keine Integritätsprüfung, aber mit SSH (TLS) erhalten Sie Integrität, da TLS im Flug Änderungen an Daten erkennen kann. Rsync ist eine bessere Wahl und Rsync verbessert die Integritätsprüfung ohne Verschlüsselung. Die vom OP angegebene Verschlüsselung war nicht erforderlich.
Kilo
Welche Integritätsprüfung benötigt tar? Die TCP- und SSH-Schichten sorgen für einen zuverlässigen Datentransport. Wenn Sie behaupten, dass tar selbst Fehler aufweisen kann, müssen Sie rsync auf dieselbe Weise behandeln. Ich habe tatsächlich Rsync-Übertragungen aufgrund von Protokollproblemen blockieren lassen. Ich kann mich nicht erinnern, dass eine Teer / Unteer-Pipeline das jemals getan hat.
Kenster
6

Ich würde scpoder tarüber sshehrlich. Die Verschlüsselung verlangsamt die Arbeit, aber die einfache Einrichtung und Verwendung, die Zuverlässigkeit und (subjektiv natürlich) die Vertrautheit machen mich bereit, den Treffer zu akzeptieren, es sei denn, ich brauche wirklich diese Geschwindigkeit.

Sie können die ssh-Übertragung beschleunigen, indem Sie angeben, dass eine schnellere Verschlüsselung als die Standardverschlüsselung verwendet werden soll. Die Standardeinstellung ist normalerweise 3desund Sie können dies normalerweise tun -c des, so dass dies offensichtlich schneller ist und auch -c blowfishso schnell dargestellt wird, obwohl ich es nicht genau getestet habe.

(In den Tagen von SSHv1 konnte man das oft tun -c none, aber ich glaube, jemand hat entschieden, dass es sich um einen schlechten Juju handelt.)

Chaos
quelle
4

Wenn Sie scp / ssh durchlaufen müssen, zeigen meine Experimente, dass die schnellste Verschlüsselung, die derzeit standardmäßig aktiviert ist, RC4 ist. Sie geben die Verschlüsselung über ' -c arcfour ' in Ihrem ssh / scp-Befehl an:

für Erstkopie:

  • scp -c arcfour -r foo/ desthost:/destdir

für Updates:

  • rsync -e 'ssh -c arcfour' -r foo/ desthost:/destdir
Allaryin
quelle
3

Rsync ist ein guter Weg, denn wenn Sie feststellen, dass Sie dieselben Dateien mehr als einmal übertragen, wird die Kopie beschleunigt, wie in diesem Zitat auf der Manpage gezeigt.

   rsync is a program that behaves in much the same way that rcp does, but
   has many more options and uses  the  rsync  remote-update  protocol  to
   greatly  speed  up  file  transfers  when the destination file is being
   updated.
   The rsync remote-update protocol allows rsync to transfer just the dif-
   ferences between two sets of files across the network connection, using
   an efficient  checksum-search  algorithm  described  in  the  technical
   report that accompanies this package.
thepocketwade
quelle
2

FTP ist ziemlich einfach, aber eine noch einfachere Möglichkeit besteht darin, eine NFS-Freigabe auf einem Computer zu erstellen und auf dem anderen zu mounten. Das Kopieren der Dateien besteht dann darin, einen CP von einem Verzeichnis in ein anderes zu kopieren.

Swoogan
quelle
je nach anforderung. Ich würde NFS zum Beispiel nicht im Internet verwenden.
Kyle Hodgson
1
Guter Punkt. In diesem Fall würde ich rsync empfehlen, da es fortgesetzt werden kann, wenn es unterbrochen wird. Auch, weil es nur das Delta zwischen Quelle und Ziel überträgt.
Swoogan
Die Frage war sehr allgemein, ich mag die von Swoogan gepostete Soulution, besonders der erwähnte Autor, der die einfachste Lösung benötigt und keine Verschlüsselung benötigt
IntegratorIT
2

Wenn Sie Geschwindigkeit wollen, können Sie Netcat und Tar verwenden. Es ist schneller als ssh, rsync oder scp in einem lokalen Netzwerk, in dem die Verschlüsselung keine Rolle spielt. Google "netcat tar".

Zielserver

nc -l -p 7878 | tar -C /target/dir -xzf -

SourceServer

tar -cz /source/dir | nc DestinationServer 7878

Dies setzt natürlich voraus, dass netcat tatsächlich installiert ist. Google "netcat tar" für weitere Informationen.

robertmoggach
quelle
1

Ich glaube, dass Sie Ihr Problem bereits gelöst haben, aber falls Ihr ssh auf einem anderen Port (nicht auf Standard-Port 22) funktioniert, können Sie dies verwenden

rsync -avz --rsh = 'ssh -pXXXXX' / local / dir / [email protected]: / remote / dir

Hinweis: - Ersetzen Sie XXXXX durch Ihre Portnummer. - Ersetzen Sie 192.16.1.2 durch die korrekte IP-Adresse des Remote-Servers

Mangia
quelle