cp a b
そしてcat a > b
違いは何ですか?
Linuxカーネルソースツリーのx86インストールスクリプトでは、arch/x86/boot/install.sh
両方が使用されます。
cat $2 > $4/vmlinuz
cp $3 $4/System.map
ある形式が他の形式よりも優れている場合、同じままではないのはなぜですか?
ベストアンサー1
cat
vsがcp
重要な違いを生むもう一つの質問が浮かび上がります。
定義によれば、catは希少ファイルを拡張して「実際の」ゼロバイトでスペースを埋めますが、cpは少なくともその穴を保存するように指示できます。
スパースファイルは、スペースを節約するためにゼロバイトシーケンスがメタデータに置き換えられたファイルです。 ddで1つを作成し、必要なツールを使用してコピーしてそれをテストできます。
スパースファイルを作成します(問題を回避するには、事前に/ tmpに変更 - 最後の注意を参照)。
15> cd /tmp 16> dd if=/dev/null of=sparsetest bs=512b seek=5 0+0 records in 0+0 records out 0 bytes (0 B) copied, 5.9256e-05 s, 0.0 kB/s
サイズを変更してください。スペースを取らないでください。
17> du -sh sparsetest 0 sparsetest
cpにコピーしてサイズを確認してください
18> cp sparsetest sparsecp 19> du -sh sparsecp 0 sparsecp
ここでcatを使ってコピーしてサイズを確認してください。
20> cat sparsetest > sparsecat 21> du -sh sparsecat 1.3M sparsecat
お気に入りのツールを使って動作を確認してください。
掃除を忘れないでください。
最後の注意:ローカルシステム管理者のバックアップ計画の一部として、またはシステム状態に重要なファイルシステムでこれらの実験を実行すると、これらの実験はローカルシステム管理者間の評判を向上させる可能性があります。彼が選択したバックアップツールによっては、テラバイトに拡張されたゼロバイトファイルをバックアップするために思ったよりも多くのテープメディアが必要になる場合があります。
catまたはcpを使用してコピーできない他のファイルには、デバイス特殊ファイルなどが含まれます。デバイスノードをコピーできるかどうか、またはその内容をコピーできるかどうかは、コピーツールの実装によって異なります。