正如 OpenSSH 人员所说“scp 协议已经过时”,是时候考虑一下后 scp 时代了。
不过sftp
好像是设计来交互操作的。有没有好的方法来使用sftp
命令之类的scp
?意思是,如何做到这一点sftp
?
scp ./myfile myserver:/home/myfile
或者,有什么好的scp
继任者?
正如 OpenSSH 人员所说“scp 协议已经过时”,是时候考虑一下后 scp 时代了。
不过sftp
好像是设计来交互操作的。有没有好的方法来使用sftp
命令之类的scp
?意思是,如何做到这一点sftp
?
scp ./myfile myserver:/home/myfile
或者,有什么好的scp
继任者?
从 OpenSSH 8.7 开始,
scp
可以使用 SFTP 协议。只需添加-s
开关:从OpenSSH 9.0开始
scp
默认使用 SFTP。sftp
命令确实是围绕命令构建的(如ftp
)。所以它不能作为scp
.尽管您可以使用单行代码,例如:
或者
您可能想要添加
-b -
以强制使用非交互模式。有趣的是(正如@Kamil 提到的),对于下载,您还可以使用类似这样
scp
的语法:(没有记录第二个参数的使用)。
sftp://
自 OpenSSH 7.7 以来,也可以使用前缀,它稍微修改了语法(允许对用户名和路径进行 URL 编码)。从 OpenSSH 8.7开始,通过参数
scp
支持 SFTP 协议。-s
并且即将发布的版本将默认使用 SFTP。PuTTY 包中还有免费/开源的
pscp
命令行客户端,可用于 Linux(但更常用于 Windows)。它具有与 OpenSSH相同的命令行界面scp
。但与其名称相反scp
,它主要是SFTP客户端(如果服务器不支持 SFTP,它可以回退到 SCP)。你可以像这样安装 PuTTY/pscp
apt-get
:Stack Overflow 上也有类似的问题: Single line sftp from terminal
您还应该考虑 rsync。除了 scp 允许的 remote1 到 remote2 传输之外,看起来——
man scp
无论如何快速阅读——你可以让 rsync 很容易地完成所有这些,或者编写一个不太容易的包装器。Rsync 具有您默认获得的其他优势(即,替换旧文件时效率更高),即使您不使用它的许多选项中的任何一个。