오늘 저는 파일 이름 중 하나가 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그런 것은 없습니다.
제가 테스트할 수 있도록 이와 같은 아카이브를 공유해 주실 수 있을까요?