手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

如何移动UNIX 目录

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
  • cd DIR 更改了目录。请注意,这个目录在进行文档复制之前应该已存在。
  • tar xf - 从标准输入中提取文档。
  • 通过使用圆括号将上面的两个部分括起来,能够有效地将他们作为一个而不是两个命令来处理,并且 cd 命令在提取存档之前进行。
  • 两者之间的管道 (|) 将第一个 tar 的标准输出传入到第二个 tar 的标准输入,并且高效地将文档复制到一个并不存在的存档文档,然后再从其中提取文档。
  • 假如您显式地指定了路径,那么 tar 命令能够保持存档中所包含的文档的完整路径。清单 6 使用显式的路径将文档复制到存档中,这意味着,不能将这些文档提取到其他的地方,只能返回到他们的初始位置。


    清单 6. 显式地指定路径

    $ tar cf  myhome.tar /home/mc
    
                

    有些 tar 变种能够去掉开头的正斜杠,这使得您能够将文档提取到任何位置。要确保总能够将文档放到需要的位置,您应该使用清单 7 中的命令从当前目录中添加文档。


    清单 7. 从当前目录添加文档

    $ cd /home/mc
    
                $ tar cf myhome.tar .
    
                

    cp 相比,tar 命令有一个长处,那就是通过添加 v 命令行选项以打开周详模式,您能够在将文档从源复制到目标的过程中监控文档的传输。通常,最好是在提取文档的 tar 命令中使用这个选项,而不是在创建存档的 tar 命令中使用,因为他能够确保正确地对文档进行复制,而不是证实对其进行了正确的读取(请参见清单 8)。


    清单 8. 添加 v 命令行选项

    $ tar cf - .|(cd /tmp/mc; tar xvf -)
    
                ./
    
                ./.bash_aliases
    
                ./.bash_history
    
                ./.bash_path
    
                ./.bash_profile
    
                ./.bash_vars
    
                ./.bashrc
    
                ./xmlsimple.pl
    
                ./rest.xml
    
                ...
    
                

    请注意,假如系统的 tar 不支持长路径名,那么他可能不支持更新的 tar 格式。GNU tar 支持新的 tar 格式,并且支持长的或很深的路径名。

    缺省情况下,大多数 tar 变种能够正确地复制和重新创建文档和目录,并保持相同的任何权和权限信息,然而,假如作为 root 用户运行,那么有些变种会改写这个信息,并在提取文档的时候改变其任何权。您能够使用 p 选项确保保持相应的权限和任何权(请参见清单 9)。


    清单 9. 使用 p 选项

    $ tar cpf - .|(cd /tmp/mc; tar xvpf -)
    
                

    最后,您还能够通过扩展这个命令的后半部分(请参见清单 10),创建一个新的目录作为复制这些文档的目标。


    清单 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 命令。对这个命令进行分析,其中包括两个选项: