| 原作者 | ディック・ヘイト |
|---|---|
| 開発者 | AT&T ベル研究所 |
| 初回リリース | 1977年 |
| オペレーティング·システム | UnixおよびUnixライク |
| タイプ | 指示 |
| ライセンス | GNU cpio: GPLv3 libarchive bsdcpio:新しい BSD ライセンス |
| ファイル名拡張子 |
.cpio |
|---|---|
| インターネットメディアの種類 |
アプリケーション/x-cpio |
| 統一型識別子 (UTI) | public.cpio-archive |
| フォーマットの種類 | ファイルアーカイバ |
cpioは、一般的なファイル アーカイバユーティリティとそれに関連するファイル形式です。主にUnix 系コンピュータ オペレーティング システムにインストールされます。このソフトウェア ユーティリティは、もともと Programmer's Workbench ( PWB/UNIX )の一部としてテープ アーカイブ プログラムとして意図されたもので、その後リリースされたほぼすべての Unix オペレーティング システムのコンポーネントとなっています。その名前は、プログラムが操作時に 標準入力と標準出力を使用することを詳細に表したcopy in と copy out というフレーズに由来しています。
Unixのすべての派生版は、より広く認知されるようになったtarなどの他のバックアップおよびアーカイブプログラムもサポートしています。 [1] RPMパッケージマネージャ、バージョン2.6以降のLinuxカーネルのinitramfs、およびAppleのインストーラ(pax )によるcpioの使用により、cpioは重要なアーカイブツールとなっています。
cpio とそのアーカイブ ファイル形式は、最初の設計以来、互換性のない改訂が何度か行われてきました。最も注目すべきは、アーカイブ ファイルのメタ情報のバイナリ形式の使用からASCIIベースの表現への変更 (現在は運用オプション) です。
cpioはPOSIX.1-2001から削除され、代わりに以前のバージョンの標準で導入されていた同様のユーティリティ であるpax [2]が採用されました。
歴史
cpioはProgrammer's Workbenchプロジェクトの一部としてUnixバージョン7に登場しました。[3]
操作とアーカイブ形式
cpio は、もともとバックアップ ファイル アーカイブをテープ デバイスに連続して保存するために設計されました。コンテンツは圧縮されませんが、結果のアーカイブはgzipまたはその他の外部圧縮プログラムを使用して圧縮されることがよくあります。
アーカイブ作成
-oコマンドライン フラグで開始されたコピー アウト操作中にアーカイブを作成する場合、cpio は標準入力チャネルからファイルとディレクトリのパス名を読み取り、結果のアーカイブ バイト ストリームを標準出力に書き込みます。したがって、cpio は通常、 findプログラムなど、アーカイブするファイルのリストを生成する他のユーティリティと一緒に使用されます。
結果として得られる cpio アーカイブは、ファイル名、inode 番号、所有権、権限、タイムスタンプなどのファイル メタ情報を含むヘッダー セクションで区切られた、単一のアーカイブに連結された一連のファイルとディレクトリです。慣例により、アーカイブのファイル名には通常、ファイル拡張子cpio が付けられます。
この例では、findユーティリティを使用して、現在のディレクトリから始まるパス名のリストを生成し、ディレクトリ ツリーのアーカイブを作成します。
$ find . -depth -print | cpio -o > /path/archive.cpio
抽出
コマンドラインフラグiによって開始されるコピーイン操作中に、 cpio は標準入力からアーカイブを読み取り、アーカイブされたファイルをオペレーティングシステムのファイルシステムに再作成します。
$ cpio -i -vd < アーカイブ.cpio
コマンドライン フラグd は、 cpio に必要に応じてディレクトリを構築するように指示します。フラグv (詳細) は、抽出されるファイル名をリストします。
オプション フラグ以外の残りのコマンド ライン引数は、シェルのようなグロブパターンです。アーカイブ内の一致する名前を持つファイルのみがアーカイブからコピーされます。次の例では、アーカイブからファイル/etc/fstab を抽出します。
$ cpio -i -d /etc/fstab < アーカイブ.cpio
リスト
cpio アーカイブに含まれるファイルは、次の呼び出しで一覧表示できます。
$ cpio -t < アーカイブ.cpio
cpio アーカイブには相対パスではなく絶対パス (例: /bin/lsとbin/ls ) が含まれる可能性があるため、リストは役に立つ場合があります。
コピー
Cpio は、ファイルをコピーする3 番目のタイプの操作をサポートします。これは、パススルーオプション フラグ ( p ) で開始されます。このモードでは、コピー アウトとコピー インの手順が組み合わされますが、実際にはファイル アーカイブは作成されません。このモードでは、cpio はコピー アウト操作のように標準入力でパス名を読み取りますが、アーカイブを作成する代わりに、コマンド ライン引数として指定されたパスで指定されたファイル システム内の別の場所にディレクトリとファイルを再作成します。
この例では、現在のディレクトリから始まるディレクトリ ツリーをファイル システム内の別のパスnew-pathにコピーし、ファイルの変更時刻を保持し (フラグm )、必要に応じてディレクトリを作成し ( d )、既存のファイルを無条件に置き換え ( u )、標準出力に進行状況リストを生成します ( v )。
$ find . -depth -print | cpio -p -dumv新しいパス
POSIX標準化
cpioユーティリティはPOSIX.1-1988で標準化されていますが、ファイル サイズやその他の制限のためPOSIX.1-2001では省略されました。たとえば、GNU バージョンでは、 "bin" (デフォルト、廃止) や "ustar" (POSIX tar) など、さまざまな出力形式オプションが提供されており、ファイル サイズの制限はそれぞれ 2,147,483,647 バイト (2 GB) と 8,589,934,591 バイト (8 GB) です。[4]
cpio、ustar、および pax ファイル形式は、現在POSIX 1003.1-2008に準拠しているpaxユーティリティ用にPOSIX.1-2001で定義されており、cpio および ustar 形式のアーカイブの読み取りと書き込みが可能です。
実装
ほとんどのLinuxディストリビューションはGNU版を提供していますcpio。[5] FreeBSDとmacOSは、libarchivebsdcpioで提供されるBSDライセンスのものを使用しています。[6]
参照
参考文献
- ^ Peek, J; O'Reilly, T; Loukides, M (1997). Unix Power Tools . O'Reilly & Associates, Inc. p. 38.13. ISBN 1-565-92260-3。
- ^ “Rationale”. pubs.opengroup.org . 2024年7月18日閲覧。
- ^ McIlroy, MD (1987). A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 (PDF) (技術レポート). CSTR. Bell Labs. 139.
- ^ cpio 情報ドキュメント、オプションノード、bsdcpio マニュアルページ
- ^ 「Cpio」. GNU.org.
- ^ "libarchive"。
外部リンク
- cpio in The Single UNIX ® 仕様、バージョン 2、1997、opengroup.org – アプリケーションは pax ユーティリティに移行する必要があることを示しています。
- C.4 ユーティリティ in The Open Group Base Specifications Issue 6, 2004 Edition, opengroup.org – cpio が削除されたことを示しています
- – ベル研究所の Unix の第 8 版
- – GNUのマニュアル
- – Solaris 11.4ユーザーコマンドリファレンスマニュアル
- – FreeBSD一般コマンドマニュアル
- – OpenBSD一般コマンドマニュアル
- – Debian一般コマンドマニュアル
