손상된 타르볼 복구

손상된 타르볼 복구

내 손에 손상된 타르볼이 있습니다. 나의 첫 번째 복구 시도는 다음과 같았습니다.

$ tar --ignore-failed-read --ignore-command-error -xf tarball.tar
tar: Skipping to next header tar: Archive contains ‘180738 0’ where numeric mode_t value expected
tar: Archive contains ‘0.445647 -9.’ where numeric time_t value expected
tar: Archive contains ‘.259273 ’ where numeric uid_t value expected
tar: Archive contains obsolescent base-64 headers
tar: Archive contains ‘-0.94874’ where numeric gid_t value expected
tar: text from a text file is here: implausibly old time stamp 1969-12-31 18:59:59
tar: more text file contents are here: Unknown file type 'p', extracted as normal file
tar: Skipping to next header
tar: Skipping to next header
tar: Exiting with failure status due to previous errors

이것은 문제가 발생하기 전에 타르볼에서 많은 것을 추출하지 않습니다. 종료 상태는 2이며 tar 매뉴얼 페이지에는 치명적인 오류라고 나와 있습니다.

선적 서류 비치"gzip 복구 툴킷” 제안 사항은 다음과 같습니다.

cpio -F tarball.tar -i -v

이것은 1.8G 타르볼 중 1.2G를 추출하는데, 이는 꽤 좋은 결과입니다. 터미널 프롬프트에 많은 쓰레기를 입력하면 중지됩니다. 화면에 인쇄되지 않습니다. 마치 입력했지만 아직 Enter 키를 누르지 않은 것과 같습니다.

더 잘할 수 있는 방법이 있나요? "타르볼의 불량 블록을 건너뛰는" 방법이 있습니까?

tar를 사용하여 --ignore-zeros전체 tar 파일을 읽는 것이 가능한 것 같습니다 .

tar -R --ignore-failed-read --ignore-command-error --ignore-zeros -xvf tarball.tar
[...]
block 3670356: ** Block of NULs **
block 3670357: ** Block of NULs **
block 3670358: ** Block of NULs **
block 3670359: ** End of File **
tar: Exiting with failure status due to previous errors

오류 가 많아 Block of NULs내용을 복구할 수 없는 것 같습니다.

답변1

tar하지만 을 사용하고 있지 않으며 gtar오류 메시지는 다음과 같습니다.

tar: Archive contains obsolescent base-64 headers

gtar20년 넘게 반복적으로 보고된 잘 알려진 오류와 관련됩니다. 과거에 이 문제의 발생 가능성을 줄이기 위해 소스 코드를 변경했지만 이러한 변경 사항으로 인해 아직 문제가 실제로 해결되지는 않았습니다 gtar.

아카이브를 확인하려면 패키지 tartest의 내용을 사용할 수 있으며 star가 오류를 보고하는 경우 starstar를 사용하여 아카이브를 추출해 볼 수 있습니다 .star -i

관련 정보