Linuxシステム間でファイルをコピーする方法のまとめ
まず、ローカルでもリモートでも、移動またはコピーが必要なファイルが多く、それほど大きくない場合、cpコマンドとmvコマンドでは効率が低く、コピー/移動するコンテンツをtarツールでパッケージ/圧縮してからコピー/移動し、最後にパッケージ/解凍することができます。
また、tarのパッケージング/圧縮が完了した後にコピーを行う必要がなく、解包/解凍し、パイプを介して他のコピー解包/解凍をパッケージング/圧縮しながら実行することも重要なテクニックです。
たとえば、tarコマンドはncコマンドと組み合わせて、2つのマシン間でファイルとディレクトリを迅速に転送できます。
Bマシン:
nc -l 5555 |tar -C /tmp/test/ -xf -
Aマシン:
tar cf - /tmp/test/ |nc B'IP 5555
上記ステップは、A機器/tmp/test/のコンテンツをB機器対応ディレクトリにコピーし、tar cf-/tmp/test/|nc B'IP 5555は、コンテンツをパッケージしながらパイプとncコマンドを介して対応するIPアドレスと5555ポートからB機器に転送し、nc-l 5555|tar-C/tmp/test/-xf-は、本機の555ポートを傍受する受信したコンテンツを指定したディレクトリに解凍します(-Cパラメータ指定先ディレクトリ)
また、tarはscp、sshコマンドと組み合わせることもできます。
A機で梱包した後、B機にコピーして解包する
tar -cf - /tmp/test | ssh B'IP "cd /tmp; tar -xf -"
A機で梱包し、梱包したファイルをB機にコピーするtar -cf - /tmp/test | scp - B'USER@B'IP:/tmp