ディレクトリの転送
サーバAの /usr/local/apache2/htdocs 以下を サーバBの同じ位置へ転送したい。
ところがサーバAとサーバB間は通信ができないが、手元の端末Xからはどちらへもsshが通るとする。
そうすると通常考えられる手段としては
なんて感じですが、どれもこれも面倒。tarの標準出力をつかってなんとかしてみました。
こんな感じです。
$ ssh A 'cd /usr/local/apache2/htdocs ; tar -zcvpf - ./*' | ssh B 'sudo tar -C /usr/local/apache2/htdocs -zxvf -'
sshでAの目的ディレクトリをtarで標準出力へ。それをX上のパイプでBへsshで流してtarに食わせる。帯域の無駄遣いなような気もしますが、転送したり、中間ファイルを消したりとかいった手間がないので楽ちん。