关于linux:tar只是目录中的文件

tar only the file in the directory

如何仅tar目录中存在的文件。我试过把tar -cvf /tmp/test.tar /tmp/mylog.doc放在家里,但当我打开它时,目录中也包括tmp目录。我只需要文件mylog.doc出现在tar文件中。我看到了类似的问题只清除目录中的文件。但没能从中得到多少帮助。


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

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

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


1
cd sourcedir ; tar cvf archive.tar ./file_to_tar

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

注:有些不太老的生产系统在提取时也无法去掉前导的"/"。

在那些"不那么老"的系统上:

1
2
3
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")。