ฉันจะบีบอัดหลายไฟล์ลงในไฟล์. xz ได้อย่างไร


คำตอบ:


10

แม้ว่าจะเป็นรายละเอียดโดย Zacharee1และโดย heemaylมักจะเป็นสิ่งที่คุณจะต้องการที่จะทำอีกวิธีหนึ่งคือการข้อมูลท่อแปดเปื้อนกับคำสั่ง:tar cJf archive files...xz

tar c files... | xz > archive.tar.xz

ตั้งแต่ของ Ubuntu tarสนับสนุนตัวเลือกอีกทางหนึ่งนี้จะเป็นประโยชน์โดยเฉพาะเมื่อคุณต้องการที่จะผ่านตัวเลือกในการJxz

ในตัวอย่างนี้ฉัน tar และ xzip ไฟล์ TIFF บางไฟล์ที่มีระดับการบีบอัดสูง ( -9ถึงxz) และเอาต์พุต verbose ( vถึงtar, -vถึงxz):

ek@Io:~/Pictures$ tar vc *.tif{,f} | xz -9v > pics.tar.xz
page001.tif
page002.tif
page003.tif
page004.tif
page9087.tif
page3la.tiff
quux0000.tiff
  100 %       207.3 KiB / 290.0 KiB = 0.715

แน่นอนว่าสิ่งนี้สามารถทำได้ในสองขั้นตอนที่แยกจากกันอย่างชัดเจน:

ek@Io:~/Pictures$ tar vcf pics.tar *.tif{,f}
page001.tif
page002.tif
page003.tif
page004.tif
page9087.tif
page3la.tiff
quux0000.tiff
ek@Io:~/Pictures$ xz -9v pics.tar
pics.tar (1/1)
  100 %       207.3 KiB / 290.0 KiB = 0.715

สองวิธีเหล่านั้นไม่เท่ากันจริง ๆ ในวิธีการใช้งานแม้ว่า.tar.xzไฟล์ที่พวกเขาสร้างขึ้นในท้ายที่สุดควรจะเหมือนกัน (และเมื่อฉันทดสอบมัน)

  • ในครั้งแรกที่การส่งออกของtarมีประปา ( |) เพื่อป้อนข้อมูลxzของ xzรับข้อมูลจากtarเกือบจะในทันทีและจะไม่มีการสร้างไฟล์ tar ที่ไม่มีการบีบอัดระดับกลาง นี้คือจะบอกว่าวิธีแรกเป็นหลักเทียบเท่าการtar cJf archive files...xzยกเว้นสำหรับอาร์กิวเมนต์เพิ่มเติมที่ผ่านมา
  • ในวินาทีการเก็บถาวร tar ที่ไม่ได้บีบอัดถูกสร้างโดยคำสั่งแรกจากนั้นบีบอัดโดยxzในคำสั่งที่สอง ( xzลบไฟล์ต้นฉบับโดยอัตโนมัติเมื่อเสร็จสิ้นเว้นแต่จะเรียกใช้ด้วย-k/ --keep)

สำหรับการอ่านเพิ่มเติมโปรดดูโพสต์นี้โดย Rafael van Hornและ the tarand xzmanpages


1
+ 1.. นี่เป็นอัตราส่วนที่ดีเมื่อต้องการอัตราส่วนการบีบอัดที่สูงขึ้น (หรือเปลี่ยนแปลง)
heemayl

2
สวัสดีปี 2015! อีกวิธีที่คุณสามารถบรรลุระดับการบีบอัดที่แตกต่างกันโดยใช้tar -Jคือการระบุตัวแปรสภาพแวดล้อมXZ_OPTทำให้การเรียกเช่น:XZ_OPT="-9v" tar -Jcf out.tar.xz [files]
Wug

2
@ug นั่นเป็นความคิดที่ยอดเยี่ยม ดูเหมือนว่าฉันจะรับประกันคำตอบแยกต่างหาก คุณยินดีที่จะโพสต์นั้น
Eliah Kagan

13

ใช้tarกับ-Jตัวเลือก:

tar -cvJf images.tar.xz /directory/containing/images/*

tar ใช้เพื่อรวมหลายไฟล์เป็นหนึ่งเดียว (เก็บถาวร) แล้วเราต้องบีบอัดไฟล์เก็บถาวรโดยใช้อัลกอริธึมการบีบอัด XZ

จากman tar:

-c, --create
       create a new archive
-v, --verbose
       verbosely list files processed
-J, --xz

-f, --file ARCHIVE
       use archive file or device ARCHIVE

นอกจากนี้ทราบว่าจะถูกสร้างขึ้นในไดเรกทอรีปัจจุบันถ้าคุณต้องการที่จะบันทึกไว้ใช้ที่อื่นimages.tar.xz/full/path/to/images.tar.xz


เริ่มกระบวนการของการ xzing PSDs ขนาดใหญ่หลาย ๆ อันและพูดตามจริงแล้วไฟล์เก็บถาวรนั้นเสนอการบีบอัดขนาดใหญ่! 400 MB + ตอนนี้คือ 200MB
กราฟิกที่มีระยะไกล

1
great..although xzเป็นที่ช้าที่สุดในหมู่xz, gzip, bzip2เนื่องจากอัตราการบีบอัดของมันสูงกว่าช้า others..the เป็นมูลค่าที่จะจัดการกับถ้าคุณต้องการบีบอัดมากขึ้น ..
heemayl

ผลรวม psds ของฉันมีค่าเท่ากับ 600-900 MB รวม xD
กราฟิกทางไกล

คุณดีที่จะไป ....
heemayl

ข้อผิดพลาดบางอย่าง. _
กราฟิกทางไกล

3

ใช้คำสั่งนี้: tar cJf <archive.tar.xz> <files>. แยกพา ธ ไฟล์ด้วยช่องว่าง


คุณต้องการสิ่งนี้:-cfJ
AB

1
@AB: คุณไม่ต้องการ-ด้านหน้า .. จากman tar: .. A function letter need not be prefixed with ``-''ดังนั้นtar cJfก็โอเคอย่างแน่นอน
heemayl

@ heemayl แต่ดูเหมือนจะไม่ทำงาน ฉันลองโดยไม่ใช้ '-' แต่ tar ไม่เสร็จ
AB

@ heemayl นั่นคือสิ่งที่ฉันคิด
TheWanderer

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