เมื่อไฟล์ถูก gzipped จะมีวิธีสอบถามอย่างรวดเร็วเพื่อบอกว่าขนาดไฟล์ที่ไม่บีบอัดคืออะไร (โดยไม่ต้องคลายการบีบอัด) โดยเฉพาะอย่างยิ่งในกรณีที่ไฟล์ที่ไม่มีการบีบอัด> 4GB
ตาม RFC https://tools.ietf.org/html/rfc1952#page-5คุณสามารถสอบถาม 4 ไบต์สุดท้ายของไฟล์ได้ แต่หากไฟล์ที่ไม่มีการบีบอัดเป็น> 4GB ค่าจะแสดงถึงuncompressed value modulo 2^32
ค่านี้สามารถเรียกคืนได้ด้วยการเรียกใช้gunzip -l foo.gzอย่างไรก็ตามคอลัมน์ "ไม่มีการบีบอัด" จะมีuncompressed value modulo 2^32อีกครั้งซึ่งน่าจะเป็นเพราะมันอ่านส่วนท้ายตามที่อธิบายไว้ข้างต้น
ฉันแค่สงสัยว่ามีวิธีการรับขนาดไฟล์ที่ไม่บีบอัดโดยไม่ต้องแตกไฟล์ก่อนซึ่งจะเป็นประโยชน์อย่างยิ่งในกรณีที่ไฟล์ gzipped มีข้อมูล 50GB + และใช้เวลาสักครู่ในการคลายบีบอัดโดยใช้วิธีการเช่น gzcat foo.gz | wc -c
แก้ไข:ข้อ จำกัด 4GB ได้รับการยอมรับอย่างเปิดเผยในmanหน้าของgzipยูทิลิตี้ที่มาพร้อมกับ OSX ( Apple gzip 242)
BUGS
According to RFC 1952, the recorded file size is stored in a 32-bit
integer, therefore, it can not represent files larger than 4GB. This
limitation also applies to -l option of gzip utility.
gzipออกมาในปี 1992 ฉันจะแปลกใจถ้ามีเด็กอายุ 23 ปีสัญจรไปมาแถวนี้ ฉันแน่ใจว่ามีบางอย่าง แต่จากสิ่งที่ฉันสามารถบอกอายุเฉลี่ยอยู่ที่ประมาณ 30-35
xzซึ่งไม่มีข้อ จำกัด GNU xzจะเปลี่ยนไปใช้
xz จะ 'แก้ปัญหานี้'
gzipต้องมีอายุมากกว่าผู้ใช้จำนวนมากในชุมชนนี้!