系统管理员工具包: 移动 UNIX 目录
2008-11-12 08:30:33 来源:WEB开发网两者之间的管道 (|) 将第一个 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)。
更多精彩
赞助商链接