o 选项将文档复制到存档。 v 选项在复制文档时显示文档列表,这可用于对复制过程进行确认。通过将 cpio 的输出重定向到一个新的文档,能够创建实际的存档。
上面的命令存在一定的局限,他只能复制那些显式列出的文档。要复制整个目录,最好的方法是使用 find 命令(请参见清单 12)。
清单 12. 使用 find 命令复制整个目录
$ find . |cpio -ov >archive.cpio
|
要从 cpio 存档中提取,能够使用 i 命令行选项。您还应该使用 d 选项确保重新创建那些在存档中存在、而在目标结构中不存在的目录。同时使用这两个选项,您能够将文档从一个目录复制到另一个目录,如清单 13 所示。
清单 13. 同时使用 i 和 d 选项
$ find . |cpio -ov |(cd /tmp/mc; cpio -idv)
.
./.bash_aliases
./.bash_history
./.bash_path
./.bash_profile
./.bash_vars
./.bashrc
./xmlsimple.pl
./rest.xml
46 blocks
.
.bash_aliases
.bash_history
.bash_path
.bash_profile
.bash_vars
.bashrc
xmlsimple.pl
rest.xml
46 blocks
|
因为在这个命令的两个部分中都使用了周详模式,所以能够确认创建的和提取的存档的大小是否相同。在本示例中,这两项操作都使用了 46 个块。
请注意,假如目标中的文档具备相同的、或更新的修改时间,那么 cpio 不会覆盖这些文档。
通过网络进行复制
在 UNIX 中通过网络传输文档的常用方法是使用网络文档系统 (NFS) 装入远程目录,然后进行和本地目录之间的复制。这是一种比较简单的解决方案,但对于各种各样的情况,他并不总是可行的或实用的。
通过网络复制文档的最简单的方法之一是使用 tar 或 cpio 创建存档文档,然后能够通过网络传输这个存档文档。这种方法具备一些长处,比如能够自由选择如何连同何时进行文档的复制,但他也有一些缺点,包括复制过程的复杂性,连同在源系统中创建存档和将该存档复制到目标系统时保存完整的重复文档的磁盘空间需求。
正如您所看到的,创建存档很简单:
清单 14. 创建一个存档
$ tar cf mydir.tar .
|
然后,您能够使用合适的方法对该文档进行复制,例如,使用 cp 和 NFS 复制该文档,或使用 FTP 或 SFTP 将该文档传输到远程系统。
然而,使用存档文档的方法并不是一种特别高效的方法。您能够通过压缩来提高其效率。
使用压缩
假如您使用 cpio 或 tar 创建存档文档,并通过慢速的连接对文档进行复制(例如 WAN 或 Internet,而不是 LAN 环境),那么能够在传输存档文档前对其进行压缩处理,这样会节省传输的时间。能够根据您所需的压缩级别选择合适的压缩格式。
使用存档的方法很简单。您能够选择在创建存档之后对其进行压缩,如清单 15 所示。
清单 15. 在创建存档之后对其进行压缩
$ tar cf mydir.tar .
$ bzip2 mydir.tar
|
要完成这项操作,您还能够使用管道生成存档的压缩版本(请参见清单 16)。
清单 16. 使用管道生成存档的压缩版本
$ tar cf - .| bzip2 >mydir.tar.bz2
|
清单 16 中方法的长处是,他能够使用各种版本的 tar、cpio 或任何其他的存档工具。他还适用于各种不同的平台,而这些平台中的不同变种的 tar 可能并不一定支持联机压缩处理。假如安装了 GNU 版本的 tar,那么您能够使用带 z 命令行选项的 tar 命令,这样就能够使用 Gzip 进行压缩处理(请参见清单 17)。
清单 17. 使用带 z 命令行选项的 tar
$ tar zcf mydir.tar.gz .
|
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




