Skip to content

Zip

Command to package and compress (archive) files.

How to use

$ zip <flags> <output> <list_of_files>

Flags

  • -r: 서브디렉터리를 포함하여 압축한다.
  • -F: 한글파일을 포함하는 zip 압축.
  • -e: 암호를 설정한다.

Create a Zip File

To create a zip file, enter:

$ zip filename.zip input1.txt input2.txt resume.doc pic1.jpg

To include the contents of a directory in a zip archive, enter:

$ zip -r backup.zip /data

깨진 Zip 파일 복구

Linux 환경에서는 zip 명령어의 -FF 옵션을 사용해 볼 수 있습니다.

zip -FF 손상된파일.zip --out 복구된파일.zip

정상 복구 되었을 때 zip64 관련 문제점: 출력 분석

일반적인 핵심은 마지막 부분입니다:

Central Directory found...
Zip64 EOCDR found ( 1 12679424190)...
Zip64 EOCDL found ( 1 12679424246)...
EOCDR found ( 1 12679424266)...

원인 분석: 이 ZIP은 약 ~12.7GB (12,679,424,266 bytes)로, 표준 ZIP의 4GB 한계를 초과하여 Zip64 확장 포맷을 사용합니다. 문제는 높은 확률로 다음 중 하나였을 겁니다:

  • Zip64 Central Directory 손상/불일치 — 아카이브가 Zip64 EOCDR(End of Central Directory Record)을 사용하는데, 이 레코드의 오프셋이나 크기 정보가 실제 데이터와 맞지 않았을 가능성. Zenodo에서 다운로드 중 일부 바이트가 누락/변경되면 흔히 발생합니다.
  • 불완전한 다운로드 — 12.7GB 파일이다 보니 네트워크 중단으로 파일 끝부분이 잘렸거나, Central Directory가 올바르게 기록되지 않았을 수 있습니다.
  • Zip64 호환성 문제 — 아카이브를 만든 도구와 읽는 도구 간의 Zip64 구현 차이.

zip -FF가 한 일은 "Central Directory" 에 의존하지 않고 파일 내의 "Local File Header (PK\x03\x04)"를 하나씩 스캔하면서 아카이브를 재구성한 것입니다. 모든 엔트리가 copying:으로 정상 처리되었고 에러 메시지가 없으니, "recovered.zip"은 정상적으로 사용 가능할 겁니다.

unzip -t recovered.zip 으로 무결성 검증해보시면 확실합니다.

See also

Favorite site