gzip은 .tar에 무결성/CRC 검사를 추가합니까?

gzip은 .tar에 무결성/CRC 검사를 추가합니까?

나는 명령을 실행합니다 :

tar -cf myArchive.tar myDirectory/
gzip myArchive.tar

그런 다음 신뢰할 수 없는 여러 매체를 통해 파일을 복사하고 나중에 다음을 사용하여 압축을 풉니다.

tar -xzf myArchive.tar.gz

내가 타르볼을 압축했다는 사실이 어떤 방식으로든 무결성을 보장합니까, 아니면 적어도 압축을 푼 콘텐츠의 CRC를 보장합니까?

답변1

tar자체는 나중에 비교하기 위해 체크섬을 기록하지 않습니다. gzip아카이브 라면 tar해당 기능을 사용할 수 있습니다.

tar을 사용합니다 compress. -Z아카이브를 생성하는 동안 플래그를 사용하면 아카이브를 읽거나 쓸 때 프로그램이 tar사용됩니다 . 맨페이지 compress에서 gzip:

표준압박 붕대형식은 일관성 검사를 허용하도록 설계되지 않았습니다.

그러나 -z매개변수를 사용할 수 있습니다. 그런 다음 를 tar통해 아카이브를 읽고 씁니다 gzip. 그리고 gzipcrc 체크섬을 작성합니다. 해당 체크섬을 표시하려면 해당 명령을 사용하십시오.

$ gzip -lv archive.tar.gz
method  crc     date  time           compressed        uncompressed  ratio uncompressed_name
defla 3f641c33 Sep 25 14:01               24270              122880  80.3% archive.tar

맨페이지 에서 gzip:

처음 두 형식을 사용하는 경우(gzip 또는 zip을 의미합니다.), gunzip은 32비트 CRC를 확인합니다.

답변2

예,gzip 파일 형식아카이브가 손상되었는지 감지하는 데 사용할 수 있는 CRC-32 체크섬이 포함되어 있습니다.

물론 체크섬을 사용하면 gzip을 사용할 수 있지만말하다아카이브가 손상되었다고 하더라도 실제로는 아카이브 내부의 데이터를 복구하는 데 도움이 되는 어떤 작업도 수행하지 않습니다. 따라서 웹에서 방금 다운로드한 아카이브가 실제로 올바르게 다운로드되었는지 확인하는 것과 같은 작업에 주로 유용합니다.

실제로 신뢰할 수 없는 미디어를 통해 아카이브를 저장하거나 전송하는 것이 걱정된다면 다음과 같은 아카이브 형식을 사용하는 것이 좋습니다.평가실제로 제공하는오류 수정오류 감지 외에도. 물론 이러한 형식의 단점은 오류 수정에 필요한 중복으로 인해 파일 크기가 다소 증가한다는 것입니다.

답변3

tar무결성 검사가 없습니다. 예:

$ echo JJJJJJJJJJJJJJJJJJ > b
$ tar cvf a.tar b
$ sed -i s/JJJJJJJJJJJJJJJJJJ/tttttttttttttttttt/g a.tar
$ tar xvf a.tar
$ cat b

tttttttttttttttttt

보세요, 아카이브의 내용이 a.tar변경되어 파일의 b내용이 완전히 달라졌지만 tar는 이를 알아차리지 못했습니다. 이는 tar 형식이 모두 포함된 tar-1.28(최신)을 포함한 모든 tar에 해당됩니다 --format=gnu --format=posix. 명령 pax(대체 tar 판독기) pax -r < a.tar도 아카이브 변경 사항을 인식하지 못합니다.

답변4

PKZip 패키지(win/dos)에는 손상된 아카이브에서 파일을 복구할 수 있는 PKZipFix라는 프로그램이 함께 제공됩니다. 나는 과거에 이 유틸리티를 사용해 본 적이 있는데, 이 유틸리티는 압축이 풀리지 않는 적당히 손상된 아카이브에서 파일을 복구할 수 있습니다.

관련 정보