2013-02-07 [長年日記]
■sshであちらからこちらに大量のファイルをコピーしてくる
忘れないようにメモ。
ssh username@hostname 'cd /home/username/foo ; find . -type f | tar zcO -T - ' | tar zxf -
sshのあちら側のtar。
zc はいつもの通り。gzip圧縮が効くように。
O で結果を標準出力に書き出す。
-T で"アーカイブするファイル名"を後続のファイルから読み出す。-T - なので標準入力からくるテキストを"アーカイブするファイル名"とする。これでfindの結果を受け取る。
sshのこちら側のtarはいつもどおり。- で標準入力から読み出しているだけ。
find -type f でディレクトリ自身をカットしている。
ssh username@hostname 'cd /home/username/foo ; find . -type f | tar zcO -T - ' > hostname_foo.tar.gz
だと"こちら側にバックアップ"になる。
逆は、
find . -type f | tar czO -T - | ssh username@hostname 'cd foo ; tar zxf -'
とか、
find . -type f | tar czO -T - | ssh username@hostname 'cd foo ; cat > foo.tar.gz'
かな。
こちら側がMacだと tar じゃなくて gnutar を使わないと駄目みたい。