电脑技术学习

如何移动UNIX目录

dn001

  要将一个目录中的内容复制到一个已有的目录中,可以选择源目录中的文件,如清单 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 - . 对当前目录中的文件创建一个新的存档,输出到标准输出。
  • cd DIR 更改了目录。请注意,这个目录在进行文件复制之前应该已经存在。
  • tar xf - 从标准输入中提取文件。
  • 通过使用圆括号将上面的两个部分括起来,可以有效地将它们作为一个而不是两个命令来处理,并且 cd 命令在提取存档之前进行。
  • 两者之间的管道 (|) 将第一个 tar 的标准输出传入到第二个 tar 的标准输入,并且高效地将文件复制到一个并不存在的存档文件,然后再从其中提取文件。
  •   如果您显式地指定了路径,那么 tar 命令可以保持存档中所包含的文件的完整路径。清单 6 使用显式的路径将文件复制到存档中,这意味着,不能将这些文件提取到其他的地方,只能返回到它们的初始位置。

    标签: