cpio 基本提取指令,「tar xzvf」等效嗎?

cpio 基本提取指令,「tar xzvf」等效嗎?

我收到了一個 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

雖然這是一個老問題,但它在谷歌上的排名很高,所以我想我可能會更新它。我一般同意接受的答案,但您應該添加“--no-absolute-filenames”,除非您打算覆蓋電腦上的重要係統檔案。另外,就我個人而言,我更喜歡“zcat”而不是“gzip -cd”或“gunzip -c”。

最後,請注意,如果您要提取包含裝置節點的根檔案系統,則需要以 root 身分執行 cpio(例如 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/*"

接受的答案和馬特的答案都對我有幫助,但由於三個細節,我被難住了一段時間:

  1. 匹配的模式需要被引用才能作為模式工作:P
  2. 該選項--no-absolute-filenames必須領先於命令列上的模式
  3. 由於該選項刪除了檔案名稱中的前導/,因此符合模式也必須省略前導/

答案4

此維基百科頁面位於cpio有一些很好的筆記。
有關更多詳細信息,請參閱cpio手動的

來自同一維基百科頁面的鏈接討論與tar檔案的比較
並且,這是一個範例cpiotar格式一起使用

相關內容