วิธี tar / untar เอาท์พุทได้ทันที


27

เป็นวิธีสำนวนที่ต้องทำดังต่อไปนี้

  • tar เพื่อ stdout
  • อ่านเอาต์พุต tar นี้จาก stdout และแตกไปยังโฟลเดอร์อื่น

ทางออกของฉันคือ tar --to-stdout .. | tar -C somefolder -xvf -

แต่อาจจะมีวิธีสำนวนมากขึ้นที่จะทำ

คำตอบ:


34

-f -ตัวเลือกเดียวกันนี้ใช้สำหรับการฝึกฝนได้เช่นกัน

tar -cf - something | tar -C somefolder -xvf -

GNU tar ใช้ stdio โดยค่าเริ่มต้น:

tar -c something | tar -C somefolder -xv

rsync ก็เป็นที่นิยมเช่นกัน

rsync -av something/ somefolder/

9

เพียงเพิ่มกรณีการใช้งานอื่นที่นี่ ฉันมีโครงสร้างไดเรกทอรีขนาดใหญ่ในระบบเกือบจะไม่ว่างในดิสก์และต้องการที่จะจบลงด้วยไฟล์ tar.gz ของโครงสร้างไดเรกทอรีในเครื่องอื่นที่มีพื้นที่ว่างมากมาย

tar -czf - big-dir | ssh user@host 'cat > /path/to/big-dir.tar.gz'

สิ่งนี้จะช่วยประหยัดค่าใช้จ่ายในเครือข่ายและหมายความว่าคุณไม่จำเป็นต้องรออีกด้านในกรณีที่คุณต้องการใช้ rsync สำหรับการถ่ายโอนแทน


Netcat เหมาะสำหรับสิ่งนี้ (Cat จากโฮสต์หนึ่งไปยังโฮสต์อื่น)
Hennes

3
@Hennes: การขาดการรับรองความถูกต้องตรวจสอบความสมบูรณ์ของการเข้ารหัสข้อมูลรวมทั้งต้องเริ่มด้วยตนเองทั้งสองด้านสำหรับการถ่ายโอนแต่ละครั้ง (เช่น 2 ×งาน) มันฟังดูน้อยกว่าที่สมบูรณ์แบบ
grawity

เวลาส่วนใหญ่ฉัน gzip มันก่อนที่จะทิ้งมันผ่านเครือข่าย ความล้มเหลวจำนวนเต็มใด ๆ มีแนวโน้มที่จะแสดงเป็นข้อผิดพลาดในการคลายบีบอัด (แม้ว่าฉันจะไม่เคยได้รับเมื่อฉันใช้มัน) ในการเริ่มต้นสองโปรแกรม: ใช่จริง
Hennes

3
มันอาจจะทำงานได้มากกว่า แต่สำหรับการส่งไฟล์บีบอัดขนาดใหญ่ผ่านลิงค์ระหว่างการดำเนินการตามเวลาระหว่างเครื่องในเครือข่ายท้องถิ่นที่ปลอดภัยหรือผ่าน VPN การส่งผ่าน nc จะเร็วกว่า SSH อย่างมาก (ผ่านเครือข่าย 1Gb บ่อยครั้ง) โดยปัจจัย 2) ส่งผลรวม md5 ของไฟล์เก็บถาวรสำหรับการตรวจสอบความสมบูรณ์
Spooler
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.