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

虽然这是一个老问题,但它在 Google 上排名很高,所以我想我可以更新它。我总体上同意接受的答案,但除非您打算覆盖机器上的重要系统文件,否则您应该添加“--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档案的比较
下面是一个例子使用cpio格式tar

相关内容