cpio コマンドは、アーカイブ ファイル (*.cpio または *.tar ファイルなど) の処理に使用されます。
cpio は「コピーイン、コピーアウト」の略です。
cpio は次の 3 つの操作を実行します。
- ファイルをアーカイブにコピーする
- アーカイブからのファイルの抽出
- ファイルを別のディレクトリ ツリーに渡す
cpio は、アーカイブの作成中に標準入力からファイルのリストを取得し、出力を標準出力に送信します。
1. *.cpio アーカイブ ファイルの作成
cpio -ov を使用して、ファイルとディレクトリを含む *.cpio アーカイブを作成できます
$ cd objects $ ls file1.o file2.o file3.o $ ls | cpio -ov > /tmp/object.cpio
上記のように、ls コマンドは 3 つのオブジェクト ファイル名を cpio コマンドに渡し、cpio は object.cpio アーカイブを生成します。
2. *.cpio アーカイブ ファイルの抽出
cpio 抽出:特定の *.cpio ファイルを抽出するには、以下に示すように cpio -iv を使用します。
$ mkdir output $ cd output $ cpio -idv < /tmp/object.cpio
3.選択したファイルで *.cpio アーカイブを作成
次の例では、*.c ファイルのみで *.cpio アーカイブを作成します。
$ find . -iname *.c -print | cpio -ov >/tmp/c_files.cpio
4. cpio -F を使用して *.tar アーカイブ ファイルを作成します
tar コマンドを効果的に使用する方法は既に知っています。
以下に示すように、cpio コマンドを使用して tar ファイルを作成することもできることをご存知ですか?
$ ls | cpio -ov -H tar -F sample.tar
上記のように、標準出力をリダイレクトする代わりに、オプション -F を使用して出力アーカイブ ファイル名を指定できます。
5. cpio コマンドを使用して *.tar アーカイブ ファイルを抽出します
以下に示すように、cpio コマンドを使用して tar ファイルを抽出することもできます。
$ cpio -idv -F sample.tar
6. *.tar アーカイブ ファイルの内容を表示
*.tar ファイルの内容を表示するには、次の手順を実行します。
$ cpio -it -F sample.tar
7.シンボリック リンクが指す元のファイルで *.cpio アーカイブを作成します
cpio アーカイブは、以下に示すように、シンボリック リンクが参照している元のファイルで作成できます。
$ ls | cpio -oLv >/tmp/test.cpio
8. *.cpio の復元中にファイル変更時刻を保持
以下に示すように、cpio アーカイブ ファイルを復元するときに、ファイルの変更時刻を保持できます。
$ ls | cpio -omv >/tmp/test.cpio
9. cpio を使用して Linux およびカーネル イメージ ファイルを操作する
initrd.img を表示、変更、および再作成する方法 – しばらく前に説明したように、cpio コマンドを使用して initrd.img ファイルを操作することもできます。
10.ディレクトリ ツリーを別のディレクトリにコピー
cpio を使用すると、中間アーカイブを作成せずに、1 つのディレクトリの内容を別のディレクトリにコピーできます。標準入力からファイル リストを読み取り、それをターゲット ディレクトリに渡します。
以下の例では、objects ディレクトリのファイルとサブディレクトリを /mnt/out ディレクトリにコピーします。
$ mkdir /mnt/out $ cd objects $ find . -depth | cpio -pmdv /mnt/out
上記の例では:
- cpio オプション -p は、cpio がパス スルー モードを使用するようにします。 cpio -o を cpio -i にパイプするようなものです。
- cpio オプション -d は、ターゲット ディレクトリに必要に応じて主要なディレクトリを作成します。