Cpio
cpio 是UNIX操作系统的一个文件备份程序及文件格式。这项工具最初出现于PWB/UNIX,系用于备份磁带,后来也被引进到UNIX System III及System V,并流行开来。
cpio 可以从 cpio 或 tar 格式的归档包中存入和读取文档, 归档包是一种包含其他文档和有关信息的文档。 有关信息包括:文档名, 属主, 时标(timestamp), 和访问权限。 归档包可以是磁盘上的 其他文档, 也可以是磁带或管道.
示例操作和归档格式
cpio 设计的初衷,是用于在磁带设备上,以顺序、连续的方式保存备份的文档归档。cpio 本身不会对任何归档内容进行压缩,为了便于传输,对于 cpio 的输出归档人们经常会使用 gzip 等外部进程进行压缩。
创建归档
使用以下命令可以用当前目录下的所有文档和文档夹来创建新的 cpio 归档文档:
find . -depth -print | cpio -o > /path/archive.cpio
提取归档
cpio 的 copy-input 操作由命令行标识 i 发起。在该过程中,cpio 从标准输入读取已有的归档,然后在操作系统的文档系统中,恢复创建已经被归档的文档。
$ cpio -i -vd < archive.cpio
命令行标识 d 告诉 cpio 按需重建目录。指定命令行标识 v (verbose) 时,提取文档会同时打印其文档名。
除了选项标识外,其余所有命令行参数都是类 shell 的 globbing-模式,归档中,只有文档名匹配的文档才会从中提取出来。下面这个示例从归档 archive.cpio 中提取文档 /etc/fstab :
$ cpio -i -d /etc/fstab < archive.cpio
列出归档文档列表
下面这行命令可以列出指定 cpio 归档中包含的全部文档:
$ cpio -t < archive.cpio
列出归档文档列表在归档内可能包含绝对路径时会很实用(例如 /bin/ls 和 bin/ls)。
复制文档
除上述操作外,cpio 还支持复制文档的操作,该操作由命令行标识 p(pass) 发起。该模式可以同时进行 copy-in 和 copy-out 操作,而不会创建任何归档文档。在该模式下,cpio 从标准输入读取路径名(就像 copy-out 中的那样,但这里不会创建归档文档),然后 cpio 将这些文档和目录复制创建到命令行参数指定的不同位置。
下面这个示例将从当前目录开始,将完整目录树复制到 new-path 路径下。指定标识 m 时,该复制过程会保留文档原有的编辑时间,d 标识会命令 cpio 按需创建目录,指定 u 标识时,复制过程会直接覆盖已经存在的同名文档,v 标识会在标准输出打印复制进度:
$ find . -depth -print | cpio -p -dumv new-path