โดยปกติแล้วทั้ง gzip หรือ tar จะไม่สามารถสร้าง "tar.gz ที่เล็กที่สุดอย่างแน่นอน" ได้ มียูทิลิตีการบีบอัดมากมายที่สามารถบีบอัดให้อยู่ในรูปแบบ gz ฉันได้เขียนสคริปต์ทุบตี " gz99 " ที่จะลองgzip
, 7z
และadvdef
จะได้รับไฟล์ที่เล็กที่สุด หากต้องการใช้สิ่งนี้เพื่อสร้างไฟล์ที่เล็กที่สุดเท่าที่จะเป็นไปได้ให้เรียกใช้:
tar c path/to/data | gz99 file.gz
advdef
ยูทิลิตี้จาก AdvanceCOMP จะให้ไฟล์ที่เล็กที่สุด แต่ยังเป็นรถ (คนgz99
ยูทิลิตี้การตรวจสอบว่ามันยังไม่ได้เสียหายไฟล์ก่อนที่จะยอมรับการส่งออกของadvdef
) หากต้องการใช้advdef
โดยตรงให้สร้าง file.tar.gz ตามที่คุณต้องการ จากนั้นเรียกใช้:
advdef -z -4 file.tar.gz
สิ่งนี้จะสร้างไฟล์ gz มาตรฐานที่สามารถอ่านได้โดย gzip และ tar ตามปกติซึ่งเล็กกว่านิดหน่อย นี่เป็นเรื่องที่ดีที่สุดที่คุณสามารถทำได้กับรูปแบบ gz
เนื่องจากคุณเพิ่งเรียนรู้ว่า tar สามารถบีบอัดและไม่ได้บอกว่าทำไมคุณต้องการไฟล์ ".tar.gz" ที่เล็กที่สุดคุณอาจไม่ทราบว่ามีรูปแบบที่มีประสิทธิภาพมากกว่าสามารถใช้กับไฟล์ tar เช่น xz โดยทั่วไปการสลับไปใช้รูปแบบที่แตกต่างกันสามารถปรับปรุงการบีบอัดได้ดีกว่าการเล่นซอด้วยตัวเลือก gzip ข้อเสียเปรียบหลักของ xz คือไม่เหมือน gzip ดังนั้นคนที่คุณส่งไฟล์อาจต้องติดตั้งแพ็คเกจใหม่ นอกจากนี้ยังมีแนวโน้มที่จะช้าลงเล็กน้อยโดยเฉพาะอย่างยิ่งเมื่อมีการบีบอัด หากสิ่งนี้ไม่สำคัญกับคุณและคุณต้องการไฟล์ tar ที่เล็กที่สุดลอง:
tar cv path/to/data | xz -9 > file.tar.xz
tar รุ่นใหม่เช่นใน Ubuntu 13.10 จะตรวจจับไฟล์ที่ถูกบีบอัดโดยอัตโนมัติ ดังนั้นแม้ว่าคุณจะใช้การบีบอัด xz คุณก็ยังสามารถคลายการบีบอัดได้ตามปกติ:
tar xvf file.tar.xz
เพื่อให้ทราบภาพคร่าวๆเกี่ยวกับการบีบอัดยูทิลิตี้เหล่านี้ให้พิจารณาผลของการบีบอัด patch-3.1.1 จากเคอร์เนล linux:
utility cpu format size(bytes)
gzip -9 0.02s gz 105,628
advdef -2 0.07s gz 102,619
7z -mx=9 -tgzip 0.42s gz 102,297
advdef -3 0.55s gz 102,290
advdef -4 0.75s gz 101,956
xz -9 0.03s xz 91,064
xz -3e 0.15s xz 90,996
ในตัวอย่างเล็ก ๆ น้อย ๆ นี้เราจะเห็นว่าเพื่อให้ได้ gz ที่เล็กที่สุดที่เราต้องการ advdef (แม้ว่า 7z-tgzip นั้นเกือบจะดีและมีรถบั๊กน้อยกว่า) เรายังเห็นว่าการเปลี่ยนเป็น xz ทำให้เรามีพื้นที่มากขึ้นกว่าที่จะบีบรูปแบบ gz เก่าที่สุดโดยไม่ต้องบีบอัดใช้เวลานานเกินไป