I've received a Unix software distribution as a compressed cpio file. What's the best command to extract the files?
-
When you did `man cpio` what did you see? – Aug 28 '09 at 00:56
-
6I 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 – Mark Harrison Aug 28 '09 at 01:01
4 Answers
gzip -cd foo.cpio.gz | cpio -idmv
- i : extract (input)
- d : create directories
- m : preserve mtime
- v : verbose
- 982
- 4
- 9
- 17
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.
- 163
- 1
- 4
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:
- The matching pattern needs to be quoted to work as a pattern :P
- The option
--no-absolute-filenamesmust precede the pattern on the command line - Since that option removes the leading
/from filenames, the matching pattern must also omit the leading/
- 1
- 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.
- 55,788
- 10
- 98
- 140