清单 10. 创建一个新的目录作为复制文件的目标
$ tar cpf - .|(mkdir /tmp/mc; cd /tmp/mc; tar xvpf -)
就其本身而言,tar 是一种非常有用的工具,可用于复制文件和目录结构。然而,当您使用它通过网络来复制文件时,才能真正体现出它的价值。在研究这种诀窍之前,先来使用另一种存档工具 cpio,这也是一种基本的处理方法。
使用 cpio
cpio 工具类似于 tar 工具,但是除了接受指定的文件或目录之外,您必须为它提供一个文件列表。如果您只希望复制特定的文件,那么这个工具可能更加实用。例如,要创建一个包含特定目录的 cpio 存档,您可以使用清单 11 中的命令。
清单 11. 创建包含特定目录的 cpio 存档
$ ls ./dira ./dirc |cpio -ov > diranc.cpio
这个命令的 ls 部分输出将要复制的文件列表(在本示例中是两个目录中的内容)。后半部分是用于将它们复制到存档中的 cpio 命令。对这个命令进行分析,其中包括两个选项:
通过将 cpio 的输出重定向到一个新的文件,可以创建实际的存档。
上面的命令存在一定的局限,它只能复制那些显式列出的文件。要复制整个目录,最好的方法是使用 find 命令(请参见清单 12)。
清单 12. 使用 find 命令复制整个目录
$ find . |cpio -ov >archive.cpio
要从 cpio 存档中提取,可以使用 i 命令行选项。您还应该使用 d 选项确保重新创建那些在存档中存在、而在目标结构中不存在的目录。同时使用这两个选项,您可以将文件从一个目录复制到另一个目录,如清单 13 所示。
标签: