是否可以根据 tar 文件知道何时需要使用 tar 或 gtar
例如
我有一些 tar 文件
sometarfile.tar
如何知道是否需要使用 tar 或 gtar 命令?
是否可以检查 tar 文件并根据此文件了解要运行哪个命令?
答案1
不,tar 文件格式不存储有关生成它的程序的任何信息。
编辑:
Linux 版本的文件实用程序可以检测 Solars 和 GNU tar 生成的文件之间的差异。它通过扩展搜索以在标头中包含格式和版本信息来实现这一点。GNU 生成的 tar 文件有ustar
(即 ustar 后面的 2 个空格),而 Solaris tar 文件有ustar 00
。
你可以通过添加以下行来使 Solaris 版本的文件以与 Linux 版本类似的方式工作
257 string ustar\040\040 USTAR tar archive (GNU)
在线以上
257 string ustar USTAR tar archive
在/etc/magic
。话虽如此,但我不知道并且找不到对版本信息进行编码的标准,因此我认为这是一个不可靠的黑客手段。
我不能说我曾经找到过 GNU tar 无法处理而 Solaris tar 可以处理的 tar 文件(正如你所知,反之则不然),因此在你的情况下,我只会使用gtar
它从你拥有的任何 tar 文件中提取文件。
关于您在评论中提出的问题。这不是一个好主意,因为退出状态 >0 仅表示发生了错误,而该错误可能不是“我不明白这种格式”的错误。