cpio コマンドは、ファイルやディレクトリをアーカイブ形式で保存・展開する コマンドです。
バックアップやシステム移行、initramfs の生成などで利用されます。tar に比べると利用頻度は少ないですが、より柔軟にファイルリストを入力できる点が特徴です。
構文(Syntax)
# アーカイブの作成
cpio -o [オプション] < ファイルリスト > アーカイブファイル
# アーカイブの展開
cpio -i [オプション] < アーカイブファイル
# アーカイブ内容の一覧表示
cpio -t < アーカイブファイル
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
-o | アーカイブを作成(copy-out モード) | `find . |
-i | アーカイブを展開(copy-in モード) | cpio -i < archive.cpio |
-t | アーカイブの内容を一覧表示 | cpio -t < archive.cpio |
-v | 処理中のファイル名を表示 | cpio -iv < archive.cpio |
-d | ディレクトリを必要に応じて作成 | cpio -id < archive.cpio |
-u | 既存ファイルを上書き | cpio -iu < archive.cpio |
-A | 既存アーカイブに追加 | `find morefiles |
-F FILE | アーカイブファイルを指定 | cpio -i -F archive.cpio |
--null | 入力ファイル名が NUL 区切り(find -print0 と併用) | `find . -print0 |
実行例
アーカイブの作成
find . -type f | cpio -o > archive.cpio
出力例(-v を付けた場合):
./file1.txt
./dir/file2.log
...
アーカイブの展開
cpio -i < archive.cpio
展開時に上書き許可
cpio -iu < archive.cpio
アーカイブの内容を確認
cpio -t < archive.cpio
出力例:
./file1.txt
./dir/file2.log
ディレクトリを作成しながら展開
cpio -idv < archive.cpio
標準入力経由でファイルリストを指定
echo "file1.txt" | cpio -o > onefile.cpio
エラー例(不正なオプション指定)
cpio --xyz
出力例:
cpio: unrecognized option '--xyz'
Try 'cpio --help' for more information.
関連コマンド
tar: より一般的に使われるアーカイブ作成コマンドdd: データのバイト単位コピーfind:cpioの入力ファイルリスト生成に併用されることが多い
備考
cpioは ファイルリストを標準入力から受け取る 仕様が特徴的で、findやlsと組み合わせることが多いです。tarより古くから存在し、特に UNIX 系システムのバックアップに利用されてきました。- Linux では
initramfsの生成・展開 にも利用されています。 - 現在では一般的なアーカイブ用途は
tarが主流ですが、cpioはシステムレベルの場面で今も重要です。
参考
- manページ: man7.org cpio(1)
- GNU cpio: https://www.gnu.org/software/cpio/

コメント