cpio:伝統と互換性のアーカイバー

cpio

cpioコマンドについての概要と詳細

cpioとは

cpioは、UNIX系システムで古くから利用されているアーカイブ作成・展開ツールです。ファイルのバックアップや転送、ソフトウェアのインストールなどに使われ、特にRPMパッケージ管理などでも内部的に活用されています。
tarに似た機能を持ちつつも、ファイルリストをパイプで受け取る柔軟性が特徴です。

主な特徴

  • パイプ処理が基本:findなどと組み合わせて使う設計
  • アーカイブ形式が多彩:bin、odc、newc、crc など複数のフォーマットに対応
  • 標準入力/出力を活用:柔軟なファイル操作が可能
  • RPMとの親和性:パッケージ展開・検査などに利用される

インストール方法

Debian/Ubuntu系
$ sudo apt install cpio

Fedora系
$ sudo dnf install cpio

基本的な使い方

ファイルのアーカイブ作成

$ find . -type f | cpio -o > archive.cpio
  • -o:出力モード(アーカイブ作成)

アーカイブの展開

$ cpio -id < archive.cpio
  • -i:入力モード(アーカイブ展開)
  • -d:必要なディレクトリを自動作成

アーカイブの内容を確認

$ cpio -it < archive.cpio

アーカイブに含まれるファイル一覧を表示します。

よく使うオプション

  • -v:詳細表示
  • -u:上書き確認なしで復元
  • --format=xxx:指定フォーマットでアーカイブ(例:newc, crc)

cpio形式の違い

  • bin:古典的なバイナリ形式(非推奨)
  • odc:POSIX標準互換
  • newc:近代的な形式でファイル名・サイズ制限が緩和
  • crc:newc + CRCチェック付き

実用例

RPMパッケージからファイルを抽出

$ rpm2cpio somepackage.rpm | cpio -idmv

RPMファイルから直接ファイルを展開できます。

バックアップ用途

$ find /etc -type f | cpio -ov > etc_backup.cpio

設定ファイルなどをバックアップする用途に適しています。

注意点

  • tarに比べると習熟に少し慣れが必要
  • 圧縮機能は内蔵されていないため、gzipなどと組み合わせる必要あり
  • ファイルリストが必要なため、findlsとの連携が前提

まとめ

cpioは、柔軟なパイプ処理に特化したUNIX伝統のアーカイブツールであり、RPMパッケージやシステムファイルの管理、カスタムスクリプトとの連携において今でも有用です。やや扱いにくい面もありますが、システム管理やスクリプト構築を行うユーザーにとっては頼れる存在です。