.7z -> .zip 또는 .zip -> .7z 중첩 압축 파일이 가끔 추출 실패하는 이유
중첩 압축 파일 변환 시 간헐적으로 추출이 실패하는 원인은 주로 압축 포맷 구조, 파일 제한, 도구 호환성, 데이터 무결성 문제와 관련이 있습니다.
1. 파일 포맷 제한
- ZIP
- 일반 ZIP은 개별 파일과 아카이브 전체 크기 제한이 4GB (ZIP64 확장 없을 시)입니다.
- CRC-32 체크섬을 사용, 7z보다 무결성 검증이 약함.
- 7z
- 훨씬 큰 파일과 아카이브 지원.
- CRC-32, CRC-64 또는 SHA-256 등 더 강력한 체크섬 지원.
- 문제점: 큰 중첩 파일이 ZIP 제한을 초과하면 추출이 실패할 수 있음.
2. 중첩 압축과 압축률
- 이미 압축된 파일을 다시 압축할 경우 문제가 발생할 수 있음.
- 예:
archive.7z 안에 file.zip이 있는 경우, 다시 압축하면 일부 추출 도구에서 데이터가 깨지거나 읽지 못하는 경우가 있음.
- 일부 ZIP 도구는 중첩 압축 스트림을 완벽히 지원하지 않음.
- AES 암호화된 ZIP이 7z 안에 들어있으면 일부 추출 도구에서 실패 가능.
3. 도구 / 소프트웨어 호환성
- 모든 압축 도구가 중첩 압축을 동일하게 처리하지 않음:
- 7-Zip:
.7z, .zip 모두 robust. - Windows 기본 ZIP 추출기: 중첩 ZIP이나 특수 압축 방식은 실패할 수 있음.
- 추출 실패가 랜덤처럼 보이는 이유:
- 내부 아카이브가 부분적으로 손상됨.
- 파일 헤더를 잘못 해석함.
4. 파일 손상 또는 일부만 추출됨
- 중첩 압축은 작은 손상에도 민감:
- 외부 아카이브 한 바이트가 깨져도 내부 아카이브 인식 불가.
- 이미 압축된 ZIP을 다시 압축하면 구조상 문제가 생길 수 있음.
5. 경로 길이 / 파일명 문제
- 일부 도구는 경로 길이 제한 존재:
- Windows 전통적으로 260자 제한.
- 중첩 압축 시 경로 길이 초과하면 추출 실패.
✅ 실패를 줄이는 방법
- 중첩 압축에는 7z 사용 권장 (더 안정적).
- 이미 압축된 파일을 재압축하지 않기.
- 7-Zip 또는 WinRAR 같은 안정적인 도구 사용.
- 압축 무결성 검사
- 7z:
7z t archive.7z - zip:
zip -T archive.zip 또는 7z t archive.zip
- 경로 길이를 짧게 유지.
- 중첩 압축에서 암호화 ZIP과 7z 혼합 금지.