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

So kopieren Sie eine große Anzahl von Dateien schnell zwischen zwei Servern

Lösung 1:

Teer würde ich empfehlen. Wenn die Dateibäume bereits ähnlich sind, schneidet rsync sehr ab Gut. Da rsync jedoch mehrere Analysedurchläufe für jede Datei durchführt und dann die Änderungen kopiert, ist es für die ursprüngliche Kopie viel langsamer als tar. Dieser Befehl wird wahrscheinlich das tun, was Sie wollen. Es kopiert die Dateien zwischen den Computern und behält sowohl Berechtigungen als auch Benutzer-/Gruppeneigentumsrechte bei.

tar -c /path/to/dir | ssh remote_server 'tar -xvf - -C /absolute/path/to/remotedir'

Laut Mackintoshs Kommentar unten ist dies der Befehl, den Sie für rsync verwenden würden

rsync -avW -e ssh /path/to/dir/ remote_server:/path/to/remotedir

Lösung 2:

Externe Festplatte und Kurierzustellung am selben Tag.

Lösung 3:

Ich würde rsync verwenden.

Wenn Sie sie über HTTP mit verfügbaren Verzeichnislisten exportiert haben, können Sie auch wget und das Argument --mirror verwenden.

Sie sehen bereits, dass HTTP schneller als SCP ist, da SCP alles verschlüsselt (und somit einen Engpass für die CPU verursacht). HTTP und rsync werden sich schneller bewegen, weil sie nicht verschlüsseln.

Hier sind einige Dokumente zum Einrichten von rsync unter Ubuntu:https://help.ubuntu.com/community/rsync

Diese Dokumente sprechen über das Tunneln von rsync über SSH, aber wenn Sie nur Daten in einem privaten LAN verschieben, benötigen Sie kein SSH. (Ich nehme an, Sie befinden sich in einem privaten LAN. Wenn Sie 9-10 MB/s über das Internet erhalten, möchte ich wissen, welche Art von Verbindungen Sie haben!)

Hier sind einige andere sehr grundlegende Dokumente, die es Ihnen ermöglichen, einen relativ unsicheren rsync-Server einzurichten (ohne Abhängigkeit von SSH):http://transamrit.net/docs/rsync/

Lösung 4:

Verwenden Sie ohne viel Diskussion netcat, das Schweizer Taschenmesser des Netzwerks. Kein Protokoll-Overhead, Sie kopieren direkt in den Netzwerk-Socket.Beispiel

srv1$ tar cfv - *mp3 | nc -w1 remote.server.net 4321

srv2$ nc -l -p 4321 |tar xfv -

Lösung 5:

Wenn Sie mit vielen Dateien rsync verwenden, würde ich versuchen, Version 3 oder höher auf beiden Seiten zu bekommen . Der Grund dafür ist, dass eine niedrigere Version jede Datei aufzählt, bevor sie mit der Übertragung beginnt. Die neue Funktion heißt inkrementelle Rekursion .

Ein neuer inkrementeller Rekursionsalgorithmus wird jetzt verwendet, wenn rsync mit einer anderen 3.x-Version kommuniziert. Dadurch wird die Übertragung schneller gestartet (bevor alle Dateien gefunden wurden) und viel weniger Speicher benötigt. Siehe die Option --recursive in der Manpage für einige Einschränkungen.


Linux
  1. So übertragen Sie Dateien zwischen zwei Computern mit den Befehlen nc und pv

  2. Wie verwende ich den Rsync-Befehl unter Linux?

  3. Wie man Verzeichnisse rekursiv mit rsync kopiert und dabei bestimmte Dateien ausschließt

  4. Bidirektionale Echtzeit-Synchronisierung eines großen Dateibaums zwischen zwei entfernten Linux-Servern

  5. Wie teilt man Assets zwischen mehreren Webservern?

So übertragen Sie schnell große Dateien über das Netzwerk unter Linux und Unix

So verschieben Sie eine große Anzahl von Dateien in Linux

So kopieren Sie eine große Anzahl von Dateien unter Linux

So synchronisieren Sie Dateien automatisch zwischen zwei Linux-Servern

So kopieren Sie Dateien zwischen Host und Docker-Container

So verwenden Sie Rsync zum Kopieren/Synchronisieren von Dateien zwischen Servern