web-dev-qa-db-ja.com

cpio基本抽出コマンド、「tar xzvf」と同等ですか?

圧縮されたcpioファイルとしてUnixソフトウェア配布を受け取りました。ファイルを抽出するための最良のコマンドは何ですか?

12
Mark Harrison
gzip -cd foo.cpio.gz | cpio -idmv
  • i:抽出(入力)
  • d:ディレクトリを作成する
  • m:mtimeを保持
  • v:詳細
11
Mark Harrison
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
Matt

cpio のこのウィキペディアのページにはいくつかの良いメモがあります。
詳細については、 cpio manual を参照してください。

同じウィキペディアのページからのリンク tarアーカイブとの比較について説明します
そして、これが cpiotar形式で使用 の例です。

0
nik

たとえば、/ etc/httpd /のアーカイブされたコンテンツを現在のディレクトリに抽出するには、サブディレクトリ./etc/httpd/を作成します。

mkdir restored-etc-httpd
cd restored-etc-httpd    
zcat archive.cpio.gz | cpio -idmv --no-absolute-filenames "*etc/httpd/*"

受け入れられた答えとマットの答えは両方とも私に役立ちましたが、3つの詳細のためにしばらく困惑しました:

  1. パターンとして機能するには、一致するパターンを引用する必要があります:P
  2. オプション--no-absolute-filenames must precedeコマンドラインのパターン
  3. このオプションはファイル名から先頭の/を削除するため、一致するパターンでも先頭の/を省略する必要があります。
0
Chris D'Amato