0

如何仅 tar 目录中存在的文件。我曾尝试tar -cvf /tmp/test.tar /tmp/mylog.doc在主目录中,但是当我解压它时,内容tmp也包含在目录中。我只需要该文件mylog.doc存在于 tar 文件中。我看到类似的查询 Tarring only the files of a directory。但无法从中获得太多帮助。

4

2 回答 2

4

使用-C命令行参数来指示您想要工作的目录。然后,您可以使用您包含的相对于该目录的文件名。

tar -cvf /tmp/test.tar -C /tmp mylog.doc

请注意,这不适用于 tar 文件本身。

于 2013-03-27T08:34:28.123 回答
0
cd sourcedir ; tar cvf archive.tar ./file_to_tar

因为使用 "/path/to/file" 或 "./path/to/file" : 将在生成的 tar 文件中添加 "path/to/" (除非特定(也可能是不可移植的)选项告诉 tar 否则)

注意:一些不太老的生产系统在提取时仍然无法摆脱前导的“/”。

在那些“不太老”的系统上:

tar cvf /tmp/hosts-backup.tar /etc/hosts
cd /secure/location
tar xvf /tmp/hosts-backup.tar

覆盖文件 /etc/hosts,而不是在 /secure/location 下输出“./etc/hosts”文件!(就像大多数“最近”的 tar 现在所做的那样:他们现在都默默地忽略尾随的“/”,使路径相对而不是绝对,这是 99.9% 的人想要的)

我最近被这个烧毁了:想要提取一个日志,该日志最终覆盖了原始位置(因此覆盖了那里更新的日志文件)。在系统上第一次使用 tar 之前,请务必检查这一点。(有一些解决方法,但不太简单:chroot 和其他命令,例如“sar”)

于 2013-03-27T12:12:33.560 回答