gzip เพิ่มการตรวจสอบ integrity / crc ให้กับ. tar หรือไม่


12

ฉันรันคำสั่ง:

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

จากนั้นฉันก็คัดลอกไฟล์ไปยังสื่อที่ไม่น่าเชื่อถือจำนวนมากและหลังจากนั้นฉันก็แกะมันออกโดยใช้:

tar -xzf myArchive.tar.gz

ความจริงที่ว่าฉันบีบอัด tar-ball จะรับประกันความสมบูรณ์หรืออย่างน้อยก็ CRC ของเนื้อหาที่ไม่ได้แตกออกมาหรือไม่?

คำตอบ:


15

tarตัวเองไม่ได้เขียนเช็คซัมสำหรับการเปรียบเทียบในภายหลัง หากคุณเก็บคุณสามารถมีฟังก์ชันการทำงานที่gziptar

tarcompressการใช้งาน หากคุณใช้-Zแฟล็กในขณะที่สร้างไฟล์เก็บถาวรtarจะใช้compressโปรแกรมเมื่ออ่านหรือเขียนไฟล์เก็บถาวร จากgzipmanpage:

รูปแบบการบีบอัดมาตรฐานไม่ได้รับการออกแบบมาเพื่อให้ตรวจสอบความสอดคล้อง

แต่คุณสามารถใช้-zพารามิเตอร์ จากนั้นอ่านและเขียนข้อมูลที่เก็บผ่านtar gzipและgzipเขียนเช็คซีอาร์ซี ในการแสดงเช็กซัมที่ใช้คำสั่งนั้น:

$ 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

จากgzipmanpage:

เมื่อใช้สองรูปแบบแรก ( หมายถึง gzip หรือ zip ) gunzip จะตรวจสอบ CRC 32 บิต


5

ใช่รูปแบบไฟล์ gzipมีการตรวจสอบ CRC-32 ที่สามารถใช้ในการตรวจสอบว่าไฟล์เก็บถาวรเสียหายหรือไม่

แน่นอนว่าในขณะที่ checksum ให้ gzip บอกคุณว่าไฟล์เก็บถาวรนั้นเสียหายจริง ๆ แล้วมันไม่ได้ทำอะไรเพื่อช่วยคุณกู้คืนข้อมูลภายในไฟล์เก็บถาวร ดังนั้นจึงมีประโยชน์ส่วนใหญ่สำหรับสิ่งต่าง ๆ เช่นการตรวจสอบว่าการเก็บถาวรที่คุณเพิ่งดาวน์โหลดจากเว็บถูกดาวน์โหลดอย่างถูกต้องจริงๆ

หากคุณกังวลเกี่ยวกับการจัดเก็บหรือส่งเอกสารสำคัญของคุณผ่านสื่อที่ไม่น่าเชื่อถือคุณอาจต้องการพิจารณาใช้รูปแบบการเก็บถาวรเช่นหุ้นที่ให้การแก้ไขข้อผิดพลาดนอกเหนือจากการตรวจหาข้อผิดพลาด แน่นอนด้านล่างของรูปแบบดังกล่าวคือความซ้ำซ้อนที่จำเป็นสำหรับการแก้ไขข้อผิดพลาดจำเป็นต้องเพิ่มขนาดไฟล์บ้าง


4

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 (ล่าสุด) --format=gnu --format=posixที่มีทั้งรูปแบบ paxคำสั่ง (อ่าน tar ทางเลือก) pax -r < a.tarยังไม่ได้สังเกตเห็นการเปลี่ยนแปลงที่เก็บ


2
สหกรณ์ดูเหมือนว่าจะต้องตระหนักถึง (หรืออย่างน้อยต้องสงสัย) ที่tar(อย่างน้อยโดยไม่ต้อง-zตัวเลือก) ไม่ได้ทำการตรวจสอบความสมบูรณ์ นอกจากนี้คำตอบที่ได้รับการยอมรับระบุสิ่งนี้ คำถามคือ: gzip(หรือการใช้-zตัวเลือก) เพิ่มการตรวจสอบความสมบูรณ์หรือไม่
G-Man กล่าวว่า 'Reinstate Monica'

แก้ไข G-Man นี่อาจเป็นคำตอบที่ถูกถ้ารวมส่วน gzip และแสดงให้เห็นว่า gzip ตรวจพบว่าเนื้อหามีการเปลี่ยนแปลง
Aksel Willgert

2

หาก tar พบข้อผิดพลาดเมื่อเปิดออกมันจะพิมพ์ข้อความและออกด้วยค่าการออกที่ไม่เป็นศูนย์ ลักษณะการทำงานนี้เป็นอิสระจากอัลกอริทึมการบีบอัดที่ใช้หลังจากสร้างไฟล์ tar

หากคุณต้องการตรวจสอบว่าไฟล์ถูกส่งไปยังปลายทางสำเร็จผ่านลิงก์ที่ไม่น่าเชื่อถือให้สร้างผลรวม md5 ของไฟล์ก่อนที่จะส่งและตรวจสอบผลรวม md5 หลังจากการรับ


ถ้าฉันสนใจเฉพาะความสมบูรณ์ของเนื้อหาที่ไม่ได้บรรจุ md5 บน tar ไม่ได้เพิ่มอะไรพิเศษเมื่อเทียบกับ tar ที่ตรวจสอบในระหว่างการคลายแพ็กเกจ?
Aksel Willgert

ความสมบูรณ์ของเนื้อหาภายในไฟล์เก็บถาวร tar นั้นได้รับการดูแลด้วยtarตัวเอง คุณสามารถเพิ่มเลเยอร์เพิ่มเติมได้ถ้าต้องการ: หากความสมบูรณ์ของไฟล์ tar ได้รับการยืนยันแล้วเนื้อหาภายในไฟล์เก็บถาวร tar ก็ใช้ได้เช่นกัน แต่สิ่งที่ควรได้รับการดูแลโดยโปรโตคอลที่ใช้ในการถ่ายโอนข้อมูลตั้งแต่แรก
Jan

-1

แพ็คเกจ PKZip (win / dos) มาพร้อมกับโปรแกรมที่เรียกว่า PKZipFix ซึ่งสามารถกู้คืนไฟล์จากไฟล์เก็บถาวรที่เสียหายได้ ฉันเคยใช้ยูทิลิตีนี้มาก่อนแล้วมันสามารถกู้คืนไฟล์จากไฟล์เก็บถาวรที่มีความเสียหายปานกลางซึ่งไม่สามารถคลายการบีบอัดได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.