ไฟล์ tar.gz ไม่มีดัชนี แตกต่างจาก zip หรือรูปแบบไฟล์เก็บถาวรอื่น ๆ ไม่ใช่เรื่องง่ายหรือราคาถูกเพื่อให้ได้รายชื่อของไฟล์ที่มีอยู่หรือข้อมูลเมตาอื่น ๆ เพื่อแสดงให้คุณเห็นว่าไฟล์ใดที่มีอยู่ในไฟล์เก็บถาวร tar จำเป็นต้องคลายบีบอัดไฟล์เก็บถาวรและแตกไฟล์แม้ว่าในกรณีของ-t
ตัวเลือกมันจะทำเช่นนั้นในหน่วยความจำเท่านั้น
หากรูปแบบทั่วไปในกรณีการใช้งานของคุณคือการแสดงรายการไฟล์ที่มีอยู่ในไฟล์เก็บถาวรคุณอาจต้องการพิจารณาใช้รูปแบบไฟล์เก็บถาวรที่สามารถเพิ่มดัชนีไฟล์ลงในไฟล์บีบอัดเช่น zip
บางทีคุณอาจต้องการดูรูปแบบHDF5สำหรับสถานการณ์ที่ซับซ้อนมากขึ้น
วัด
ฉันเพิ่งมีการทำวัดบางอย่างเพื่อพิสูจน์คำตอบของฉันและสร้างไดเรกทอรีบางคนที่มีไฟล์จำนวนมากในพวกเขาและพวกเขาเต็มไปซึ่งทั้งสองและtar czf files#.tgz files#
zip -r files#.zip files#
สำหรับการทดสอบฉันรันคำสั่ง unpacking สองครั้งในแต่ละครั้งและรับผลลัพธ์ของการรันครั้งที่สองเพื่อพยายามหลีกเลี่ยงการวัดความเร็วดิสก์
ทดสอบ 1
ไดเรกทอรีfiles1
ที่มี100,000 ไฟล์ที่ว่างเปล่า
$ time tar tzf files1.tgz >/dev/null
tar tzf files1.tgz > /dev/null 0,56s user 0,09s system 184% cpu 0,351 total
$ time unzip -l files1.zip >/dev/null
unzip -l files1.zip > /dev/null 0,30s user 0,34s system 99% cpu 0,649 total
zip ช้าลงที่นี่
ทดสอบ 2
ไดเรกทอรีfiles2
ที่มีไฟล์ 5,000 ไฟล์โดยมีข้อมูลแบบสุ่ม512 ไบต์
$ time tar tzf files2.tgz >/dev/null
tar tzf files2.tgz > /dev/null 0,14s user 0,03s system 129% cpu 0,131 total
$ time unzip -l files2.zip >/dev/null
unzip -l files2.zip > /dev/null 0,03s user 0,06s system 98% cpu 0,092 total
ยังไม่น่าเชื่อ แต่ซิปนี้เร็วขึ้น
ทดสอบ 3
ไดเรกทอรีfiles3
ที่มีไฟล์ 5,000 ไฟล์โดยมีข้อมูลสุ่ม5kBแต่ละไฟล์
$ time tar tzf files3.tgz >/dev/null
tar tzf files3.tgz > /dev/null 0,42s user 0,03s system 111% cpu 0,402 total
$ time unzip -l files3.zip >/dev/null
unzip -l files3.zip > /dev/null 0,03s user 0,06s system 99% cpu 0,093 total
ในการทดสอบนี้จะเห็นได้ว่ายิ่งไฟล์ใหญ่ขึ้นเท่าไหร่ก็ยิ่งยากขึ้นสำหรับ tar ที่จะแสดงรายการไฟล์เหล่านั้น
ข้อสรุป
สำหรับฉันดูเหมือนว่า zip จะแนะนำค่าใช้จ่ายเล็กน้อยซึ่งคุณจะสังเกตเห็นได้เฉพาะกับไฟล์ขนาดเล็กมาก (ว่างเปล่า) ในขณะที่ไฟล์ขนาดใหญ่จำนวนมากจะชนะการประกวดเมื่อแสดงไฟล์ที่อยู่ในไฟล์เก็บถาวร
-z
เลือก:tar -tvfz
. คล้ายกัน: จะเกิดอะไรขึ้นหากคุณใช้คำสั่ง tar tvf ซึ่งต่างจาก tar tvfz