有时候,您需要将整个 Unix 目录树复制到相同系统中其他的位置或不同的系统。有许多种不同的方法可以完成这项操作,但并非所有的方法都可以保持信息数量不变或兼容于不同的系统。本文讨论了 UNIX 中各种可用的选项,以及如何最好地使用它们来完成相应的任务。
关于本系列
通常,UNIX® 管理员都拥有一套常用的辅助进程管理的关键实用工具、诀窍和系统。本文提供了各种用于简化各个过程的关键实用工具、命令行链和脚本。这些工具中的一部分来自于操作系统,而大部分的诀窍则来源于长期的经验积累和减轻系统管理员的工作压力的要求。本系列文章主要专注于最大限度地利用各种 UNIX 环境中可用的工具,包括简化异类环境中的管理任务的方法。
使用 cp
如果您使用 -r 命令行选项递归到其子目录中,标准的 cp 命令可用于复制整个目录树。该选项将对非标准的文件执行未知的操作。有些 UNIX 变种和 GNU cp 工具支持 -R 选项,使用该选项可以正确地复制命名管道、链接和其他的文件。
对于最简单的应用,cp 命令可以将目录复制到具有不同名称的新目录(请参见清单 1)。
清单 1. cp 命令—将一个目录复制到具有不同名称的新目录
$ cp -r srcdir destdir
然而,当在 cp 命令中指定源文件和目标位置时,您应该加以小心,因为其处理方式可能对结果有很大的影响。例如,假设您希望将目录 /home/mc 复制到目录 /export/home/mc。如果 /export/home/mc 不存在,那么清单 2 会将目录 /home/mc 复制到 /export/home/mc。
清单 2. 在 cp 命令中指定源文件和目标位置
$ cp -r /home/mc /export/home/mc
然而,如果 /export/home/mc 已经存在,那么清单 2 会将目录 /home/mc 复制到这个目录中,并创建新的目录 /export/home/mc/mc。
标签: