6.3 用cpio归档
cpio
是类似于tar
的另一种归档格式。它用来将多个文件和文件夹存储为单个文件,同时还能保留所有的文件属性,如权限、文件所有权等。不过,cpio
用得不如tar
那么多。它多用于RPM软件包、Linux内核的initramfs文件等。本攻略将给出几个cpio
的用例。
实战演练
cpio
通过stdin
获取输入文件名,并将归档文件写入stdout
。我们必须将stdout
重定向到一个文件,以接收cpio
的输出。
创建测试文件:
- $ touch file1 file2 file3
将测试文件按照下面的方法进行归档:
- $ echo file1 file2 file3 | cpio -ov > archive.cpio
在上面的命令中:
-o
指定了输出;-v
用来打印归档文件列表。
通过
cpio
,我们能够利用文件的绝对路径进行归档。/usr/somedir就是一个绝对路径,因为它是以根目录(/
)作为路径的起始。相对路径不以/
开头,而是以当前目录作为起始点。例如,test/file表示有一个目录test,而file位于test目录中。当进行提取时,
cpio
会使用绝对路径提取内容。但是tar
会移去绝对路径开头的/
,将之转换为相对路径。
要列出cpio
归档文件中的内容,使用下列命令:
- $ cpio -it < archive.cpio
这个命令会列出给定cpio
归档文件中的所有内容。它从stdin
中读取文件。在该命令中:
-i
用于指定输入;-t
表示列出归档文件中的内容。
要从cpio
归档文件中提取文件,可以使用:
- $ cpio -id < archive.cpio
这里的 -d
用来表示提取内容。
cpio
在覆盖文件时不会发出提示。如果绝对路径上的文件已经存在,cpio
会将其替换。它不会像tar
那样将文件提取到当前目录中。