cpio(Copy In and Out)是一种在类 Unix 操作系统中处理归档文件的多功能工具。与 tar 不同,cpio 有其独特的优势和使用场景,特别是在与其他命令结合使用时。本文将带你了解 cpio 的基础知识、用法及实际示例。
cpio 是一个命令行工具,用于创建或提取归档文件。它可以从标准输入读取文件列表,然后创建归档文件,或者从归档文件中提取文件。cpio 常用于备份、恢复、和软件安装等任务。
cpio 有三种主要的操作模式:
find /path/to/source | cpio -o > archive.cpio
此命令使用 find 查找 /path/to/source 目录下的所有文件,并将其通过管道传递给 cpio,生成一个名为 archive.cpio 的归档文件。
cpio 的输入需要来自于标准输入或管道,并且输入的是文件名而不是文件内容,以下是几个示例:
nvidia@nvidia-desktop:~/tmp$ cat a.txt
123
nvidia@nvidia-desktop:~/tmp$ cpio -o
a.txt
�q������f�a.txt123
�q
TRAILER!!!1 block
nvidia@nvidia-desktop:~/tmp$ echo a.txt | cpio -o
�q������f�a.txt123
�q
TRAILER!!!1 block
nvidia@nvidia-desktop:~/tmp$ ls | cpio -o
�q������f�a.txt123
�q
TRAILER!!!1 block
cpio -o 直接将内容输出至标准输出,所以,一般我们会将输出重定向到文件
nvidia@nvidia-desktop:~/tmp$ find ./ > ../a.cpio
nvidia@nvidia-desktop:~/tmp$ echo a.txt | cpio -o > ../a.cpio
1 block
nvidia@nvidia-desktop:~/tmp$ ls | cpio -o > ../a.cpio
1 block
cpio -i < archive.cpio
此命令将提取 archive.cpio 归档文件中的所有文件到当前目录。
实例
nvidia@nvidia-desktop:~$ cpio -i < a.cpio
1 block
nvidia@nvidia-desktop:~$ ls
a.cpio a.txt
nvidia@nvidia-desktop:~$ cat a.txt
123
find /path/to/source -print | cpio -pdm /path/to/destination
此命令将 /path/to/source 目录下的所有文件复制到 /path/to/destination 目录,同时保留文件属性。
可以使用 gzip 或 bzip2 来压缩或解压 cpio 归档文件:
压缩
find /path/to/source -print | cpio -o | gzip > archive.cpio.gz
实例
nvidia@nvidia-desktop:~/tmp$ find ./ | cpio -o | gzip > a.cpio.gz
1 block
解压
gzip -d < archive.cpio.gz | cpio -i
实例
nvidia@nvidia-desktop:~$ gzip -d < tmp/a.cpio.gz | cpio -i
1 block
nvidia@nvidia-desktop:~$ ls
a.cpio a.cpio.gz a.txt
cpio 是一个强大的工具,适用于多种文件处理任务。通过与其他命令结合使用,它能够实现更复杂的文件操作。无论是创建备份、恢复数据还是安装软件,cpio 都是一个值得掌握的工具。希望这篇文章能帮助你更好地理解和使用 cpio。