我收到了一個 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/*"
接受的答案和馬特的答案都對我有幫助,但由於三個細節,我被難住了一段時間:
- 匹配的模式需要被引用才能作為模式工作:P
- 該選項
--no-absolute-filenames
必須領先於命令列上的模式 - 由於該選項刪除了檔案名稱中的前導
/
,因此符合模式也必須省略前導/
答案4
此維基百科頁面位於cpio
有一些很好的筆記。
有關更多詳細信息,請參閱cpio
手動的。
來自同一維基百科頁面的鏈接討論與tar
檔案的比較。
並且,這是一個範例cpio
與tar
格式一起使用。