SCP 和 SFTP 有什么区别?

SCP 和 SFTP 有什么区别?

通常我使用该scp命令在*nixes上传输文件。

SFTP 和 SCP 有什么区别?它们不是都在 SSH 上运行吗?

答案1

简而言之,SCP 只能用于传输文件,并且是非交互式的(即,必须在命令行上指定所有内容)。SFTP 更加复杂,允许交互式命令执行诸如创建目录、删除目录和文件(当然,所有这些都受系统权限的约束)等操作。

答案2

维基百科

与早期仅允许文件传输的 SCP 协议相比,SFTP 协议允许对远程文件进行一系列操作 - 它更像是远程文件系统协议。与 SCP 客户端相比,SFTP 客户端的额外功能包括恢复中断的传输、目录列表和远程文件删除。[1] 由于这些原因,与 GUI SCP 客户端相比,实现 GUI SFTP 客户端相对简单。

尽管 SCP 和 SFTP 在文件传输过程中都使用相同的 SSH 加密,并且总体开销水平相同,但 SCP 在文件传输方面通常比 SFTP 快得多,尤其是在高延迟网络上。这是因为 SCP 实施了一种更高效的传输算法,该算法不需要等待数据包确认。这可以提高速度,但代价是无法中断传输,因此与 SFTP 不同,SCP 传输不能在不终止会话的情况下取消。

答案3

从纯命令行角度来看:

  • SCP没有交互模式,也不能读取命令脚本,这意味着一切都必须在命令行上写。
  • 安全FTP具有交互模式并可以从文件读取命令。

这两个命令之间的其他重要区别是安全FTP无法使用单个命令行将本地文件放到远程位置,虽然它可以获取远程文件,但SCP可以同时进行

sftp 获取远程文件

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

scp 获取远程文件

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

scp 放置远程文件

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

答案4

这两种协议的大多数区别已经在其他答案中提到过了,在https://unix.stackexchange.com/q/8707/19088

另一个不同点是,根据curl 的文档,就是SCP协议的可移植性不是很好,通常只能在Unix系统之间起作用。

顺便一提,卷曲实现了这两种协议,与默认的 OpenSSH SFTP 客户端实现不同,它非交互式适用于 SFTP 和 SCP。

请注意,还有协议,它允许您通过 SSH 传输文件,而无需 SCP 或 SFTP。据我所知,FISH 并不是很流行,目前仅在少数文件管理器中实现(午夜指挥官以及一些基于 KDE 的)和FTP

相关内容