ฉันพยายามสร้าง.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 จะแสดงไฟล์ที่ถูกเพิ่มลงในไฟล์เก็บถาวร