Donate : Link
Medium Blog : Link
Applications : Link
cpio stands for “copy in, copy out“. It is used for processing the archive files like *.cpio or *.tar. This command can copy files to and from archives.
Synopsis:
- Copy-out Mode: Copy files named in name-list to the archive
cpio -o < name-list > archive
- Copy-in Mode: Extract files from the archive
cpio -i < archive
- Copy-pass Mode: Copy files named in name-list to destination-directory
cpio -p destination-directory < name-list
Usage: cpio [OPTION...] [destination-directory]
GNU `cpio' copies files to and from archives
Examples:
# Copy files named in name-list to the archive
cpio -o < name-list [> archive]
# Extract files from the archive
cpio -i [< archive]
# Copy files named in name-list to destination-directory
cpio -p destination-directory < name-list
Main operation mode:
-i, --extract Extract files from an archive (run in copy-in
mode)
-o, --create Create the archive (run in copy-out mode)
-p, --pass-through Run in copy-pass mode
-t, --list Print a table of contents of the input
Operation modifiers valid in any mode:
--block-size=BLOCK-SIZE Set the I/O block size to BLOCK-SIZE * 512
bytes
-B Set the I/O block size to 5120 bytes
-c Identical to "-H newc", use the new (SVR4)
portable format. If you wish the old portable
(ASCII) archive format, use "-H odc" instead.
-C, --io-size=NUMBER Set the I/O block size to the given NUMBER of
bytes
-D, --directory=DIR Change to directory DIR
--force-local Archive file is local, even if its name contains
colons
-H, --format=FORMAT Use given archive FORMAT
--quiet Do not print the number of blocks copied
-R, --owner=[USER][:.][GROUP] Set the ownership of all files created to the
specified USER and/or GROUP
-v, --verbose Verbosely list the files processed
-V, --dot Print a "." for each file processed
-W, --warning=FLAG Control warning display. Currently FLAG is one of
'none', 'truncate', 'all'. Multiple options
accumulate.
Operation modifiers valid in copy-in and copy-out modes
-F, --file=[[USER@]HOST:]FILE-NAME
Use this FILE-NAME instead of standard input or
output. Optional USER and HOST specify the user
and host names in case of a remote archive
-M, --message=STRING Print STRING when the end of a volume of the
backup media is reached
--rsh-command=COMMAND Use COMMAND instead of rsh
Operation modifiers valid only in copy-in mode:
-b, --swap Swap both halfwords of words and bytes of
halfwords in the data. Equivalent to -sS
-f, --nonmatching Only copy files that do not match any of the given
patterns
-I [[USER@]HOST:]FILE-NAME Archive filename to use instead of standard input.
Optional USER and HOST specify the user and host
names in case of a remote archive
-n, --numeric-uid-gid In the verbose table of contents listing, show
numeric UID and GID
-r, --rename Interactively rename files
-s, --swap-bytes Swap the bytes of each halfword in the files
-S, --swap-halfwords Swap the halfwords of each word (4 bytes) in the
files
--to-stdout Extract files to standard output
-E, --pattern-file=FILE Read additional patterns specifying filenames to
extract or list from FILE
--only-verify-crc When reading a CRC format archive, only verify the
checksum of each file in the archive, don't
actually extract the files
Operation modifiers valid only in copy-out mode:
-A, --append Append to an existing archive.
--device-independent, --reproducible
Create device-independent (reproducible) archives
--ignore-devno Don't store device numbers
-O [[USER@]HOST:]FILE-NAME Archive filename to use instead of standard
output. Optional USER and HOST specify the user
and host names in case of a remote archive
--renumber-inodes Renumber inodes
Operation modifiers valid only in copy-pass mode:
-l, --link Link files instead of copying them, when
possible
Operation modifiers valid in copy-in and copy-out modes:
--absolute-filenames Do not strip file system prefix components from
the file names
--no-absolute-filenames Create all files relative to the current
directory
Operation modifiers valid in copy-out and copy-pass modes:
-0, --null Filenames in the list are delimited by null
characters instead of newlines
-a, --reset-access-time Reset the access times of files after reading
them
-L, --dereference Dereference symbolic links (copy the files
that they point to instead of copying the links).
Operation modifiers valid in copy-in and copy-pass modes:
-d, --make-directories Create leading directories where needed
-m, --preserve-modification-time
Retain previous file modification times when
creating files
--no-preserve-owner Do not change the ownership of the files
--sparse Write files with large blocks of zeros as sparse
files
-u, --unconditional Replace all files unconditionally
-?, --help give this help list
--usage give a short usage message
--version print program version
Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.
Examples:
- To create a *.cpio file : We can create *.cpio files containing files and directory with the help of cpio command.
Here -ov is used as -o create the new archive and -v list the files processed.
admin# ls
file1 file2
admin# ls | cpio -ov > /home/admin/compress.cpio
compress.cpio
file1
file2
1 block
- To extract a *.cpio file: We can extract *.cpio files containing files and directory with the help of cpio command.
admin# mkdir test
admin# cd test/
test# cpio -iv < /home/admin/compress.cpio
compress.cpio
file1
file2
1 block
- To create *.tar archive file using cpio: The cpio helps to create a *.tar archive.
admin# ls
test1 test2
admin# ls | cpio -ov -H tar > /home/admin/file.tar
file.tar
test1
test2
5 blocks
- To extract *.tar archive file using cpio: The cpio helps to extract *.tar files containing files and directory.
admin# mkdir test
admin# cd test
test# cpio -iv -F /home/admin/file/tar
file.tar
test1
test2
4 blocks
- To create a *.cpio archive with selected files: We can create *.cpio files containing specific files with the help of cpio command.
admin# ls
test1 test2
admin# find . -iname "test*" | cpio -ov > /home/admin/files.cpio
./test2
./test1
1 block
- To create a *.tar archive with selected files: We can create *.tar files containing specific files with the help of cpio command.
admin# find . -iname "test*" | cpio -ov -H tar > /home/admin/files.tar
./test2
./test1
4 blocks
- To only view *.tar archive file using cpio: The cpio helps to view *.tar files containing files and directory.
admin# cpio -it -F /home/admin/files.tar
test2
test1
3 blocks

