cpio – アーカイブファイルを作成・展開するコマンド

アーカイブ作成・展開

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ファイルリストを標準入力から受け取る 仕様が特徴的で、findls と組み合わせることが多いです。
  • tar より古くから存在し、特に UNIX 系システムのバックアップに利用されてきました。
  • Linux では initramfs の生成・展開 にも利用されています。
  • 現在では一般的なアーカイブ用途は tar が主流ですが、cpio はシステムレベルの場面で今も重要です。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント