清单 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 将该文件传输到远程系统。
然而,使用存档文件的方法并不是一种特别高效的方法。您可以通过压缩来提高其效率。
标签: