有时候,您需要将整个 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。

要将一个目录中的内容复制到一个已有的目录中,能够选择源目录中的文档,如清单 3 所示。


清单 3. 将一个目录中的内容复制到一个已有的目录中

$ cp -r /home/mc/* /export/home/mc

            

cp 工具备一个很有用的选项,-p 命令行选项,他还能够确保维持每个文档的权限和任何权。

使用 tar

tar 命令最初用来将文档归档到磁带(确切地说,是磁带驱动器)。例如,您能够使用清单 4 中的命令,将当前目录中的文档复制到磁带上。


清单 4. 使用 tar 将当前目录中的文档复制到磁带

$ tar cf /dev/rmt0 .

            

能够对清单 4 进行如下分析:

  • c 选项创建一个新的存档。
  • f 选项使用命令行中的下一个选项作为目标名称。在这个示例中,使用第一个原始磁带设备 (/dev/rmt0)。您还能够使用其中任何的信息创建一个 tar 文档。
  • . 告诉 tar 将任何的文档和目录(连同当前目录下任何的文档和目录)添加到这个存档文档中。

然而,除了能够将文档和目录结构复制到磁带,您还能够使用 tar 将他们复制到一个文档。更有用的是,您能够将文档复制到标准输出,然后能够使用管道从标准输入中提取这些文档,并将他们从一个地方复制到另一个地方。通常在系统中复制和重新创建非标准的文档类型时,tar 命令更加可靠,因为 cp 命令不支持 -R 命令行选项。

例如,清单 5 显示了如何将文档从当前目录复制到一个已有的目录。


清单 5. 将文档从当前目录复制到一个已有的目录

$ tar cf - . | (cd DIR; tar xf - )

            

能够对清单 5 进行如下分析:

  • tar cf - . 对当前目录中的文档创建一个新的存档,输出到标准输出。
  • 文章整理:西部数码--专业提供域名注册虚拟主机服务
    http://www.west263.com
    以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!