Unix ソフトウェア配布物を圧縮された cpio ファイルとして受け取りました。ファイルを抽出するのに最適なコマンドは何ですか?
答え1
gzip -cd foo.cpio.gz | cpio -idmv
- i : 抽出(入力)
- d : ディレクトリを作成する
- m : mtime を保存する
- v : 詳細
答え2
mkdir archive
cd archive
zcat ../archive.cpio.gz | cpio -idmv --no-absolute-filenames
これは古い質問ですが、Google で上位に表示されるので、更新しようと思いました。 一般的に受け入れられた回答には同意しますが、マシン上の重要なシステム ファイルを上書きするつもりがない限り、「--no-absolute-filenames」を追加する必要があります。 また、個人的には、「gzip -cd」や「gunzip -c」よりも「zcat」を好みます。
最後に、デバイス ノードを含むルート ファイル システムを抽出する場合は、cpio を root (例: sudo) として実行する必要があることに注意してください。
答え3
たとえば、/etc/httpd/のアーカイブされた内容を現在のディレクトリに抽出し、サブディレクトリ./etc/httpd/を作成する。
mkdir restored-etc-httpd
cd restored-etc-httpd
zcat archive.cpio.gz | cpio -idmv --no-absolute-filenames "*etc/httpd/*"
承認された回答と Matt の回答はどちらも私にとって役に立ちましたが、次の 3 つの詳細のせいでしばらく困惑しました。
- 一致するパターンは、パターンとして機能するように引用符で囲む必要があります :P
- オプション
--no-absolute-filenames
は先行するコマンドライン上のパターン - このオプションはファイル名の先頭を削除するので
/
、一致するパターンも先頭を省略する必要があります。/
答え4
このWikipediaのページcpio
良いメモがいくつかあります。
詳細については、cpio
マニュアル。
同じWikipediaページからのリンクtar
アーカイブとの比較について議論するそして、
ここに例がありますフォーマットcpio
を使用するtar
。