04. Using cpio

Another command similar to tar is cpio. This program allows you to create archives from lists of filenames. Additionally, it is used to extract tar archives and copy files from a source to a device or file.

The cpio command is especially useful since you don't need to create an intermediate file before moving it to another disk.

Three modes

There are three modes that come with the cpio command.

1) Copy-out mode

The copy-out mode, denoted with the -o or --create options, allow you to make an archive and copy files into it. Simply pass in a list of filenames (one per line) into the standard input.

An easily way to generate a list of filenames is with the find command.

$ find ./sample
$ find ./sample | cpio -o > /media/myusb/sample.cpio
1 block

This is great, but the file is uncompressed. To compress it, use gzip.

$ find ./sample | cpio -ov gzip > /media/myusb/sample.cpio.gz

Other options you may use include -v for verbose and -depth to specify folder depth.

2) Copy-in mode

Whereas copy-out mode creates an archive, we can use copy-in to extract the archive contents. Simply pass in the -i or --extract option, and pass in the archive through standard input.

$ cpio -i < /media/myusb/sample.cpio
# If compressed:
$ gunzip -c /media/myusb/sample.cpio.gz | cpio -i

The -c option of gunzipoutputs the contents to standard out.

3) Copy-pass mode

The third mode is copy-pass, which is useful for moving files from one directory tree to another without creating an intermediate archive. This mode can be thought of as a combination of the two mentioned above. To activate copy-pass mode, use -p or the --pass-through option.

More options

Here is a list of more options you can use with the cpio command.

Reset the access time of each file so it doesn't appear to have been read.
For use with copy-out mode - appends data to an existing archive.
Archive the filename instead of using the default standard in.
-I filename
Use specified filename instead of standard in.
Extract relative to the current directory, even if a full pathname is given.
-O filename
Use specified filename instead of default standard out.
Replace all files without asking for verification.

Aching back from coding all day?

Foam Seat Cushion

Aching back from coding all day? Try Back Problems

This foam seat cushion relieves lowerback pain, numbness and pressure sores by promoting healthy weight distribution, posture and spine alignment. Furthermore, it reduces pressure on the tailbone and hip bones while sitting. Perfect for sitting on the computer desk for long periods of time.

$ Check price
99.9599.95Amazon 4.5 logo(9,445+ reviews)

More Back Problems resources

Take your Linux skills to the next level!

Linux for Beginners

Take your Linux skills to the next level! Try Linux & UNIX

Linux for Beginners doesn't make any assumptions about your background or knowledge of Linux. You need no prior knowledge to benefit from this book. You will be guided step by step using a logical and systematic approach. As new concepts, commands, or jargon are encountered they are explained in plain language, making it easy for anyone to understand.

$ Check price
24.9924.99Amazon 4.5 logo(101+ reviews)

More Linux & UNIX resources