วิธีแยก tar.gz ที่เร็วที่สุด


42

อย่างไรก็ตามมีวิธีการแตกไฟล์ tar.gz เร็วกว่าtar -zxvf filenamehereหรือไม่

เรามีไฟล์ขนาดใหญ่และพยายามเพิ่มประสิทธิภาพการทำงาน


2
คุณพบว่า$ tar -zxvfวิธีการนั้นเป็น IO หรือ CPU ที่ถูกผูกไว้?
EEAA

1
เชื่อซีพียูฉันจะตรวจสอบได้อย่างไร
Justin

5
ไม่เกี่ยวข้องโดยตรง แต่ไม่ได้ต้องการ 'z' มาตั้งแต่ปี 2004 / tar v1.1.5 gnu.org/software/tar/#TOCreleases :)
JamesHannah

คำตอบ:


57

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

pigz -dc target.tar.gz | tar xf -


11
+1 FWIW tar -xvf --use-compress-program=pigz filenamehereคุณยังสามารถเขียนว่า ( -zจำนวนเป็น--use-compress-program=gzip.) หรือคุณสามารถสร้างgzipลิงก์ไปยังpigzและใช้-zxvfต่อไปได้
ruakh

2
@ruakh ผมต้องใส่-xfหลัง--use-compress-program=pigzหรือผมได้รับข้อผิดพลาด ด้วยเหตุผลบางอย่างมันก็ไม่เร็วกว่าการใช้gzipแม้ว่า
'58

สำหรับbzip2มีpbzip2( pสำหรับขนาน) tar --use-compress-program=pbzip2 -xvf file.tar.bz2.
alfC

มีวิธีการใช้pvคำสั่งเพื่อแสดงความคืบหน้าหรือเทียบเท่าป่าเถื่อนในขณะที่ใช้--use-compress-program=pigzธง? ในระหว่างการบีบอัดฉันสามารถทำได้gnutar --use-compress-program="pigz | pv" -cf target.tar.gz YourDataแต่ไม่แน่ใจว่าจะทำอย่างไรในช่วงที่ไม่มีการบีบอัด / ไม่บีบอัด
Stefan Lasiewski

13

หากมีไฟล์ขนาดเล็กจำนวนมากใน tar ball ให้ยกเลิกพารามิเตอร์ 'v' ลองอีกครั้ง!


3
ฉันไม่เคยใช้ -v param ไม่ทราบว่าทำไมผู้คนต้องการเสียงรบกวนในคอนโซล
Eimantas

9
@Eimantas เมื่อคุณล้างสิ่งที่มีไฟล์หลายกิกะไบต์จำนวนมากคุณจะต้องการความคืบหน้า :)
Michael Hampton

@ TimHughes: มันยอดเยี่ยมมากที่จะรู้กรุณาโพสต์เป็นคำตอบที่แยกต่างหาก!
smci

Michael Hampton ถ้าคุณมีไฟล์หลายกิกะไบต์ แต่รวมกับรายการขนาดใหญ่ของไฟล์เล็ก ๆ คุณมีเหตุผลที่ดีที่จะไม่ใช้ -v ในการทดสอบในพื้นที่ของฉันมันทำให้ tar ช้ามากโดยเฉพาะถ้าคุณมี tar ที่ทำงานในเซิร์ฟเวอร์ระยะไกล ผ่านเทอร์มินัลสิ่งที่ฉันต้องทำคือดูไดเรกทอรี du -s เพื่อที่ฉันจะได้ดูสารบบที่กำลังเติบโต ...
Luciano Andress Martini

มันอาจจะมีมูลค่าการใช้--checkpoint=NUMBER( จอแสดงผลความคืบหน้าทุกข้อความบันทึก NUMBERth ) -vแทน
Stefan Lasiewski

6

pvหากคุณต้องการที่จะเห็นความคืบหน้าการใช้งานบางอย่างเช่น นี่คือตัวอย่าง:

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