ฉันต้องการดาวน์โหลดไฟล์จากเซิร์ฟเวอร์ระยะไกลไปยังไดรฟ์ในเครื่องของฉันและทำจากบรรทัดคำสั่ง ฉันต้องการทำสิ่งนี้ผ่าน SSH ฉันจะทำสิ่งนี้ได้อย่างไร
หมายเหตุ: เซิร์ฟเวอร์ระยะไกลคืออูบุนตูท้องถิ่นคือ Mac OS X
ฉันต้องการดาวน์โหลดไฟล์จากเซิร์ฟเวอร์ระยะไกลไปยังไดรฟ์ในเครื่องของฉันและทำจากบรรทัดคำสั่ง ฉันต้องการทำสิ่งนี้ผ่าน SSH ฉันจะทำสิ่งนี้ได้อย่างไร
หมายเหตุ: เซิร์ฟเวอร์ระยะไกลคืออูบุนตูท้องถิ่นคือ Mac OS X
คำตอบ:
ใช้scp
-command มันรันอยู่ด้านบนของ SSH ตัวอย่าง:
scp username@remote.host:/path/to/file localfile
นอกจากนี้ยังใช้งานได้อีกทางหนึ่ง
scp localfile username@host:/path/remotefile
สามารถตัดชื่อผู้ใช้เส้นทางและชื่อไฟล์ได้ (แต่ไม่ใช่ตัว:
!)
ดังที่ Iain กล่าวว่า SFTP ทำงานได้เช่นกัน แต่ฉันมักจะชอบscp
การcp
ใช้งานที่เหมือนกัน
-p
scp
มันคัดลอกไปที่คุณลักษณะของไฟล์ด้วย (timestamps และ flag) ฉันพบว่าฉันต้องการ-p
บ่อยกว่าที่ฉันไม่ต้องการ!
-3
แฟล็ก: scp -3 jeff@firsthost.com:/files/file1.zip brad@secondhost.com:/archives
สิ่งนี้มีประโยชน์หากคุณจำเป็นต้องใช้ไพรเวตคีย์สำหรับการเข้าถึงเซิร์ฟเวอร์ทั้งสองที่พบใน localhost เท่านั้น: scp -3i /local/path/to/.ssh/private_key dan@host1:/path/to/file.txt miri@host2:/path/to/upload/dir/
แถบความคืบหน้าถูกปิดใช้งานสำหรับ -3
คุณสามารถใช้rsync
มันได้ มันสามารถทำงานผ่าน SSH
rsync -avvP
เป็นที่ชื่นชอบสำหรับไฟล์และ / หรือโฟลเดอร์ แต่มีหนึ่งข้อเสียเปรียบ: จะต้องมีการติดตั้งบนเครื่องระยะไกล
-e ssh
การบอก rsync เพื่อเชื่อมต่อผ่าน ssh
ฉันใช้ SFTP สำหรับสิ่งนี้ เป็นบรรทัดคำสั่งและใช้ความปลอดภัยเช่นเดียวกับ SSH
หากคุณไม่สามารถใช้scp
หรือ SFTP คุณสามารถใช้งานtar
มากกว่า SSH:
tar cf - . | ssh otherhost "cd /mydir; tar xvf -"
อันนี้ก็ดีถ้าคุณมีไฟล์ที่กระจัดกระจายซึ่งมิฉะนั้นจะ "ระเบิด"
scp username@remote1:/path/to/file username@remote2:/path/to/file