16

I've received a Unix software distribution as a compressed cpio file. What's the best command to extract the files?

2
  • When you did man cpio what did you see?
    – S.Lott
    Aug 28, 2009 at 0:56
  • 6
    I see: -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-modification-time --no-preserve-owner --sparse --unconditional Aug 28, 2009 at 1:01

4 Answers 4

15
gzip -cd foo.cpio.gz | cpio -idmv
  • i : extract (input)
  • d : create directories
  • m : preserve mtime
  • v : verbose
0
7
mkdir archive
cd archive
zcat ../archive.cpio.gz | cpio -idmv --no-absolute-filenames

While this is an old question, it shows up high on Google, so I thought I might update it. I agree with the accepted answer in general, but you should add "--no-absolute-filenames" unless you are intending to overwrite important system files on your machine. Also, personally, I prefer "zcat" over "gzip -cd" or "gunzip -c".

Finally, note that you need to run cpio as root (e.g. sudo) if you are extracting a root filesystem that contains device nodes.

0

For example, to extract the archived contents of /etc/httpd/ to the current directory, creating subdirectories ./etc/httpd/

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

The accepted answer and Matt's were both helpful to me but I was stumped for a while because of three details:

  1. The matching pattern needs to be quoted to work as a pattern :P
  2. The option --no-absolute-filenames must precede the pattern on the command line
  3. Since that option removes the leading / from filenames, the matching pattern must also omit the leading /
-1

This Wikipedia page on cpio has some good notes.
For more details, refer to the cpio manual.

A link from the same Wikipedia page discusses comparison with tar archives.
And, here is an example of using cpio with the tar format.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .