Answers:
在这方面,不同的tar实用程序的行为有所不同,因此请务必小心。对于尚未创建的tar文件,请始终在提取目录之前列出目录。
命名文件将从tarfile中提取出来,并写入tarfile中相对于当前目录指定的目录中。使用要提取的文件和目录的相对路径名。
tar归档文件中包含的绝对路径名是使用绝对路径名解包的,也就是说,不会删除前导斜杠(/)。
对于具有完整(绝对)路径名的tar文件,例如:
/tmp/real-file
/etc/sneaky-file-here
...如果提取这样的文件,则最终将得到两个文件。
默认情况下,GNU tar
/
在输入或输出上放置一个前导,并抱怨包含..
组件的文件名。有一个选项可以关闭此行为:
--absolute-names
-P
不要从文件名中去除前导斜杠,并允许包含
..
文件名成分的文件名。
...如果您在不使用该-P
选项的情况下使用GNU tar提取了全路径的tar文件,它将告诉您:
tar:
/
从成员名称中删除开头
并将文件提取到当前目录的子目录中。
它什么也没说,并且表现为Solaris tar -它将创建和提取具有完整/绝对路径名的tar文件。
HP-UX tar:( 欢迎使用更好的在线参考)
警告
无法将绝对路径名还原到相对位置。
-P
不要
/
从路径名中去除前导斜杠()。默认设置是去除前导斜杠。
有-P
用于实施方案tar
在MacOS,FreeBSD和NetBSD的为好,以相同的语义,增加该tar
上的FreeBSD和MacOS将“垃圾提取归档输入其路径名含有..
或者其目标目录将通过一个符号链接来改变”没有-P
。
-/
提取档案时,请勿在文件名中去除前导斜杠。包含绝对路径名的Tar归档文件通常不是一个好主意。在其他tar实现中,如果不破坏现有文件,可能永远无法提取它们。因此,请使用星号,在提取模式下,默认情况下会从文件名中去除前导斜杠。
..
存在安全风险,因此请使用star
或last gtar
。还可以查看star
示例tar归档文件,其中包括手工制作的tar
标头,这些标头导致大多数tar
实现甚至在没有警告的情况下删除文件。
tar
Solaris,AIX和HP-UX吗?如果是这样,为什么仅指出GNU tar,尤其是如果(再次根据上面的引用),它们已经变为不接受..
?输入格式错误的问题当然是错误,我想您已经将它们报告为错误了。
star
(最早的免费实现)必须被视为不完整。
-P
在这方面,GNU / Linux的tar有一个影响其行为的选项。