cpio基本解压缩命令,'tar xzvf'等效吗?


12

我已经收到了Unix软件发行版的压缩cpio文件。提取文件的最佳命令是什么?


当你做了man cpio什么,你看到了什么?

5
我看到:-i -o -p -t -B -c -C -f -F -H -M -n -v -V -W -b -r -s -S -E -A -O -l- 0 -a -I -L -R -d -m -u-?--extract --create --pass-through --list --block-size = --io-size = --force-local --nonmatching --file = --format = --message = --numeric- uid-gid --quiet --rsh-command = --verbose --dot --warning = --swap --rename --swap-bytes --swap-halfwords --to-stdout --pattern-file =- -only-verify-crc --append --link --absolute-filenames --no-absolute-filenames --null --reset-access-time --dereference --owner = --make-directories --preserve-修改时间-无保留所有者
马克·哈里森

Answers:


11
gzip -cd foo.cpio.gz | cpio -idmv
  • i:提取(输入)
  • d:创建目录
  • m:保留mtime
  • v:详细

3
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)。



0

例如,要将/ etc / httpd /的存档内容提取到当前目录,请创建子目录./etc/httpd/

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

可接受的答案和Matt的帮助都对我有所帮助,但由于以下三个细节,我很困惑:

  1. 需要将匹配的模式引用为模式:P
  2. 该选项--no-absolute-filenames必须命令行模式之前
  3. 由于该选项/从文件名中删除了前导,因此匹配模式还必须省略前导/
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.