| ||
|
| Linux首页 | Linux论坛 | 论坛精华 | 开源新闻 | 技术文章 | 专题专栏 | 新手指南 | 迁移方案 | 产品方案 | 开源项目 | 开源图书 | 软件下载 | 人才招聘 | Linux博客 |
| 您的位置:
Linux时代 > 技术文档 > 新手入门 >
如何移动UNIX 目录
有时候,您需要将整个 UNIX 目录树复制到相同系统中其他的位置或不同的系统。有许多种不同的方法可以完成这项操作,但并非所有的方法都可以保持信息数量不变或兼容于不同的系统。本文讨论了 UNIX 中各种可用的选项,以及如何最好地使用它们来完成相应的任务。 通常,UNIX® 管理员都拥有一套常用的辅助进程管理的关键实用工具、诀窍和系统。本文提供了各种用于简化各个过程的关键实用工具、命令行链和脚本。这些工具中的一部分来自于操作系统,而大部分的诀窍则来源于长期的经验积累和减轻系统管理员的工作压力的要求。本系列文章主要专注于最大限度地利用各种 UNIX 环境中可用的工具,包括简化异类环境中的管理任务的方法。 如果您使用 对于最简单的应用,
然而,当在
然而,如果 /export/home/mc 已经存在,那么清单 2 会将目录 /home/mc 复制到这个目录中,并创建新的目录 /export/home/mc/mc。 要将一个目录中的内容复制到一个已有的目录中,可以选择源目录中的文件,如清单 3 所示。
cp 工具有一个非常有用的选项,
可以对清单 4 进行如下分析:
然而,除了可以将文件和目录结构复制到磁带,您还可以使用 tar 将它们复制到一个文件。更有用的是,您可以将文件复制到标准输出,然后可以使用管道从标准输入中提取这些文件,并将它们从一个地方复制到另一个地方。通常在系统中复制和重新创建非标准的文件类型时, 例如,清单 5 显示了如何将文件从当前目录复制到一个已有的目录。
可以对清单 5 进行如下分析:
如果您显式地指定了路径,那么
有些 tar 变种可以去掉开头的正斜杠,这使得您可以将文件提取到任何位置。要确保总可以将文件放到需要的位置,您应该使用清单 7 中的命令从当前目录中添加文件。
与
请注意,如果系统的 tar 不支持长路径名,那么它可能不支持更新的 tar 格式。GNU tar 支持新的 tar 格式,并且支持长的或者非常深的路径名。 缺省情况下,大多数 tar 变种可以正确地复制和重新创建文件和目录,并保持相同的所有权和权限信息,然而,如果作为 root 用户运行,那么有些变种会改写这个信息,并在提取文件的时候改变其所有权。您可以使用
最后,您还可以通过扩展这个命令的后半部分(请参见清单 10),创建一个新的目录作为复制这些文件的目标。
就其本身而言,tar 是一种非常有用的工具,可用于复制文件和目录结构。然而,当您使用它通过网络来复制文件时,才能真正体现出它的价值。在研究这种诀窍之前,先来使用另一种存档工具 cpio,这也是一种基本的处理方法。 cpio 工具类似于 tar 工具,但是除了接受指定的文件或目录之外,您必须为它提供一个文件列表。如果您只希望复制特定的文件,那么这个工具可能更加实用。例如,要创建一个包含特定目录的 cpio 存档,您可以使用清单 11 中的命令。
这个命令的
通过将 cpio 的输出重定向到一个新的文件,可以创建实际的存档。 上面的命令存在一定的局限,它只能复制那些显式列出的文件。要复制整个目录,最好的方法是使用
要从 cpio 存档中提取,可以使用
因为在这个命令的两个部分中都使用了详细模式,所以可以确认创建的和提取的存档的大小是否相同。在本示例中,这两项操作都使用了 46 个块。 请注意,如果目标中的文件具有相同的、或更新的修改时间,那么 cpio 不会覆盖这些文件。 在 UNIX 中通过网络传输文件的常用方法是使用网络文件系统 (NFS) 装入远程目录,然后进行与本地目录之间的复制。这是一种比较简单的解决方案,但对于各种各样的情况,它并不总是可行的或实用的。 通过网络复制文件的最简单的方法之一是使用 tar 或 cpio 创建存档文件,然后可以通过网络传输这个存档文件。这种方法具有一些优点,比如可以自由选择如何以及何时进行文件的复制,但它也有一些缺点,包括复制过程的复杂性,以及在源系统中创建存档和将该存档复制到目标系统时保存完整的重复文件的磁盘空间需求。 正如您所看到的,创建存档非常简单:
然后,您可以使用合适的方法对该文件进行复制,例如,使用 cp 和 NFS 复制该文件,或使用 FTP 或 SFTP 将该文件传输到远程系统。 然而,使用存档文件的方法并不是一种特别高效的方法。您可以通过压缩来提高其效率。 如果您使用 cpio 或 tar 创建存档文件,并通过慢速的连接对文件进行复制(例如 WAN 或 Internet,而不是 LAN 环境),那么可以在传输存档文件前对其进行压缩处理,这样会节省传输的时间。可以根据您所需的压缩级别选择合适的压缩格式。 使用存档的方法非常简单。您可以选择在创建存档之后对其进行压缩,如清单 15 所示。
要完成这项操作,您还可以使用管道生成存档的压缩版本(请参见清单 16)。
清单 16 中方法的优点是,它可以使用各种版本的 tar、cpio 或任何其他的存档工具。它还适用于各种不同的平台,而这些平台中的不同变种的 tar 可能并不一定支持联机压缩处理。如果安装了 GNU 版本的 tar,那么您可以使用带
在系统之间进行目录复制的另一种方法是,使用清单 16 中所示的管道解决方案,但需要使用远程 Shell 工具作为目标。 将典型的 这两种方法使用了相同的基本命令行结构(请参见清单 18)。
除了在远程系统中执行目标 请记住,根据远程 Shell 的配置,在远程计算机上进行身份验证时,您可能需要输入密码。ssh 可能也会使用相同的处理方法。清单 19 指定了用户/主机的组合。
为了在慢速的连接上实现更好的性能,您应该使用压缩处理,如清单 20 所示。
rsh 和 ssh 具有比较简单的命令行格式,这使得从远程系统中进行复制的过程变得更加简单。例如,rcp 与 rsh 非常接近,您可以使用清单 21 中的命令。
您必须使用
上面所有的解决方案都主要考虑对文件的复制,包括本地的以及通过网络的复制。然而,它们在每次进行复制操作时,都会复制整个目录结构,而这并不总是必需的。有时,您只需要复制那些在上次复制操作之后进行过更改的文件,从本质上说是进行同步,而不是彻底的再次复制。 如果您使用 tar 或 cpio,那么通过显式地指定存档中需要包含的文件,您可以实现基于时间的同步。例如,如果您使用 cron 来运行同步任务,那么您可以使用下面的命令,创建仅包括在前一天进行了更改的文件的存档(请参见清单 23)。 清单 23. 创建仅包括在前一天进行了更改的文件的存档
要实现更健壮的同步操作,您可以使用 rsync 工具,它是一种免费的软件实用工具,可以高效地通过网络交换文件。对于复制和同步文件,尤其是在较慢的连接中,rsync 工具可能是一种有效的方法。 当您在 UNIX 中复制文件和目录树时,无论是在相同的系统中还是在通过各种类型的网络连接的不同系统之间,都可以选择使用各种各样的工具和方法。究竟使用哪一种工具,取决于实际的情况和环境。我倾向于使用 tar,因为它是我使用过的最能够兼容于各种不同 UNIX 系统的工具。对于使用 Linux® 环境的用户来说,scp 工具是大多数 Linux 分发版中的标准组件,它可能更加合适。 原文链接:http://www-128.ibm.com/developerworks/cn/aix/library/au-satdirmigration.html 本文被浏览次
| ||||||||||||||||||||||||||||||||||
| 关于我们 | 联系方式 | 广告合作 | 诚聘英才 | 网站地图 | 免费注册 |
Copyright © 2001-2006 ChinaUnix.net All Rights Reserved 感谢所有关心和支持过ChinaUnix的朋友们 |