通常我使用该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]