nos*_*nos 176 ssh file-transfer scp sftp
通常,我使用scp
命令在 *nixes 上传输文件。
SFTP 和 SCP 有什么区别?他们不是都在 SSH 上工作吗?
Ale*_*lex 110
简而言之,SCP 只能用于传输文件,并且它是非交互的(即,所有内容都必须在命令行中指定)。SFTP 更复杂,并且允许交互式命令执行诸如创建目录、删除目录和文件(当然都受系统权限)等操作。
Jar*_*vin 107
来自维基百科:
与早期只允许文件传输的 SCP 协议相比,SFTP 协议允许对远程文件进行一系列操作——它更像是一种远程文件系统协议。与 SCP 客户端相比,SFTP 客户端的额外功能包括恢复中断的传输、目录列表和远程文件删除。[1] 由于这些原因,与 GUI SCP 客户端相比,实现 GUI SFTP 客户端相对简单。
和
尽管 SCP 和 SFTP 在文件传输期间使用相同的 SSH 加密,并且具有相同的一般开销级别,但在传输文件时,SCP 通常比 SFTP 快得多,尤其是在高延迟网络上。发生这种情况是因为 SCP 实现了一种更有效的传输算法,该算法不需要等待数据包确认。这会带来更快的速度,但代价是无法中断传输,因此与 SFTP 不同,SCP 传输无法在不终止会话的情况下取消。
小智 13
从纯粹的命令行角度来看:
这两个命令之间的另一个重要区别是sftp无法使用单个命令行将本地文件放到远程位置,尽管它可以获取远程文件,而scp可以同时执行。
sftp user@host:/path/to/remote.file [/path/to/local.file]
Run Code Online (Sandbox Code Playgroud)
scp user@host:/path/to/remote.file [/path/to/local.file]
Run Code Online (Sandbox Code Playgroud)
scp /path/to/local.file user@host:[/path/to/remote.file]
Run Code Online (Sandbox Code Playgroud)
这两个协议的大多数差异已经在其他答案中说明过,并且在https://unix.stackexchange.com/q/8707/19088中更详细地说明了
根据curl的文档,另一个区别是SCP协议的可移植性不太好,通常只能在Unix系统之间工作。
顺便说一下,curl实现了这两种协议,并且与默认的 OpenSSH SFTP 客户端实现不同,它对于 SFTP 和 SCP都是非交互式的。
请注意,还有FISH协议,它允许您通过 SSH 传输文件,而不需要 SCP 或 SFTP。据我所知,FISH 并不是很流行,目前只有少数文件管理器(Midnight Commander和一些基于 KDE 的)和Lftp实现。
归档时间: |
|
查看次数: |
182991 次 |
最近记录: |