今天,我遇到了一个问题,我不能用Java在Windows上使用Compress来解析一个文件,因为其中一个文件名超过100个字符。我在寻找解决办法,发现:
根据https://commons.apache.org/proper/commons-compress/tar.html
TAR格式有几种不同的方言,甚至可能有不同的TAR格式。tar包包含特殊情况,以便读取许多现有方言,默认情况下将尝试创建原始格式的存档(通常称为"ustar")。这种原始格式不支持超过100个字符或大于8个GiB的文件名,如果您试图编写超出这些限制的条目,tar包将默认失败。"ustar“是所有现有tar方言的共同分母,并为大多数现有工具所理解。LONGFILE_POSIX:使用POSIX 1003.1定义的。大多数现代的tar实现都能够提取此类档案。因为公域压缩1.4
文档提到了“最现代的tar实现”。哪些常用的tar实现不支持通过PAX头大于100个字符的文件名?不支持PAX扩展标头的tar实现是否仍然是常用的?我仍然需要能够在Linux和Unix上使用常见的tar实现来打开在Windows上使用Compress创建的.tar.gz文件。
发布于 2020-10-27 10:54:39
我刚刚成功地打包和解压了一个包含以下内容的tar档案:
touch $(for i in {1..222}; do echo -n a; done)
file test.tar
test.tar: POSIX tar archive (GNU)所以Linux中不应该有任何问题,至少Fedora 32。7z/WinRAR既打开相同的归档文件,又成功地解压缩文件。
至于公域压缩扩展/格式,我不知道,因为http://www.gnu.org/software/tar/manual没有类似的东西。
也许您可以共享这样的存档,以便对其进行测试?
https://unix.stackexchange.com/questions/616593
复制相似问题