Ich habe eine große Datenmenge (mehrere GB) auf einem Remote-Laufwerk, das transparent über NFS bereitgestellt wird. Ich möchte diese Dateien in ein Unterverzeichnis kopieren, in dem sie sich bereits befinden, damit alles auf derselben physischen Festplatte bleibt. Aus diesem Grund möchte ich einen unnötigen Roundtrip über das Netzwerk verhindern.
Es scheint, dass cp files* subdir
dies die naive Sache macht und alle Daten in den Speicher liest und sie dann zurückschreibt. Ist das wahr? Gibt es einen speziellen Befehl, der das eigentliche Kopieren vollständig auf dem Server ausführt, mit dem die Festplatte physisch verbunden ist?
cp
) oder verschieben (wie inmv
)? Wenn Sie die Dateien verschieben, verstehe ich nicht, warum es zu Roundtrips kommen sollte.Antworten:
Es scheint, dass cp files * subdir die naive Sache macht und alle Daten in den Speicher liest und sie dann zurückschreibt. Ist das wahr?
Ja.
Gibt es einen speziellen Befehl, der das eigentliche Kopieren vollständig auf dem Server ausführt, mit dem die Festplatte physisch verbunden ist?
Nein, es sei denn, Sie können sich mit ssh am Remote-Computer anmelden und dort kopieren.
BEARBEITEN Es wird noch daran gearbeitet, der NFS-Protokollversion 4.2 eine "serverseitige Kopie" hinzuzufügen (aktuell ist 4.1). Siehe z . B. http://www.usenix.org/events/fast11/posters_files/Lentini.pdf . Beachten Sie, dass für die Verwendung dieser Funktion a) NFS-Clients und -Server erforderlich sind, die sie unterstützen, b) ein neuer Systemaufruf für das Client-Betriebssystem (möglicherweise Reflink oder Copyfile ()?) C) Unterstützung für die Verwendung des neuen Systemaufrufs in den üblichen Dienstprogrammen (cp, rsync) , etc.). Ich vermute, es wird mindestens einige Jahre dauern, bis irgendetwas das Licht der Welt erblickt.
quelle