cpio - 標準入出力を利用してアーカイブファイルを作成・展開する

スポンサーリンク

cpioコマンドは標準入力からファイルリストを受け取ってcpio形式のアーカイブファイルを作成したり、アーカイブファイルを標準出力から受け取ってcpio形式のアーカイブファイルを展開することが出来ます。

findコマンドを用いて必要なファイルをリストしてcpioコマンドを利用してアーカイブファイルを作成したり出来ます。

find - ファイルを検索しファイルリストを出力する
findコマンドはファイルを検索して検索したファイルリストを出力するコマンドです。追加で式(expression)を記述することで、検索するファイルを絞り込むことができます。また、-exec等の式を用いることで検索したファイルを用いてコマン...

cpioコマンドには主に3つの機能があり、コピーアウトモード(copy-out mode)、コピーインモード(copy-in mode)、コピーパスモード(copy-pass mode)になります。

スポンサーリンク

コピーアウトモード

コピーアウトモードは標準入力からファイルリストを受け取り、そのファイルリストから標準出力を通して、アーカイブファイルを作成するモードになります。

コピーアウトモードを使用する場合、-oオプションを用いてcpioコマンドを利用します。

コマンド例と実行結果

 

-Oオプションまたは-Fオプションでファイル名を指定することで、標準出力の代わりにそのファイル名に対して、アーカイブファイルを作成します。

 

 

 

コピーインモード

コピーインモードは標準入力からアーカイブファイルを受け取り、そのアーカイブファイルを展開するモードになります。

コピーインモードを使用する場合、-iオプションを用いてcpioコマンドを利用します。

archive.cpio

コマンド例と実行結果

 

-Iオプションまたは-Fオプションでファイル名を指定することで、標準入力の代わりにそのファイル名に対して、アーカイブファイルを展開します。

 

 

 

コピーパスモード

コピーパスモードはあるディレクトリツリーを別のディレクトリにコピーするモードになり、アーカイブファイルを介さないコピーアウトモードとコピーインモードの複合と考えることも出来ます。

コピーパスモードを使用する場合、-pオプションを用いてcpioコマンドを利用します。

コマンド例と実行結果

 

 

 

cpioコマンドのオプション

処理したファイルを表示
(-vオプション)

コピーアウト、コピーイン、コピーパスモードで利用できます。
-vオプションは処理したファイルを表示できます。cpioコマンドを利用するなら、どのモードでもとりあえず付けて実行させてもいいオプションともいえます。

コマンド例と実行結果

 

-vオプションは、-tオプションと組み合わせるとアーカイブファイルの内容を'ls -l'コマンドの形式でファイルを確認できます。

 

 

 

アーカイブファイルの内容を確認
(-tオプション)

コピーインモードで利用できます。
-tオプションはアーカイブファイルの内容を確認するオプションになります。-tオプションを利用した場合、暗黙的にコピーインモードになります。
また、-vオプションと組み合わせると表示がlsコマンドの-lオプションを用いたような表示になります。

コマンド例と実行結果

 

 

 

必要なディレクトリを作成
(-dオプション)

コピーイン、コピーパスモードで利用できます。
-dオプションは、アーカイブファイルからのファイル展開時等に必要なディレクトリが存在しないときに、自動的にディレクトリを作成します。

コマンド例と実行結果

 

 

 

既存のアーカイブファイルにファイルを追加
(-Aオプション)

コピーアウトモードで利用できます。
-Aオプションは既存のアーカイブファイルにファイルを追加できます。
-Aオプションを用いる場合は、-Oオプションまたは-Fオプションでファイルを追加したいアーカイブファイルを指定します。

コマンド例と実行結果

 

 

 

リストファイルからファイルパターンを読み出し抽出
(-Eオプション)

コピーインモードで利用できます。
-Eオプションはリストファイルを読み込み、そのファイルパターンが記述されているファイルを抽出します。

list.txt

コマンド例と実行結果

 

<(command)はプロセス置換になります。プロセス置換はファイルの代わりにコマンドの結果を利用できます。

 

 

 

ファイルを展開する代わりにファイルの内容を標準出力へ
(--to-stdoutオプション)

コピーインモードで利用できます。
--to-stdoutオプションはファイルを展開するのではなく、そのファイルの内容を標準出力へ出力します。

ファイルの内容

コマンド例と実行結果

 

 

 

参考

GNU cpio manual