มีไฟล์เก็บถาวรแบบขนาน (เช่น tar) หรือไม่?


40

มีบางอย่างในการจัดเก็บไฟล์แบบขนานหรือไม่

ทาร์นั้นยอดเยี่ยม แต่ฉันไม่ได้ใช้เทปเก็บถาวรและสิ่งสำคัญสำหรับฉันคือการเก็บถาวรเกิดขึ้นอย่างรวดเร็ว (ด้วยการบีบอัดเช่น bzip2) เนื่องจากฉันมี smp


7
tar เป็นมากกว่าเทป ชื่อเดิมมาจากเทป แต่วันนี้ฉันเห็นมันถูกใช้เป็นส่วนใหญ่เมื่อคุณต้องการที่จะใส่สิ่งต่าง ๆ ลงในไฟล์เดียวสำหรับการแจกจ่ายซ้ำในขณะที่รักษาข้อมูลโครงสร้างไดเรกทอรีด้วยการบีบอัดที่เป็นตัวเลือก
Kevin M

มีเครื่องมือบีบอัดข้อมูลแบบขนานสองสามตัวที่เปรียบเทียบกันที่นี่vbtechsupport.com/1614แต่ยังไม่พบ tar รุ่นขนาน
p4guru

ไม่มีคำตอบที่ให้ไว้ (รวมทั้งได้รับการยอมรับอย่างใดอย่างหนึ่ง) จับไดเรกทอรีดังนั้นเท่าที่ผมสามารถบอกได้ - พวกเขาจัดการไฟล์ ฉันเห็นzipว่าสามารถจัดการไดเรกทอรี: |
วอร์เรน

1
อันที่จริงสิ่งที่เรามักจะทำคือการจัดแพคเกจไดเรกทอรีในtarจดหมายเหตุและจากนั้นบีบอัดแพคเกจโดยใช้เครื่องอัดไฟล์ (เช่นgzip, pigzฯลฯ ) คุณสามารถทำได้สองขั้นตอน แต่ในขั้นตอนเดียวเนื่องจากสามารถทำงานกับสตรีมข้อมูลจากอินพุต / เอาต์พุตมาตรฐาน ผลลัพธ์มีความคล้ายกันzipแต่หลากหลายมากขึ้น
gerlos

คำตอบ:


36

ฉันคิดว่าคุณกำลังมองหา pbzip2:

PBZIP2 เป็นการใช้งานแบบขนานของคอมเพรสเซอร์ไฟล์การเรียงลำดับบล็อก bzip2 ที่ใช้ pthreads และรับการเร่งความเร็วใกล้เชิงเส้นบนเครื่อง SMP

ดูที่หน้าแรกของโครงการหรือตรวจสอบที่เก็บแพ็คเกจที่คุณชื่นชอบ


1
นอกจากนี้คุณยังสามารถลองpigzและpxzสำหรับการใช้งานแบบขนานและgzip xzคุณสามารถบีบอัดโดยใช้คำสั่งเหมือนและขยายการใช้tar c dir | pigz -c > dir.tar.gz pigz -cd dir.tar.gz | tar xf -
gerlos

3
คำสั่งในวันนี้จะเป็นและtar -cf dir.tar.gz -I pigz dir tar -xf dir.tar.gz -I pigzนอกจากนี้ยังxzเป็นเกลียว: การใช้งานและXZ_OPT=-T0 tar -cJf dir.tar.gz dir XZ_OPT=-T0 tar -xJf dir.tar.gz
รวย

21

7zipสามารถรันบนหลายเธรดเมื่อกำหนด-mmtแฟล็ก แต่เมื่อบีบอัดเป็น 7z-archives ซึ่งให้การบีบอัดที่ดี แต่โดยทั่วไปจะช้ากว่า zip เพื่อสร้างไฟล์เก็บถาวร ทำสิ่งนี้:

7z a -mmt foo.7z /opt/myhugefile.dat

7z เป็นผู้จัดเก็บที่ดีด้วยการสนับสนุนที่ดีสำหรับการควบคุมการแลกเปลี่ยนระหว่างอัตราส่วนการบีบอัดและเวลา comp / decomp, การเข้าถึงแบบสุ่มเทียบกับการบีบอัดที่ดีขึ้นและสิ่งต่างๆ อย่างไรก็ตามข้อมูลดังกล่าวไม่ได้จัดเก็บข้อมูลเมตาเกือบเท่า tar คุณสูญเสียเจ้าของ / สิทธิ์
Peter Cordes

ดูเหมือนว่าตัวเลือกนี้จะเปิดใช้งานตามค่าเริ่มต้น - อย่างน้อยฉันก็ไม่ได้เพิ่มประสิทธิภาพการทำงานด้วยและเอาต์พุตของ 7z มีบรรทัดเกี่ยวกับจำนวนแกนประมวลผลของ CPU ในทั้งสองกรณี
Andrey Starodubtsev

14

OP ถามเกี่ยวกับการเก็บถาวรแบบขนานไม่ใช่การบีบอัดแบบขนาน

หากแหล่งข้อมูลมาจากระบบไฟล์ที่ไดเรกทอรี / ไฟล์ต่างกันอาจอยู่ในดิสก์ที่แตกต่างกันหรือแม้แต่ดิสก์เร็วเดียวที่เกินความเร็วการป้อนข้อมูลของเครื่องมือบีบอัดก็อาจเป็นประโยชน์ต่อการป้อนข้อมูลหลายสตรีม เข้าไปในเลเยอร์การบีบอัด

