アーカイブ・ファイルを作って、コピーして、抜き出して、という仕事を、 パイプを使って一発で済ませることができる。
普通ファイルのコピーは cp コマンドで行うが、 リンクなどがからむと面倒である。もちろん高機能な cp も存在するが、 tar を使うのが定番の解決法である。
dir1 を dir2 にコピーする |
cd dir1 tar cf - . | (cd dir2 ; tar xpf -) |
dir1 を remotehost 上の dir2 にコピーする |
cd dir1 tar cf - . | ssh remotehost '(cd dir2 ; tar xpf -)' |
ファイアウォール越しにファイルを送る |
tar cf - ファイル名 | ssh ファイアウォール ssh リモートホスト tar xpf - |
ファイアウォール越しにファイルを持って来る |
ssh ファイアウォール ssh リモートホスト tar cf - ファイル名 | tar xpf - |
tar 以外に dump と restore, あるいは dd などを使うのが適当なこともある。 次の例は、1CD Linux である Knoppix を用いて、 dd コマンドでディスクをコピーする。
dd if=/dev/hda bs=32768 | ssh コピー先ホスト -l knoppix sudo dd of=/dev/hda |