ホストAからホストBへディレクトリ単位でファイルを転送する

ホストAからホストBへディレクトリ単位でファイルを転送する

ホストAの "/path/to/A" 以下をホストBの "/path/to/A" へ転送したい。
通常の手段で考えると、ホストA場で /path/to/A 以下をtarや別の手段でアーカイブして、ホストBへ転送。
そして、ホストBで展開するって方法が考えられます。
でもですよ、少量のファイルならともかくファイルが大量にある場合はアーカイブはでかくなるわ、アーカイブする時間もかかるわ、
転送も時間がかかるわで非常に面倒。

ってなことでssh一発でできるように考えたコマンドがこちら。必要条件として作業端末からホストA,Bの両方へノーパスワードでsshできること、
ホストA,Bの両方でsudo権限があること。当然ですが、/path/to/Aがsshでログインするユーザにwriteパーミションがあるんだっらその条件は不要です。

$ ssh host_a 'sudo tar -cvf - /path/to/A'  | ssh host_b 'sudo tar -C / -xvf -'