cpとcatのコピーファイル

cpとcatのコピーファイル

cp a bそしてcat a > b違いは何ですか?

Linuxカーネルソースツリーのx86インストールスクリプトでは、arch/x86/boot/install.sh両方が使用されます。

cat $2 > $4/vmlinuz
cp $3 $4/System.map

ある形式が他の形式よりも優れている場合、同じままではないのはなぜですか?

ベストアンサー1

catvsがcp重要な違いを生むもう一つの質問が浮かび上がります。

定義によれば、catは希少ファイルを拡張して「実際の」ゼロバイトでスペースを埋めますが、cpは少なくともその穴を保存するように指示できます。

スパースファイルは、スペースを節約するためにゼロバイトシーケンスがメタデータに置き換えられたファイルです。 ddで1つを作成し、必要なツールを使用してコピーしてそれをテストできます。

  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
    
  2. サイズを変更してください。スペースを取らないでください。

    17> du -sh sparsetest
    0       sparsetest
    
  3. cpにコピーしてサイズを確認してください

    18> cp sparsetest sparsecp
    19> du -sh sparsecp
    0       sparsecp
    
  4. ここでcatを使ってコピーしてサイズを確認してください。

    20> cat sparsetest > sparsecat
    21> du -sh sparsecat
    1.3M    sparsecat
    
  5. お気に入りのツールを使って動作を確認してください。

  6. 掃除を忘れないでください。

最後の注意:ローカルシステム管理者のバックアップ計画の一部として、またはシステム状態に重要なファイルシステムでこれらの実験を実行すると、これらの実験はローカルシステム管理者間の評判を向上させる可能性があります。彼が選択したバックアップツールによっては、テラバイトに拡張されたゼロバイトファイルをバックアップするために思ったよりも多くのテープメディアが必要になる場合があります。

catまたはcpを使用してコピーできない他のファイルには、デバイス特殊ファイルなどが含まれます。デバイスノードをコピーできるかどうか、またはその内容をコピーできるかどうかは、コピーツールの実装によって異なります。

おすすめ記事