web-dev-qa-db-ja.com

cpio VStarおよびcp

Cpioには、コピーアウト、コピーイン、パススルーの3つのモードがあることを学びました。

Tarよりもコピーアウトモードとコピーインモードでのcpioの長所と短所は何でしょうか。いつcpioを使用し、いつtarを使用するのが良いですか?

パススルーモードとcpでのcpioに関する同様の質問。

ありがとう、よろしく!

6
Tim

これは非常に一般的な概要です。

CPIOは、バックアップを取ることを含め、ファイルシステムを複製するためのより良い仕事をします。ハードリンク、FIFO、およびその他の非標準ファイル機能などを保持します。 CPIOのほとんどの実装は、.tarファイルの読み取りと書き込みを含め、TARが行うすべてのことを実行します。 CPIOは通常、ファイルのリストを標準入力からアーカイブに取り込みます。これにより、他の何か(findなど)からリストをパイプするのが非常に簡単になります。

CPIOパススルーは、ディレクトリAからディレクトリBにコピーするファイルのリストが非常に長い場合に非常に役立ちます(たとえば、findを使用して、過去2年間に変更されたすべてのファイルを見つけることができます。システム上)

TARは、すべての標準ファイルをテープ(またはアーカイブファイル)との間で単純にダンプするという優れた仕事をします。使用するのは少し簡単です(最も一般的なタスクの場合)。ほとんどの人の単純なバックアップ要求を簡単に満たします。そしてその人気のほとんどはこの事実からです。

そして今、細かい印刷のために。 CPIOとTARの両方には、いくつかの異なるバージョンと実装があります。それぞれに異なる機能があり、一部には異なるコマンドラインオプションがあります。お互いができないところに、それぞれができることがあります。 1つに制限されていることに気付いた場合は、もう1つを試してください。誰もがお気に入りを持っており、99%の確率でどちらかがタスクを実行します。

7
Chris S

AE 3 redhatで、cpioの出力ストリームのサイズ制限が2Gバイトであることがわかりました。ただし、tarにはこの制限はありませんでした。

他のシステムには異なる制限がある場合があります。

1
mdpc

私もCPIOが好きです。ただし、出所が不明なファイルセット(エンドユーザーが作成したファイルなど)でcpioを使用する場合は、NULで終了するファイル名を使用することをお勧めします。use-print0フラグを見つけて追加します0フラグをcpioに。このようにして、奇妙な名前のファイル(CRNL文字を含むファイルなど)が正しく処理されます。

cd / && find . -xdev -print0 | cpio -pmdu0 /mnt/
0
abb

disrpm または rpm2cpio を介して、開いているRPMファイルをリッピングする以外の理由でcpioを使用する理由はわかりませんが、 tarよりcpioの方が望ましいコーナーケース。

歴史と人気

tarcpio はどちらも、 バージョン7 Unix で導入された競合するアーカイブ形式です。 )1979年に、その後 [〜#〜] posix [〜#〜] 。1-1988に含まれましたが、次の標準であるPOSIX.1-2001にはtarのみが残っていました。1

Cpioのファイル形式は数回変更されており、バージョン間の完全な互換性は維持されていません。たとえば、バイナリファイル情報データのASCIIエンコード表現があります。

Tarはより広く知られており、長年にわたってより用途が広くなり、特定のシステムでサポートされる可能性が高くなっています。 Cpioは、 Red Hatパッケージ 形式(RPM)など、いくつかの領域でまだ使用されていますが、 RPM v5 (確かにあいまいです)cpioの代わりに xar を使用します。

Tarの方が一般的ですが、どちらもほとんどのUnixライクなシステムに存在します。これが Debianのインストール統計 です:

#rank  name    inst    vote    old  recent  no-files  (maintainer)
   13   tar  189206  172133   3707   13298        68  (Bdale Garbee)
   61  cpio  189028   71664  96346   20920        98  (Anibal Monsalve Salazar)

モード

Copy-out:これはアーカイブ作成用で、tar -pcに似ています

コピーイン:これはアーカイブ抽出用で、tar -pxに似ています

パススルー:これは基本的に上記の両方であり、tar -pc … |tar -pxに似ていますが、1つのコマンドで実行されます(したがって、微視的に高速です)。これはcp -pdrに似ていますが、cpioと(特に)tarの両方がよりカスタマイズ可能です。また、rsync -aも検討してください。これは、ネットワーク接続全体でより一般的に使用されるため、人々が忘れがちです。

それらのパフォーマンスを比較していませんが、CPU、メモリ、およびアーカイブサイズ(圧縮後)は非常に似ていると思います。

0
Adam Katz