tar : 343398의 고독한 제로 블록


10

우분투 터미널에서 tar.gz 파일을 추출하려고 시도하는 동안 오류가 발생했습니다 .tar : 343398의 외로운 제로 블록

이 문제에 대한 해결책은 무엇입니까 ???

답변:


18

모든 tar.gz파일에서 발생하는지 아니면 이 파일에서만 발생하는지에 따라 다릅니다 . 이 특정 파일이 손상되었을 수 있으므로 제대로 열리지 않습니다. tar를 사용하여 추출 z하는 경우 아카이브를 압축 할 때 필요 하므로 옵션 을 사용해야합니다 tar xzvf <file.tar.gz>. 또는 추출하여 시도해 볼 가치가 있습니다.gunzip <file.tar.gz>

파일이 손상되었는지 확인하려면 gzip -t <file.tar.gz>; 이 명령은 파일에 오류가 있는지 확인하고 발견 된 경우 터미널에 표시됩니다. 파일이 손상되었는지 여부를 알려줍니다.

파일이 사운드이고 오류가 다시 발생하면 zero blocksGNU tar가 예상하는 것처럼 파일 끝에 파일 쌍이없는 경우 발생하는 tar의 알려진 문제 일 수 있습니다 . 이에 대한 해결책은 -i을 무시하는 옵션을 추가하는 것 zero blocks입니다. 그래서 사용 tar ixzvf <file.tar.gz>문제가 설명되어 있습니다 여기에 자세히.


1

stderr과 stdout을 분리하지 않는 채널 (android adb 터미널 세션)을 통해 stdout stderr을 모두 파이프로 연결했기 때문에 동일한 문제가 발생했습니다 .

그렇게하면 일부 오류 메시지가 스트림에 생겼습니다. 이것은 잘못된 명령이었습니다.

  • 잘못된 명령, adb 쉘은 stderr과 stdout을 로컬로 병합합니다 => 쓰레기! :
    adb shell tar -cf - /some/dir \| uuencode bla | uudecode -o - > backup.tar

  • 고정 명령 :
    adb shell tar -cf - /some/dir 2>/dev/null\| uuencode bla | uudecode -o - > backup.tar

stderr을 / dev / null로 리디렉션하는 것을 잊어 버린 경우 ssh를 통한이 빠른 tar 스트리밍과 같이 SSH를 통해 유사한 명령을 수행하는 경우에도 마찬가지입니다.

ssh user@host tar -czf /some/remote/path 2\>/dev/null > /local/path/to/file.tar.gz


1
잘 잡았습니다. 그것은 또한 당신이 설정 한 경우 발생 RequestTTY yes하여 ssh_config를에. 명시 적으로 해제 할 수 있습니다 -T Disable pseudo-tty allocation.나를 위해, 오류는 tar: Skipping to next header내가 함께 시도 할 때 혼자 제로 블록이 발생, 원래 --posix..
eMPee584

0

며칠 전에 압축되지 않은 아카이브를 untar하려고 할 때이 오류가 발생했습니다. 파일의 출처는 알려지지 않았지만 제작자가 cat여러 개의 tar를 단일 tar로 결합 하는 데 사용할 수 있다고 생각했습니다 . 이로 인해 tar통합 아카이브 중간 에 유틸리티가 파일 끝 영점 마커를 읽게되어 "고독한 영 블록"오류가 표시됩니다.

이 경우 --ignore-zeros또는 -i옵션은 이러한 오류를 억제하는 데 도움이 될 수 있습니다. 참조하십시오 man tar또는 이 링크를 참조로.

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