linux操作系统下cpio命令介绍及案例应用

韵味老鸟 2024-09-15 02:36:01

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

0 阅读:0