파일 압축을 풀 때 여분의 바이트 오류


28

내가 입력하면 다음 unzip ../founation-latest.zip과 같이 출력됩니다.

경고 [../foundation-latest.zip] : zipfile 시작시 또는 248 개 추가 바이트 (어쨌든 처리 시도 중)

파일은 138KB입니다. 제대로 압축이 풀리는데 왜이 오류가 발생합니까?


2
가능한 원인 중 하나는 시스템으로 이동하는 한 단계 ftp에서 BINARY 모드가 아닌 ASCII 모드 로 전송 되었고 일부 바이트가 추가 되었기 때문입니다. ftp어떤 단계에서든 사용한 경우 ftp'put'또는 'get'전에 'bin'명령을 사용하여 다시 실행하십시오 .
Mark Plotnick

처음에는 악의적 인 페이로드가있을 수 있습니다. 적대적인 인터넷입니다. 압축을 풀 때 사용하는 압축 해제 유틸리티에주의하십시오.
jbrahy

가능한 많은 원인이 있기 때문에 현재 답변에는 많은 추측이 있습니다. 문제의 파일에 대한 링크 또는 사본을 갖는 것이 도움이됩니다.
duozmo

악의적 인 추가 페이로드와 관련하여 : 해당 크기로 파일을 virustotal.com 에 업로드하여 확인할 수 있습니다 ( 개인 정보가없는 경우). 그러나 원본 파일을 다른 곳으로 복사하는 경우에만 Linux의 바이러스에 대해 걱정하지 않아도됩니다. (데이터가 완성되었다고 생각되면 언제든지 파일을 다시
압축 할 수

이것이 문제임을 확인하는 것입니다. 와으로 모두 iTunes 파일 공간의 백업을 만들려고 zip했습니다 ditto. unzip(10.11로) 제공뿐만 아니라에서와 같이,이 두 가지 실패했습니다 7za. MacOS 압축 해제는 zip 파일을 좋아하지 않습니다.
테우스

답변:


37

내 문제는 PKZIP로 압축 된 항목을 처리 할 수없는 MAC OSX에서 "unzip"을 사용하려고했기 때문입니다.

나는 brew install p7zip명령을 사용하여 압축을 풀고 압축을 풀 수 있었다 7za x some_file.zip.

원래이 기사에서 해결책을 찾았습니다 : need-pk-compat-v4-5-can-do-v2-1


4
microsoft.com에서 Windows VM을 다운로드했으며 압축을 풀기위한 솔루션이었습니다.
잔디

1
이것은 Linux에서 압축 해제에도 적용 할 수 있습니다 (제 경우 : 데비안이 2009 년 4 월 20 일 UnZip 6.00)
BradHards

2
또한 조금 더 빠르며 진행 상황을 보여줍니다.
previous_developer

또한 p7z는 더 큰 파일과 최신 zip 파일을 처리합니다.
Konrads

AWS Linux 이미지에서도 동일한 문제가 발생합니다. timeoff.wsisiz.edu.pl/rpms.html 에서 p7zip RPM을 다운로드했으며 아카이브는 문제없이 테스트 및 추출되었습니다.
톱니 바퀴

23

비슷한 문제가있는이 스레드를 발견했습니다. 버그 보고서의 제목은 다음과 같습니다. unzip이 5.4GB ZIP에서 "처음 또는 zipfile 내의 추가 바이트"로 실패합니다 . 제안 된 수정 사항 중 하나는 .zip파일 에서이 명령을 사용하는 것 입니다.

$ zip -FFv foo.zip --out fixed.zip

예제 실행

$ zip -FFv foo.zip --out fixed.zip
Fix archive (-FF) - salvage what can
 Found end record (EOCDR) - says expect single disk archive
Scanning for entries...
 Local ( 1      0): copying: d1/f1   (651734 bytes)
 Local ( 1 651817): copying: d1/d2/  (0 bytes)
 Local ( 1 651905): copying: d1/d2/f3   (80 bytes)
 Local ( 1 652083): copying: d1/f23   (891 bytes)
 Local ( 1 653021): copying: d1/f27   (8764 bytes)
 Local ( 1 661837): copying: d1/f24   (14818 bytes)
 Local ( 1 676709): copying: d1/f25   (17295 bytes)
...
 Cen   ( 1 5488799949): updating: d1/f13
 Cen   ( 1 5488800052): updating: d1/f14
Zip64 EOCDR found ( 1 5488800155)...
Zip64 EOCDL found ( 1 5488800211)...
EOCDR found ( 1 5488800231)...
$ echo $?
0

지퍼의 -FF 스위치

zip 맨 페이지에서 발췌

       -FF
       --fixfix
              Fix the zip archive. The -F option can be used if some 
              portions of the archive are missing, but requires a reasonably 
              intact central directory.   The  input  archive is scanned as 
              usual, but zip will ignore some problems.  The resulting 
              archive should be valid, but any inconsistent entries will be 
              left out.

              When doubled as in -FF, the archive is scanned from the 
              beginning and zip scans  for  special  signatures  to  
              identify  the  limits between the archive members. The single 
              -F is more reliable if the archive is not too much damaged, so 
              try this option first.

              If  the archive is too damaged or the end has been truncated, 
              you must use -FF.  This is a change from zip 2.32, where the 
              -F option is able to read a truncated archive.  The -F option 
              now more reliably fixes archives with minor damage and the -FF 
              option is  needed to fix archives where -F might have been 
              sufficient before.
              ...

3

Zip 아카이브가 문제가 발생한 웹 서비스를 통해 전송되기 전에 이러한 유형의 오류를 보았습니다. zip 파일을 직접 검사 한 결과, 웹 서비스에서 zip 파일 앞에 오류 메시지가 전송 된 것을 발견했습니다.

zip 파일을 텍스트로 검사하여 앞에 흥미로운 내용이 있는지 확인하십시오.


3

이 경고도있었습니다. 필자의 경우 'curl -i'로 다운로드하여 zip 파일의 시작 부분에 http 헤더가 표시되었습니다. 바보 나. 확실히 이것은 모든 경우에 원인 / 해결책이 아니지만 누군가에게 도움이 될 것입니다 ...


2

자동 압축 풀림 보관 파일 (windows .exe)이거나 어떤 이유로 채워 졌을 수 있습니다.


1
"패딩"이란 무엇입니까?
rainwater 11

파일을 특정 길이로 만드는 추가 바이트 (보통 null (영)) 이는 파일 전송 블록 크기 (예 : xmodem)의 인공물 이었지만 현대에서는 발생하지 않습니다. 암호화 서명일 수도 있습니다. (파일이 없어서 248 바이트가 무엇인지 모르겠습니다.)
Ricky Beam

0

나도 같은 문제가 있었다. bin 모드를 사용하지 않고 Windows에서 Unix 서버로 파일을 복사 할 때 문제가 발생했습니다. 이 문제를 해결하는 가장 좋은 방법은 파일을 bin 모드로 전송하는 것입니다.


(1)이 정보는 이미 의견에 제시되었습니다 . 괜찮습니다. 그러나 (2) 의견은이 답변보다 더 자세한 정보를 가지고 있습니다. (3) 당신이 말하는 것을 설명함으로써이 답변을 향상시켜야합니다. 의견에 응답하지 마십시오. 명확하고 완전하게 답변을 편집 하십시오.
Scott

0

Linux에서 .zip4GB보다 큰 파일로 동일한 문제 가 only DEFLATED entries can have EXT descriptor발생 하여 오류가 발생했습니다.

이 명령은 7z x내 모든 문제를 해결했습니다.

그러나 명령 7z x은 현재 디렉토리에 루트 경로가있는 모든 파일을 추출합니다. 이 옵션 -o을 사용하면 출력 디렉토리를 지정할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.