tar -tvf ทำการแตกไฟล์หรือแสดงรายชื่อหรือไม่?


9

ฉันมีtar.gzไฟล์ขนาด 32 GB ฉันพยายามแยกโฟลเดอร์เฉพาะออกจากนั้นฉันจึงแสดงรายการเนื้อหาด้วยคำสั่งต่อไปนี้เพื่อดูโครงสร้างไฟล์:

tar -tvf file.tar.gz > files.txt

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



3
@smci: ตรวจพบอัตโนมัติจึงไม่ลืมจริงๆ
Ry-

คำตอบ:


14

ไฟล์ 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 จะแนะนำค่าใช้จ่ายเล็กน้อยซึ่งคุณจะสังเกตเห็นได้เฉพาะกับไฟล์ขนาดเล็กมาก (ว่างเปล่า) ในขณะที่ไฟล์ขนาดใหญ่จำนวนมากจะชนะการประกวดเมื่อแสดงไฟล์ที่อยู่ในไฟล์เก็บถาวร

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