ZIP의 파일 목록이 보인다고 그 안의 파일 내용을 정상적으로 읽을 수 있다는 뜻은 아닙니다. 항목 이름과 디렉터리 정보는 남았지만 내용 일부가 바뀌면 CRC 검사에서 실패할 수 있습니다. 목록 조회·내용 읽기·추출 완료를 다른 단계로 확인해야 손상된 자료를 정상 백업으로 오해하지 않습니다.
먼저 구분할 조건
CRC는 ZIP에 기록된 항목의 내용이 기대한 값과 맞는지 확인하는 데 쓰입니다. 파일 이름이나 ZIP의 전체 크기만 비교하는 검사와 다릅니다. CRC 오류는 손상의 단서가 될 수 있지만 원본의 내용이 올바른지, 믿을 수 있는 제공자인지까지 알려 주지는 않습니다. 파일이 정상 다운로드됐다고 보고되는 경우에도 압축 항목을 실제로 읽거나 검사하는 단계를 추가할 수 있습니다.

직접 확인한 예제와 방법
가상 텍스트 example.txt 하나를 압축하지 않는 저장 방식으로 ZIP에 넣었습니다. 사본에서는 항목의 내용 바이트 하나만 바꾸고 목록과 저장된 CRC는 유지했습니다. Python 3.12.14로 손상본의 namelist를 읽으면 example.txt가 보였지만 그 파일의 내용을 read로 읽을 때 BadZipFile의 CRC 오류가 발생했습니다. 원본과 손상본의 전체 바이트 수는 같습니다. 작은 손상 사본을 의도적으로 만든 시험이며 업무 복구용 파일이 아닙니다.
| 확인 항목 | 관찰 결과 |
|---|---|
| 손상본 항목 목록 | example.txt 조회 가능 |
| 파일 내용 읽기 | BadZipFile / CRC 오류 |
| 원본·손상본 크기 | 동일 |
결과를 해석하는 기준
이 예제는 목록이 보이고 크기가 같아도 내용 무결성 검사에서 실패할 수 있다는 점을 보여 줍니다. 파일명·항목 수가 정상이라는 확인만으로 백업을 승인하면 이런 차이를 놓칩니다. 반대로 압축 앱이 오류를 보고했다고 내용을 임의로 수정해 검사를 통과시키는 것도 원래 자료를 복원했다는 뜻이 아닙니다.
CRC 검사가 통과해도 기대한 모든 항목이 있는지와 실제 업무 내용은 별도로 확인해야 합니다. 중복 경로 ZIP은 CRC가 정상이어도 추출 뒤 파일 수가 줄 수 있습니다. CRC·경로 목록·내용 해시·파일 열기 검사는 서로 다른 정보를 주므로 하나만 보고 전체 상태를 단정하지 않습니다.
새 다운로드도 같은 오류를 낼 때
작성 예제로 한 항목이 매번 같은 CRC 오류를 보고하는 상황을 생각해 볼 수 있습니다. 전송 중 우연한 손상인지 제공된 원본 자체의 문제인지 나눠 확인해야 합니다. 신뢰 가능한 제공자의 원본 목록과 해시가 있으면 확인 범위를 넓힐 수 있습니다.
| 상황 | 확인할 질문 | 먼저 할 일 |
|---|---|---|
| 한 사본만 오류 | 다른 정상 사본이 있나 | 원본과 크기·해시·읽기 비교 |
| 매번 같은 항목 오류 | 제공 원본도 같은 상태인가 | 재압축본과 기대 목록 요청 |
| 검사는 통과·파일 수는 적음 | 중복 경로가 있나 | CRC 외의 경로 검사 추가 |
오류가 없어졌다는 사실만으로 업무 자료의 정확성을 승인하지 않습니다. 필요한 항목이 모두 있고 정상적으로 읽히는지도 대조해야 합니다.
내 자료에서 확인할 순서
- 원본 ZIP과 실패한 사본을 보존하고 파일 크기·다운로드 위치·오류 문구를 기록합니다. 손상본 위에 반복 저장하지 않습니다.
- 항목 목록 조회와 전체 검사 또는 내용 읽기를 구분해 실행합니다. 압축 앱이 검사 기능을 제공한다면 그 결과를 확인합니다.
- 오류가 발생한 항목 이름과 경로를 적고 다른 항목의 성공·실패도 구분합니다. 일부가 읽혔다고 전체를 정상으로 승인하지 않습니다.
- 신뢰 가능한 제공 페이지에서 정상 원본을 다시 확보하거나 제공자에게 재압축본과 원본 목록을 요청합니다. 출처가 불명확한 복구 프로그램을 바로 실행하지 않습니다.
- 새 빈 폴더에서 정상 사본을 검사·해제하고 기존 업무 파일과 섞지 않습니다. 기대한 경로·개수·대표 내용을 비교합니다.
- 백업 검수에서는 검사 로그와 실제 복원 결과를 보존합니다. 원본의 신뢰 가능한 해시가 있다면 다운로드 파일과 별도로 대조합니다.
잘못 바꾸었거나 확인이 어려울 때
재다운로드한 파일도 같은 항목에서 오류가 나면 제공된 원본 자체의 문제일 수 있습니다. 오류를 무시해 일부 파일을 추출하는 것은 확인 범위를 줄이는 작업이지 전체 복구의 증거가 아닙니다. 중요한 자료라면 성공한 부분과 손상 부분을 분리하고 원본 소유자와 필요한 최종 파일을 확인해야 합니다.
정상 완료 기준
정상 완료는 필요한 항목 전체가 무결성 검사와 실제 읽기를 통과하고, 추출한 경로·파일 수·내용이 기대한 자료와 맞는 상태입니다. 공개 손상본은 목록 조회가 가능해도 내용 읽기에서 오류가 나야 실험 조건과 일치합니다. 손상 예제를 검사에서 통과하도록 고치는 작업은 이 글의 목적이 아닙니다.
같은 예제를 다시 확인할 자료
샘플은 저장 방식의 텍스트 항목 한 개에서 바이트 하나를 바꿨습니다. 임의의 손상 ZIP을 복구할 수 있다는 안내가 아닙니다. CRC는 보안 인증이나 악성 파일 검사도 아니므로 출처와 내용의 적합성을 별도로 확인하십시오.
- CRC 원본 ZIP (141 bytes)
- 의도적으로 손상한 CRC 실험 ZIP (141 bytes)
자료는 비민감 가상 예제입니다. 손상·불일치라고 표시한 파일은 차이를 확인하는 실험용이며 업무 원본으로 사용하지 않습니다. 파일 크기·SHA-256 목록으로 내려받은 원본을 확인할 수 있습니다.
목록과 보존 결과의 다른 차이는 같은 이름 ZIP, 전체 바이트 비교는 SHA-256 실험에서 확인할 수 있습니다.
