บีบอัดไดเรกทอรีโดยใช้ tar / gz ผ่าน SSH ไปยังเครื่องคอมพิวเตอร์หรือไม่


15

ฉันต้องการ tar / gz เป็นไดเรกทอรีบนเครื่องระยะไกลและบันทึกไฟล์ลงในเครื่องคอมพิวเตอร์ของฉันโดยไม่ต้องเชื่อมต่อกลับเข้าไปในเครื่องของฉันจากเครื่องระยะไกล มีวิธีการทำเช่นนี้กับ SSH หรือไม่? ไฟล์ tar ไม่จำเป็นต้องเก็บไว้ในเครื่องระยะไกลเฉพาะในเครื่องท้องถิ่น เป็นไปได้ไหม

คำตอบ:


26

คุณสามารถทำได้ด้วยคำสั่ง ssh เพียงแค่บอกtarให้สร้างไฟล์เก็บถาวรบนเอาต์พุตมาตรฐาน:

ssh remote.example.com 'cd /path/to/directory && tar -cf - foo | gzip -9' >foo.tgz

อีกวิธีหนึ่งซึ่งสะดวกกว่าถ้าคุณต้องการจัดการไฟล์จำนวนมากบนเครื่องอื่น แต่ overkill สำหรับการสร้างไฟล์เก็บถาวรแบบ one-shot คือการเมาท์ระบบไฟล์ของเครื่องระยะไกลด้วยSSHFS ( ระบบไฟล์FUSE ) คุณควรเปิดใช้งานการบีบอัดที่ระดับ SSH

mkdir ~/net/remote.example.com
sshfs -C remote.example.com:/ ~/net/remote.example.com
tar -czf foo.tgz -C ~/net/remote.example.com/path/to/directory foo

3
ฉันอยากรู้เพียงทำไมคุณแนะนำtar -cf - foo | gzip -9แทนtar -czf - fooหรือtar -cz foo?
Patrick

@ แพทริกพกพาได้เล็กน้อยเช่นมันจะใช้กับโซลาริส
Gilles 'หยุดความชั่วร้าย'

คุณจะอธิบายความขัดแย้งทั้งหมดได้ไหม?
Rootical V.

3
@RooticalV tar -cf - fooสร้าง ( -c) เก็บบนออกมาตรฐาน ( -f -) fooจากแฟ้ม gzip -9ใช้วิธีการบีบอัดที่ดีที่สุด (ช้าที่สุด) ssh remote.example.com tar cz /path/to/directory/foo > foo.tar.gzหากคุณไม่ดูแลคุณก็สามารถใช้
arekolek

-1

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

$ ssh domain.net 'ls foo'
file1   file2

$ ssh domain.net 'tar czf - foo' | tar xz

$ ls foo
file1   file2

1
นี่ไม่ได้จัดtarเก็บไฟล์เก็บถาวรในเครื่องท้องถิ่นซึ่งเป็นสิ่งที่ตั้งใจไว้
Kusalananda

1
มีไว้สำหรับผู้ที่เชื่อมโยงไปถึงคำถามนี้ (เช่นฉัน) เมื่อค้นหาวิธีคัดลอกบางสิ่งผ่าน SSH ด้วยการบีบอัด มีเพียงส่วนเพิ่มเติมนี้tar xzจากไพพ์พร้อมตัวอย่างที่ง่ายและอ่านได้มากขึ้น
Pierre de LESPINAY
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.