過去の日記

2013-02-07 [長年日記]

sshであちらからこちらに大量のファイルをコピーしてくる [tips]

忘れないようにメモ。

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 を使わないと駄目みたい。