손상된 "tar.gz"파일을 복구하는 방법


11

갑자기 오래된 tar.gz파일 을 복구해야 했지만 실행하자마자 :

tar -zxvf filename.tar.gz

나는 이것을 얻는다 :

gzip: stdin: invalid compressed data--format violated  
tar: Child returned status 1  
tar: Error is not recoverable: exiting now

8
정말 지글 거리는 타르볼인가요? file먼저 명령을 시도하십시오 .
alex

1
그렇습니다. .tar.gz실제로 하나 .tar의 PDF를 얻었고 한 번은 PDF를 얻었습니다 .
vonbrand

답변:


12

시도해야 할 것은 다음과 같습니다.

  1. file아카이브에서 명령을 사용 하여 gzip-ped 데이터 로 인식되는지 확인하십시오 .
  2. strace gunzip파일에서 실행하십시오 . 파일에서 읽은 마지막 바이트를 인쇄하여 파일에서 손상이 발생한 지점을 식별하는 데 도움이 될 수 있습니다.
  3. 의 디버그 빌드 실행 gunzip아래를 gdb. 손상된 섹션을 수정하고 (이를 수행하려면 추가 운이 필요함) 파일 끝까지 계속 될 수 있는지 확인하십시오.

손상의 특성에 따라 데이터를 복구하거나 복구하지 못할 수 있습니다.


gunzip filename.tar.gz나를 위해 일했다.
라비 도리 야 ツ


2

완전 복구가 불가능합니다. .zip과 같은 형식은 더 나은 보호 및 복구 옵션을 제공하지만 완전하지는 않습니다.

.tar.gz는 모든 파일을 묶은 다음 압축을 적용합니다. .zip 은 각 파일에 대한 압축을 다시 시작합니다. 따라서 .zip 파일에서 압축 블록에 대한 손상은이 블록이 속한 파일에만 영향을줍니다. .tar.gz에서 손상은 압축이 다시 시작될 때까지 모든 후속 파일에 영향을 미칩니다.


내가 생각하고 있었다, 좋은 설명 thx! zip과 같은 다른 형식이 있지만 (압축이 더 좋은) 다른 형식이 있는지 궁금하지만 zip은 항상 모든 곳에서 인식되며 복구와 관련하여 가장 좋은 옵션 일 것입니다.
물병 자리 힘

1

를 실행 zcat bad.tar.gz > some.tar하고 추출 하십시오 . 파일의 손상된 부분을지나가는 까다로울 수. 매뉴얼 페이지는 형식에 대한 포인터를 제공하지만 Google에서 다른 옵션을 찾고 싶습니다.

이것이 gzip으로 압축되어 있습니까? 형식을 이해하지 못하기 때문에 불평 할 수 있습니다 ...


1

모든 카피는 파일의 시작부터 오류가 발생한 곳 또는 파일이 잘리는 지점까지 정보를 추출하는 경우에만 적용됩니다.

불행히도 손상된 지역 후 파일 / 스트림의 일부를 복구하는 방법을 설명하는 사람은 없습니다. 그 레시피를 가진 사람이 있습니까?


-1

이것을 사용하십시오 : https://github.com/arenn/gzrt

gzrecover foo.tar.gz
cpio -F foo.tar.recovered -i -v

명령 결과 cpio: illegal option -- F오류 메시지가 나타납니다.
schily

1
cpio --help는 다음 옵션을 제공합니다. -F, --file = [[USER @] HOST :] FILE-NAME 표준 입력 또는 출력 대신이 FILE-NAME을 사용하십시오. 선택적 USER 및 HOST는 원격 아카이브의 경우 사용자 및 호스트 이름을 지정합니다.
W4U

abpout cpio이 아니라 벤더별 옵션이있는 클론에 대해서는 schillix.sourceforge.net/man/man1/cpio.1.html을 참조하십시오. ypou 가 원본 대신 클론에 대해 이야기하는 경우 어떤 클론을 언급해야합니까? 사용하고 있습니다.
schily

1
@ schilly, 나는 cpio데비안 에 포함에 대해 이야기하고 있습니다. GNU cpio : 링크
W4U
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.