linux 操作系统下cpio命令介绍及案例应用
cpio命令是Linux/Unix系统中用于创建、提取和管理归档文件的工具,类似于tar命令。它的名称源于“copy in”和“copy out”
cpio命令概述基本语法bashcpio [options]主要功能创建归档: 将文件复制到一个归档文件中。提取归档: 从归档文件中提取文件。传递复制: 将文件从一个位置复制到另一个位置,而不创建归档。常用选项-v: 显示详细的处理信息。-d: 在提取时创建必要的目录。-u: 替换已存在的文件。-F file: 从指定的文件读取归档。-H format: 指定归档格式(如tar、bin等)。命令选项:
root@meng:~# which cpio
/usr/bin/cpio
root@meng:~# cpio
cpio: You must specify one of -oipt options.
Try 'cpio --help' or 'cpio --usage' for more information.
root@meng:~# cpio --help
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 Use the old portable (ASCII) archive format
-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
CRC's 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.
Report bugs to <bug-cpio@gnu.org>.
命令案例:
root@meng:~# ls
f1.txt.bz2 f2.txt.bz2 m1.txt m1.txt.bak m2.txt meng.txt meng.txt.bz2 rec00001f1.txt s1.txt s2.txt snap tmp
root@meng:~# ls *.txt |cpio -ov >meng.cpio
m1.txt
m2.txt
meng.txt
rec00001f1.txt
s1.txt
s2.txt
2 blocks
root@meng:~# ls
f1.txt.bz2 f2.txt.bz2 m1.txt m1.txt.bak m2.txt meng.cpio meng.txt meng.txt.bz2 rec00001f1.txt s1.txt s2.txt snap tmp
root@meng:~# file meng.cpio
meng.cpio: cpio archive
root@meng:~# cpio -ivd meng < meng.cpio
2 blocks
root@meng:~# ls
f1.txt.bz2 f2.txt.bz2 m1.txt m1.txt.bak m2.txt meng.cpio meng.txt meng.txt.bz2 rec00001f1.txt s1.txt s2.txt snap tmp
root@meng:~# pwd
/root
root@meng:~# cpio -ivd /root/meng < meng.cpio
2 blocks
root@meng:~# ls
f1.txt.bz2 f2.txt.bz2 m1.txt m1.txt.bak m2.txt meng.cpio meng.txt meng.txt.bz2 rec00001f1.txt s1.txt s2.txt snap tmp
root@meng:~# cpio -ivD /root/meng < meng.cpio
cpio: cannot change to directory `/root/meng': No such file or directory
root@meng:~# pwd
/root
root@meng:~# ls
f1.txt.bz2 f2.txt.bz2 m1.txt m1.txt.bak m2.txt meng.cpio meng.txt meng.txt.bz2 rec00001f1.txt s1.txt s2.txt snap tmp
root@meng:~# mkdir meng
root@meng:~# cpio -ivd /root/meng < meng.cpio
2 blocks
root@meng:~# ls
f1.txt.bz2 f2.txt.bz2 m1.txt m1.txt.bak m2.txt meng meng.cpio meng.txt meng.txt.bz2 rec00001f1.txt s1.txt s2.txt snap tmp
root@meng:~# ls meng
root@meng:~# cpio -ivD /root/meng < meng.cpio
m1.txt
m2.txt
meng.txt
rec00001f1.txt
s1.txt
s2.txt
2 blocks
root@meng:~# ls meng
m1.txt m2.txt meng.txt rec00001f1.txt s1.txt s2.txt