今日、私はファイル名の1つが100文字を超えるため、WindowsでCommons-compressを使用してJavaを使用してファイルを圧縮できないという問題に直面しました。私は解決策を探していて、次のことを見つけました。
~によるとhttps://commons.apache.org/proper/commons-compress/tar.html
TAR形式にはさまざまな方言があり、TAR形式も異なる場合があります。 tarパッケージには、既存の多くの方言を読むための特別なケースが含まれており、デフォルトでは元の形式(しばしば「ustar」と呼ばれる)でアーカイブを生成しようとします。このネイティブ形式は100文字を超えるファイル名または8GiBを超えるファイル名をサポートしません。これらの制限を超えるエントリを書き込もうとすると、デフォルトでtarballは失敗します。 「ustar」はすべての既存のtar方言に共通であり、ほとんどの既存のツールで理解されています。
LONGFILE_POSIX: POSIX 1003.1 で定義した PAX 拡張ヘッダーを使用します。ほとんどの最新のtar実装では、これらのアーカイブを抽出できます。 Commonsは1.4を圧縮するので
ドキュメントには、「最も近代的なtarの実装」が記載されています。 PAXヘッダーで100文字を超えるファイル名をサポートしない一般的なtar実装は何ですか? PAX 拡張ヘッダーをサポートしていない tar 実装はまだ一般的に使用されていますか? Linux および Unix で一般的な tar 実装を使用して、Windows で Commons-Compress で生成された .tar.gz ファイルを開くことができる必要があります。
答え1
次の内容を含む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は同じ圧縮パッケージを開き、ファイルの圧縮を正常に解決できます。
Commons-Compressの拡張/フォーマットについてはわかりません。http://www.gnu.org/software/tar/manualそんなことはありません。
私がテストできるように、このようなアーカイブを共有できますか?