วิธีอัพโหลดไฟล์โลคัลไปยังเซิร์ฟเวอร์ผ่านเทอร์มินัล Linux


47

ฉันกำลังพยายามอัพโหลดไฟล์ในเครื่องไปยังเซิร์ฟเวอร์โดยใช้ Putty หรือ SSH แต่ไม่ได้รับการอัปโหลดที่นั่น

มีวิธีการโดยตรงในการอัพโหลดไฟล์จากโลคัลไปยังเซิร์ฟเวอร์จากเทอร์มินัล Linux โดยไม่ใช้ FTP ฯลฯ หรือไม่?


SFTP คือสิ่งที่คุณกำลังมองหา

ต้องการถ่ายโอนไฟล์โลคัลของฉันไปยังเซิร์ฟเวอร์โดยใช้ Linux Terminal สมมติว่าเราเคยเข้าถึงเซิร์ฟเวอร์โดยใช้ putty หรือ ssh แต่ไม่สามารถถ่ายโอนไฟล์ที่นั่นด้วยเทอร์มินัลเดียวกัน

คำตอบ:


64

แน่ใจ ใช้scp(สำเนาที่ปลอดภัย) เช่นนี้:

scp [source file] [username]@[destination server]:.

แน่นอนแทนที่วงเล็บ[source file], [username]และ[destination server]เพื่อให้ตรงกับการตั้งค่าในท้องถิ่นของคุณ ดังนั้นหากไฟล์นั้นcool_stuff.txtและชื่อผู้ใช้ของคุณบนเซิร์ฟเวอร์ระยะไกลsanjeevและเซิร์ฟเวอร์ปลายทางคือexample.comคำสั่งจะเป็น:

scp cool_stuff.txt sanjeev@example.com:.

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

scp sanjeev@example.com:cool_stuff.txt .

คำสั่งนั้นจะคัดลอกไฟล์ระยะไกลcool_stuff.txtไปยังไดเรกทอรีท้องถิ่นใด ๆ ที่คุณอยู่และถ้าคุณกำลังทำสิ่งนี้กับไฟล์หลายไฟล์ให้ใช้ wildcard ( *) เหมือนที่คุณต้องการสำหรับcpคำสั่งปกติ

นอกจากนี้.เพียงแค่บ่งชี้เส้นทางไดเรกทอรีทันที เช่นคนที่คุณอยู่ในขณะที่คุณเรียกใช้คำสั่งหรือเส้นทางทันทีที่ผู้ใช้ระยะไกลบนเซิร์ฟเวอร์ปลายทางมี แต่คุณสามารถระบุพา ธ เช่นเดียว/this/path/right/hereกับตัวอย่างโลคัลเป็นรีโมต

scp cool_stuff.txt sanjeev@example.com:/this/path/right/here

หรือรีโมตเป็นตัวอย่างโลคัลที่นี่:

scp sanjeev@example.com:cool_stuff.txt /this/path/right/here

ตอนนี้หากรีโมตเซิร์ฟเวอร์ไม่อนุญาตให้ใช้ SSH และ SFTP เท่านั้น SFTP ก็เป็นวิธีที่จะไป แต่scpมีประโยชน์มากเมื่อคุณต้องการเพียงแค่โยนไฟล์และไม่ทำกระบวนการ SFTP ทั้งหมดด้วยตนเองจากบรรทัดคำสั่ง


13

เมื่อเข้าสู่ระบบเซิร์ฟเวอร์ระยะไกลผ่านรหัสsshเราสามารถใช้การ-iตั้งค่าด้านล่างเพื่อส่งรหัสของเราไปยังเซิร์ฟเวอร์:

scp -i /path/to/.ssh/id_rsa path/to/file/myFiles.gz myServer.com:/folder/on/server

-i identity_file
เลือกไฟล์ที่อ่าน (รหัสส่วนตัว) สำหรับการรับรองความถูกต้องของรหัสสาธารณะจะถูกอ่าน
ตัวเลือกนี้จะถูกส่งโดยตรงไปยัง ssh (1)


13

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

scp /path/to/file username@servername/ip:/destination/folder/

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