Apa perbedaan antara SCP dan SFTP?

162

Biasanya, saya menggunakan scpperintah untuk mentransfer file di * nixes.

Apa perbedaan antara SFTP dan SCP? Bukankah keduanya bekerja pada SSH?

tidak
sumber

Jawaban:

98

Singkatnya, SCP hanya dapat digunakan untuk mentransfer file, dan itu tidak interaktif (yaitu, semuanya harus ditentukan pada baris perintah). SFTP lebih rumit, dan memungkinkan perintah interaktif untuk melakukan hal-hal seperti membuat direktori, menghapus direktori dan file (tentu saja semua tunduk pada izin sistem), dll.

Alex
sumber
34
Mengenai interaktivitas: Perbedaan yang Anda jelaskan adalah tentang klien SFTP / SCP tertentu seperti yang diterapkan dalam OpenSSH. Bukan apa-apa tentang protokol itu sendiri. Sangat mungkin untuk mengimplementasikan klien SCP interaktif atau klien SFTP non-interaktif.
Martin Prikryl
4
Satu hal lagi: scp tidak berfungsi jika server hanya mengizinkan akses SFTP melalui saluran ForceCommand internal-sftp. Saya pikir PermitTTY nojuga mencegah akses scp tetapi memungkinkan akses sftp, meskipun saya bisa saja salah ketik kata sandi saya setiap kali saya mencoba. Tapi kedua hal itu seharusnya tidak mencegah sftp. Sumber: pengalaman pribadi.
ecube
Dapatkah saya berasumsi bahwa server SFTP juga mampu menerima transfer SCP?
gus
@ gus no, lihat komentar ecube
Pere
104

Dari Wikipedia :

Dibandingkan dengan protokol SCP sebelumnya, yang hanya memungkinkan transfer file, protokol SFTP memungkinkan untuk serangkaian operasi pada file jarak jauh - ini lebih seperti protokol sistem file jarak jauh. Kemampuan tambahan klien SFTP dibandingkan dengan klien SCP termasuk melanjutkan transfer yang terputus, daftar direktori, dan penghapusan file jarak jauh. [1] Karena alasan ini, relatif mudah untuk mengimplementasikan klien GUI SFTP dibandingkan dengan klien GUI SCP.

dan

Meskipun SCP dan SFTP menggunakan enkripsi SSH yang sama selama transfer file dengan tingkat overhead umum yang sama, SCP biasanya jauh lebih cepat daripada SFTP dalam mentransfer file, terutama pada jaringan latensi tinggi. Ini terjadi karena SCP mengimplementasikan algoritma transfer yang lebih efisien, yang tidak perlu menunggu konfirmasi paket. Ini mengarah ke kecepatan yang lebih cepat tetapi dengan mengorbankan tidak dapat mengganggu transfer, jadi tidak seperti SFTP, transfer SCP tidak dapat dibatalkan tanpa mengakhiri sesi.

Jarvin
sumber
18
"SCP biasanya jauh lebih cepat daripada SFTP saat mentransfer file."
Micah Bolen
3
"Tetapi datang dengan mengorbankan karena tidak dapat mengganggu transfer". Itu pertukaran yang cukup penting.
aaaaaa
aaaaaa, "tanpa mengakhiri sesi" yang bukan masalah besar jika semua sesi adalah menyalin file. Jika Anda menyalin banyak file, klien juga dapat menunggu salinan file individual selesai.
Victor Sergienko
9

Dari perspektif garis perintah murni:

  • scp tidak memiliki mode interaktif juga tidak dapat membaca skrip perintah, itu berarti semuanya harus ditulis pada baris perintah.
  • sftp memiliki mode interaktif dan dapat membaca perintah dari file.

Perbedaan penting lainnya antara 2 perintah adalah bahwa sftp tidak dapat menempatkan file lokal ke lokasi jauh menggunakan satu baris perintah , meskipun itu bisa mendapatkan file jarak jauh, sedangkan scp dapat melakukan keduanya .

sftp dapatkan file jarak jauh

sftp user@host:/path/to/remote.file [/path/to/local.file]

scp dapatkan file jarak jauh

scp user@host:/path/to/remote.file [/path/to/local.file]

scp menaruh file jarak jauh

scp /path/to/local.file user@host:[/path/to/remote.file]
Stéphane Ch.
sumber
2
Menempatkan file:sftp {user}@{host}:{remote_dir} <<< $'put {local_file_path}'
gdw2
3

SSH ( S ecure SH ell) adalah protokol jaringan kriptografi untuk memungkinkan login jarak jauh dan layanan jaringan lainnya untuk beroperasi secara aman melalui jaringan yang tidak aman.

Perbedaan: SFTP bekerja pada mode interaktif (sesi) dan SCP bekerja pada non-interaktif. Dengan menggunakan SFTP kita dapat mengakses sistem file jarak jauh yaitu membuat, menghapus, dan mendaftarkan file.

Kemiripan: Kedua SCP ( S ecure C alin P rotocol) dan SFTP ( S SH F ile T ransfer P rotocol) adalah protokol jaringan, yang mendukung manajemen file antara host pada jaringan. Keduanya menggunakan SSH.

lebih

Premraj
sumber
2

Sebagian besar perbedaan dari dua protokol telah dikatakan dalam jawaban lain, dan lebih secara verbal di https://unix.stackexchange.com/q/8707/19088

Perbedaan lain, menurut dokumentasi curl , adalah bahwa protokol SCP tidak terlalu portabel dan biasanya hanya berfungsi di antara sistem Unix.

Omong-omong, curl mengimplementasikan kedua protokol dan tidak seperti implementasi klien OpenSSH SFTP default, itu tidak interaktif untuk SFTP dan SCP.

Dan perhatikan bahwa ada juga protokol FISH , yang memungkinkan Anda untuk mentransfer file melalui SSH tanpa perlu SCP atau SFTP. Sejauh yang saya tahu IKAN tidak terlalu populer, saat ini diimplementasikan hanya dalam beberapa manajer file ( Midnight Commander dan beberapa yang berbasis KDE) dan Lftp .

Pere
sumber
2
"Perbedaan lain, menurut dokumentasi curl, adalah bahwa protokol SCP tidak terlalu portabel dan biasanya hanya berfungsi di antara sistem Unix." Ironi dari bagian jawaban Anda ini adalah bahwa GUI SCP paling populer disebut WinSCP, dan - Anda sudah dapat menebaknya - ini adalah Program Windows.
brett
1
@ brett klien paling populer mungkin adalah OpenSSH's scp, saya akan mengatakan itu sangat dikerahkan. WinSCP adalah klien SCP / SFTP / etc tetapi saat ini sebagian besar digunakan sebagai klien (S) FTP: "Pada bulan Juni 2003 versi 3.0 dirilis, memperkenalkan dukungan untuk alternatif untuk SCP, protokol SFTP. Dari waktu ke waktu berevolusi dari alternatif ke protokol utama. Meskipun demikian, nama mapan "WinSCP" dipertahankan. " (dari History of WinSCP: winscp.net/eng/docs/project_history)
Pere