Antworten:
Ein Wort: rsync
.
Beachten Sie, dass das zum Kopieren verwendete Tool nicht der Flaschenhals ist, wenn Sie sich auf einer langsamen Verbindung befinden oder der Server stark ausgelastet ist.
Dies sollte Ihnen die grundlegende Verwendung zum Kopieren zwischen Ihrem lokalen Computer und dem Remote-Server ermöglichen: http://oreilly.com/pub/h/38
So kopieren Sie vom lokalen Computer auf einen Remoteserver (Sie müssen natürlich die Pfade, den Benutzernamen und die Hostadresse ersetzen):
rsync -avz -e ssh /path/on/local/computer remoteuser@remotehost.somewhere.example.com:/path/on/server
-a
Archiv-v
wortreich-z
komprimieren-e ssh
"Verwenden Sie einen SSH-Tunnel"Um in die andere Richtung zu kopieren, wechseln Sie die Pfade (erstens von , zweitens bis ):
rsync -avz -e ssh remoteuser@remotehost.somewhere.example.com:/path/on/server /path/on/local/computer
Aber rsync ist auch nützlich, um Dinge auf demselben Server zu kopieren:
rsync -av /path-to/copy/from /path_to/copy/to
-z
zum Kopieren im LAN oder innerhalb eines Computers verwenden. Testen Sie mit und ohne -z
für das Kopieren über das Internet (der eine oder andere kann abhängig von vielen Dingen schneller sein).
-e ssh
ist jetzt die Standardeinstellung für Remote-Hosts, sodass die Option nicht explizit übergeben werden muss.
Ein anderes Wort: scp
scp /path/on/local/computer remoteuser@remotehost.somewhere.example.com:/path/on/server
Für One-Shot-Deals ist scp praktisch. Wenn es sich um viele Dateien handelt, ist rsync eine gute Idee. Wenn eine Verbindung getrennt wird, kann rsync dort weitermachen, wo sie aufgehört hat.
Ich wusste, dass rsync compression ( -z
) hat, und habe gerade erfahren, dass scp auch dies tut ( -C
).
In Ihrem Setup reicht wahrscheinlich rsync aus ... aber zum Beispiel, wenn es viele kleine Dateien gibt, ist es möglicherweise schneller, die Dateien zuerst zu tarieren, als sie zu übertragen, und dann per rsync. Dies liegt daran, dass das Übertragen von Besitzern, Zeitstempeln und Berechtigungen manchmal schwerer ist als die Datei selbst, wenn die Datei klein ist. Tar fügt alle diese Informationen in einer Datei zusammen und rsync kopiert größere Blöcke.
Oder noch besser, wenn keine Sicherheit benötigt wird, benutze tar und nc:
Bereiten Sie am Ziel einen empfangenden Daemon vor, dekomprimieren und entpacken Sie:
nc -l -p 12345 | pigz -d | tar xvf -
Auf der Quelle alles tarieren, parallel komprimieren und an das Ziel senden:
tar cvf - ./ | pigz | nc host 12345
-z
Option für lokales Kopieren ausgelassen hat, da dies unnötigen Overhead verursacht. IMHO sollten Sie nur verwenden,-z
wenn Sie rsync über eine langsame Netzwerkverbindung verwenden. Wenn Sie große Datenmengen über 100Base-T kopieren, ist dies möglicherweise kein Problem-z
. Bei einer schnellen Netzwerkverbindung kann die Verwendung der Komprimierung die CPU blockieren und andere Prozesse blockieren.