Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

SCP vs SFTP: ควรใช้ตัวไหนสำหรับถ่ายโอนไฟล์?

SCP (Secure Copy Protocol) และ SFTP (Secure File Transfer Protocol) เป็นทางเลือกแทน FTP แบบเก่าที่ส่งข้อมูลเป็น plain text ทั้งคู่ใช้โปรโตคอล SSH สำหรับการสื่อสารที่ปลอดภัย

SCP (Secure Copy Protocol)

  • Non-interactive: ใช้ shell + remote command เพียงคำสั่งเดียว ถ่ายโอนไฟล์ระหว่าง 2 เครื่อง
  • รุ่นปลอดภัยของ RCP ใช้ SSH สำหรับ authentication แต่ syntax คล้าย FTP
  • เหมาะสำหรับ สคริปต์อัตโนมัติ (unattended transfers)
  • รองรับ wildcard สำหรับถ่ายโอนหลายไฟล์
  • ถ่ายโอนระหว่าง local↔remote หรือ remote↔remote
  • เขียนไบต์ลง SSH tunnel ให้ SSH จัดการ integrity/compression

SFTP (Secure File Transfer Protocol)

  • Interactive: โปรโตคอล/โปรแกรมโต้ตอบ ทำงานบน SSH encrypted transport
  • ใช้ compression, public key authentication เข้าสู่โฮสต์ แล้วเข้าสู่ interactive command mode
  • SFTP อาจหมายถึง "SSH File Transfer Protocol" (มาตรฐานใหม่) หรือ "Simple FTP" (เก่า ถูกทดแทนด้วย TFTP, พอร์ต 115)
  • รองรับ non-interactive mode (ถ้าใช้ auth แบบไม่โต้ตอบ)
  • ไม่ใช่ FTP over SSH แตเป็นโปรโตคอลใหม่โดยสิ้นเชิง

ความแตกต่างสำคัญ

ด้านSCPSFTP
ฟังก์ชันหลักถ่ายโอนไฟล์ปกป้องการขโมยข้อมูลจัดการไฟล์ครบ: เข้าถึง, ถ่ายโอน, จัดการ (ลบ, rename, ls)
การทำงานถ่ายโอนอย่างเดียว ไม่ทำ directory listing, ไม่ลบไฟล์ remoteทำทุกอย่างได้ มี GUI component ควบคุม remote FS ได้
ความเร็วเร็วกว่า (ยืนยัน packet เร็ว, อัลกอริทึมมีประสิทธิภาพกว่า) โดยเฉพาะ high latencyช้ากว่า (ต้อง ack ทุก packet เล็กๆ)
Resume transferไม่รองรับรองรับ (ผ่าน command line client)
Command lineNon-interactive: เขียนคำสั่งทั้งหมดบนบรรทัดคำสั่งInteractive: อ่านคำสั่งจากไฟล์ได้

ความคล้าย: ใช้พอร์ต TCP 22, รันบน SSH, encryption + public key auth, ไม่มีขีดจำกัดขนาดไฟล์

ควรเลือกตัวไหน?

ไม่มี "ตัวไหนดีกว่า" แน่นอน ขึ้นอยู่กับความต้องการ:

  • SCP: ถ่ายโอนครั้งเดียว, ใช้ในสคริปต์, ต้องการความเร็ว
  • SFTP: จัดการไฟล์ remote ต่อเนื่อง, ต้องการ resume, ต้องการ GUI/โต้ตอบ