ZIP은 데비안의 모든 파일을 추출하지 않습니다.

ZIP은 데비안의 모든 파일을 추출하지 않습니다.

내 기계가 작동 Debian 6.0.7하고 Zip 3.0 (July 5th 2008), by Info-ZIP. .zip 파일의 압축을 풀려고 하면 10번 중 2~3번은 모든 내용이 추출되지 않습니다. 2~3개의 파일이 누락될 수 있습니다.

처음에는 파일 크기와 내가 모르는 몇 가지 제한 사항 때문이라고 생각했지만 나중에 150MB의 작은 파일에서도 그렇게 한다는 것을 알았습니다. 그런 다음 bash 스크립트 파일을 통해 압축을 풀었기 때문에 파일의 압축을 수동으로 풀고 테스트했는데 문제가 아니었을 수도 있다고 생각했습니다.

드디어 오늘 140MB .zip 파일로 확인해봤습니다. 수동으로 파일을 추출하고 .sh 스크립트를 10번 사용했으며 ls -h -R > ../test_n.txt매번 압축을 푼 후 폴더 기록을 유지하기 위해 실행했습니다 . 20개의 파일을 모두 비교한 결과 20번 중 7번은 .zip 파일에서 2~8개의 파일이 누락되는 것을 확인했습니다.

왜 이런 일이 일어날 수 있는지 아는 사람이 있습니까?

답변1

무슨 일이 일어나고 있는지 전혀 모르겠습니다... 하지만 문제를 디버깅하기 위해 시도해 볼 수 있는 몇 가지 방법은 다음과 같습니다.

  • 해당 zip버전 -l에 압축을 풀지 않고 zip 파일 내에 어떤 파일이 있는지 확인할 수 있는 플래그나 다른 것이 있으면 도움이 될 수 있습니다.

    zip -l file.zip
    

    그러면 zip 파일의 내용이 표시되므로 압축을 푼 후에도 파일의 양이 동일할 것으로 예상해야 합니다. 이를 스크립트에서 테스트로 사용하여 항상 모든 파일의 압축을 풀고 있는지 확인할 수 있습니다.

  • 실제로 zip 파일이 정확합니까? 다른 소스에서 파일을 가져오는 경우 파일의 체크섬을 가져온 다음 압축을 풀려는 zip 파일과 비교하십시오. 다르다면 파일 손상이 이 문제의 원인일 수 있습니다.

  • 명령 의 반환 코드는 무엇입니까 zip? 를 사용하여 파일의 압축을 푼 후 명령 zip을 실행 echo $?하여 반환 코드를 확인합니다. 0과 다른 경우 프로그램은 어떤 방식으로든 프로그램 실행이 전반적으로 성공하지 못했다는 의미입니다. 이 값은 다를 수 있지만 내가 아는 한 성공에는 0을 사용하고 오류/경고에는 다른 숫자를 사용하는 것이 unix/linux 유틸리티에 비해 상당히 표준적입니다.

이게 도움이 되길 바란다 :)

관련 정보