คำถามที่มีความหมายจะกลายเป็นว่าผลลัพธ์จากการเก็บถาวรแบบขนานมีลักษณะอย่างไร มันไม่ได้เป็นเพียง file descriptor เดียว / stdoutแต่เป็น file descriptor ต่อ thread

ตัวอย่างของสิ่งนี้จนถึงขณะนี้คือโหมดการถ่ายโอนข้อมูลแบบขนานของ Postgresql pg_dumpซึ่งมันจะดัมพ์ไปยังไดเร็กทอรีโดยที่เธรดทำงานบนชุดของตารางเพื่อสำรองข้อมูล (คิวงานที่มีเธรดจำนวนมากที่ใช้คิว)

ฉันไม่แน่ใจเกี่ยวกับผู้จัดทำขนานที่แท้จริงที่เป็นกระแสหลัก มีแฮ็คสำหรับ Solaris Tar สำหรับใช้กับ ZFS: http://www.maier-komor.de/mtwrite.html

มีเครื่องมือสำรองข้อมูลเฉพาะบางตัวที่ประสบความสำเร็จในการรันหลายเธรด แต่ก็มีอีกมากมายที่แยกเวิร์กโหลดตามไดเรกทอรีในระดับสูง


11
tar --use-compress-program=pigz  ....

แทนที่pigzด้วยโปรแกรมบีบอัดแบบขนานที่คุณชื่นชอบ เหตุผลในการใช้งานtarคือสามารถเก็บเจ้าของกลุ่มสิทธิ์ ข้อมูลเมตานั้นมักมีประโยชน์ (เช่นการกู้คืนต้นไม้ dir ในระบบที่ซับซ้อน)


4
tar -c --use-compress-program = pigz -f myDirectory.tar.gz myDirectory /
markusN

1
ตัวเลือกทั้งหมด AFAIK สำหรับ tar สามารถนำมาใช้ตามปกติพร้อมกับตัวเลือกซึ่งเป็นเช่นเดียวกับ-I --use-compress-programดังนั้นเช่นtar cvzf /some/dir/yournewarchive.tar.gz /directory/tobecompressed --exclude="/directo...."สามารถนำไปใช้ตัวเลือกแบบมัลติเธรดใช้เป็นpigz tar -I pigz -cvf /some/dir/yournewarchive.tar.gz /directory/tobecompressed --exclude="/directo..."นี่คือคำตอบที่ดีที่สุดและเหมาะสมที่สุด IMHO ขอบคุณ @ uDude! :)
ILMostro_7

10

pigzเป็นการใช้งานแบบขนานของ gzip แต่สามารถใช้โปรเซสเซอร์หลายตัวในการบีบอัดเท่านั้นไม่ใช่การบีบอัด


2
ทำการทดลองบางอย่างและpigzจริง ๆ แล้วสามารถใช้หลายเธรดได้เมื่อทำการคลายการบีบอัด ลองเปรียบเทียบผลลัพธ์ของtime tar xf dir.tar.gzและของtime pigz -cd dir.tar.gz | tar xf -(บน CPU แบบ 4 คอร์ของฉันใช้เวลาน้อยกว่าครึ่งเวลา)
gerlos

4
@gerlos การใช้timeไปป์ไลน์จะใช้เวลาเพียงคำสั่งแรกเท่านั้น จากpigzเอกสาร : "การบีบอัดไม่สามารถทำให้ขนานอย่างน้อยก็ไม่มีลำธารที่ไม่ได้เตรียมไว้เป็นพิเศษสำหรับวัตถุประสงค์นั้น pigz ใช้เธรดเดี่ยว (เธรดหลัก) สำหรับการบีบอัด แต่จะสร้างเธรดอื่นอีกสามเธรดสำหรับการอ่าน การเขียนและตรวจสอบการคำนวณซึ่งสามารถเพิ่มความเร็วในการคลายการบีบอัดในบางสถานการณ์ "
augurar

1
นอกจากนี้ยังมีpixz
Marc.2377

8

tarเป็นเพียงรูปแบบไฟล์เก็บถาวรที่ดีมากในการทำซ้ำไฟล์และรักษาโครงสร้างไดเรกทอรีและแอตทริบิวต์ไฟล์ดั้งเดิม TAR นั้นดีสำหรับการสำรองข้อมูลเพราะทุกอย่างจะถูกเก็บรักษาไว้ ฉันใช้pbzip2ในการบีบอัดไฟล์เก็บถาวร tar ที่ฉันใช้สำหรับการสำรองข้อมูลระบบด้วยผลลัพธ์ที่ดีมาก

คำสั่งนี้ควรทำเคล็ดลับ

tar -cpS "infile" | pbzip2 > "outfile"

pbzip2 สามารถถูกแทนที่ด้วยยูทิลิตี้การบีบอัดที่แตกต่างกัน แต่ได้รับการเตือนการบีบอัด LZMA (เช่น pxz) ใช้ TON of RAM เมื่อทำการบีบอัด / คลายการบีบอัดไฟล์ขนาดใหญ่ (ฉันพยายามเรียกใช้ 8 เธรดที่มี RAM 8GB



1

เท่าที่มีการพิจารณาการบีบอัดxzเนื่องจากรุ่นประมาณ 5.2 รองรับการบีบอัดแบบขนานผ่าน-Tตัวเลือก

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