ฉันพยายามสร้าง.tar.xz
ไฟล์บีบอัดที่เก็บถาวรในคำสั่งเดียว ไวยากรณ์ที่เฉพาะเจาะจงสำหรับสิ่งนั้นคืออะไร?
ฉันลองtar cf - file | xz file.tar.xz
แล้ว แต่มันไม่ทำงาน
ฉันพยายามสร้าง.tar.xz
ไฟล์บีบอัดที่เก็บถาวรในคำสั่งเดียว ไวยากรณ์ที่เฉพาะเจาะจงสำหรับสิ่งนั้นคืออะไร?
ฉันลองtar cf - file | xz file.tar.xz
แล้ว แต่มันไม่ทำงาน
คำตอบ:
ใช้ตัวเลือกสำหรับการบีบอัด-J
xz
และอย่าลืมman tar
:)
tar cfJ <archive.tar.xz> <files>
แก้ไข 2015-08-10:
หากคุณกำลังส่งข้อโต้แย้งtar
ด้วยเครื่องหมายขีดคั่น (เช่น: tar -cf
ตรงกันข้ามกับtar cf
) ดังนั้น-f
ตัวเลือกจะต้องมีอายุการใช้งานเนื่องจากระบุชื่อไฟล์ (ขอบคุณ@ABBสำหรับการชี้ให้เห็น!) ในกรณีนั้นคำสั่งจะมีลักษณะดังนี้:
tar -cJf <archive.tar.xz> <files>
f
ที่ผ่านมาได้โดยไม่ต้องรีบ
tar
บน macOS ดูเหมือนว่าจะให้การสนับสนุน-J
แต่ไม่ได้ให้คุณสมบัติใน man page ต้องมองมันที่นี่ แม้ว่าพวกเขาจะพูดถึง XZ ในส่วนที่--options
...
สลับ-J
ใช้งานได้กับระบบที่ใหม่กว่าเท่านั้น คำสั่งสากลคือ:
ในการสร้างไฟล์. tar.xz
tar cf - directory/ | xz -z - > directory.tar.xz
คำอธิบาย
tar cf - directory
อ่านไดเร็กทอรี / และเริ่มวางในรูปแบบ TAR เอาต์พุตของการดำเนินการนี้สร้างขึ้นในเอาต์พุตมาตรฐาน
|
ไพพ์เอาต์พุตมาตรฐานไปยังอินพุตของโปรแกรมอื่น ...
... xz -z -
ซึ่งเกิดขึ้นเป็น XZ ได้รับการกำหนดค่าให้บีบอัด ( -z
) ไฟล์เก็บถาวรจากอินพุตมาตรฐาน ( -
)
คุณเปลี่ยนเส้นทางผลลัพธ์จากxz
ไปยังtar.xz
ไฟล์
-f
ไม่ได้หมายความว่า "จากแฟ้ม" xz
เมื่อผ่านไป แต่มันสั้นสำหรับ--force
(ดูรายละเอียดxz (1) ) และไม่ควรใช้ดีที่สุดหากไม่จำเป็น
tar cf - directory/ | xz -z -T0 - > directory.tar.xz
-1 -T0
หรือ-0 -T0
เป็นตัวเลือกซึ่งโดยทั่วไปจะให้ไฟล์ขนาดเล็กกว่า gzip ในเวลาที่เทียบเท่าหรือเร็วกว่าในขณะที่ค่าเริ่มต้น-6
ช้ากว่ามาก กว่า gzip
หากคุณชอบโหมดไปป์นี่เป็นวิธีที่สะอาดที่สุด:
tar c some-dir | xz > some-dir.tar.xz
ไม่จำเป็นต้องใส่f
ตัวเลือกเพื่อจัดการกับไฟล์จากนั้นใช้-
เพื่อระบุว่าไฟล์เป็นอินพุตมาตรฐาน ไม่จำเป็นต้องระบุ-z
ตัวเลือกxz
เพราะเป็นค่าเริ่มต้น
มันทำงานร่วมกับgzip
และbzip2
เกินไป:
tar c some-dir | gzip > some-dir.tar.gz
หรือ
tar c some-dir | bzip2 > some-dir.tar.bz2
การบีบอัดก็ค่อนข้างตรงไปตรงมา:
xzcat tarball.tar.xz | tar x
bzcat tarball.tar.bz2 | tar x
zcat tarball.tar.gz | tar x
หากคุณมีtar
ไฟล์เก็บถาวรเท่านั้นคุณสามารถใช้cat
:
cat archive.tar | tar x
tar t
หากคุณต้องการที่จะแสดงรายการไฟล์เท่านั้นการใช้งาน
หากคุณต้องการใช้ตัวเลือกการบีบอัดสำหรับxz
หรือถ้าคุณใช้tar
บน MacOS คุณอาจต้องการหลีกเลี่ยงtar -cJf
ไวยากรณ์
ตามman xz
วิธีการทำเช่นนี้คือ:
tar cf - baz | xz -4e > baz.tar.xz
เพราะฉันชอบรูปแบบของ Wojciech Adam Koszekแต่ไม่ใช่ข้อมูล:
c
สร้างไฟล์เก็บถาวรใหม่สำหรับไฟล์ที่ระบุ f
อ่านจากไดเรกทอรี (ควรใส่วินาทีนี้เพราะ-cf
! = -fc
)-
เอาต์พุตไปยังเอาต์พุตมาตรฐาน|
ไพพ์เอาต์พุตไปยังคำสั่งถัดไปxz -4e
โทรxz
ด้วย-4e
ตัวเลือกการบีบอัด (เท่ากับ-4
--extreme
)> baz.tar.xz
นำไฟล์ tarred และไฟล์บีบอัดไปที่ baz.tar.xz
อยู่ที่ไหน-4e
ใช้ตัวเลือกการบีบอัดของคุณเอง ฉันมักจะใช้-k
เพื่อ--keep
ไฟล์ต้นฉบับและ-9
สำหรับการบีบอัดหนักจริงๆ -z
เพื่อตั้งค่าxz
เป็น zip ด้วยตนเองแม้ว่าจะใช้ค่าเริ่มต้นเป็นซิปถ้าไม่ได้กำกับไว้
หากต้องการ echo Rafael van Hornเพื่อยกเลิกการบีบอัด & untar (ดูหมายเหตุด้านล่าง):
xz -dc baz.tar.xz | tar x
หมายเหตุ: แตกต่างจากคำตอบของราฟาเอลที่ใช้แทนxz -dc
catxz
เอกสารแนะนำสิ่งนี้ในกรณีที่คุณใช้สิ่งนี้ในการเขียนสคริปต์ ดีที่สุดที่จะมีนิสัยในการใช้งาน-d
หรือ--decompress
แทนที่จะunxz
เป็นเช่นกัน อย่างไรก็ตามหากคุณต้องใช้คำสั่งเหล่านั้นจากบรรทัดคำสั่งเป็นเรื่องปกติ
tar -cJf
ไวยากรณ์บน MacOS หรือไม่ แค่อยากรู้อยากเห็นเพราะฉันกำลังทำอยู่ตอนนี้และดูเหมือนว่าจะทำงาน
ลองสิ่งนี้: tar -cf file.tar file-to-compress ; xz -z file.tar
บันทึก:
|
เพราะจะรันคำสั่งพร้อมกัน การใช้;
หรือ&
ประมวลผลคำสั่งทีละรายการJ
ตัวเลือก แต่ใช้งานได้ ฉันคิดว่าคุณต้องการ RHEL6
tar -c file-to-compress | xz -z > file.tar.xz
ถ้าใช้คำสั่งโดยไม่ต้องระบุชื่อไฟล์ที่พวกเขาจะถูกผูกมัดขึ้นเช่น
&
จะไม่เรียกใช้คำสั่งอย่างใดอย่างหนึ่ง แต่จะเปิดตัวกระบวนการแรกเป็นกระบวนการพื้นหลังแทน
v
สวิตช์คำสั่ง (tar -cJvf
) เป็น verbose จะแสดงไฟล์ที่ถูกเพิ่มลงในไฟล์เก็บถาวร