像 scp 一样使用 sftp

mog*_*gya 5 linux scp openssh sftp

正如 OpenSSH 人所说的“scp 协议已经过时”,是时候考虑后 scp 时代了。

不过sftp好像是为了交互操作而设计的。有没有sftp像这样使用命令的好方法scp?意味着,如何做到这一点sftp

scp ./myfile myserver:/home/myfile
Run Code Online (Sandbox Code Playgroud)

或者,有什么好的scp继任者?

Mar*_*ryl 5

sftp命令确实是围绕命令构建的(如ftp)。所以它不能作为scp.

虽然您可以使用单线,如:

echo get /remote/path/file.txt /local/path.txt | sftp user@example.com
Run Code Online (Sandbox Code Playgroud)

或者

echo put /local/path.txt /remote/path/file.txt | sftp user@example.com
Run Code Online (Sandbox Code Playgroud)

您可能希望添加-b -强制非交互模式。


有趣的是(正如@Kamil 提到的),对于下载,您还可以使用这种scp类似语法:

sftp user@example.com:/remote/path/file.txt /local/path.txt
Run Code Online (Sandbox Code Playgroud)

(第二个参数的使用没有记录)。

sftp://自 OpenSSH 7.7 起,也可以使用前缀,这在一定程度上修改了语法(允许对用户名和路径进行 URL 编码)。


OpenSSH 的未来版本scp将通过参数支持 SFTP 协议-M sftp


PuTTY 包中还有免费/开源pscp命令行客户端,可用于 Linux(但在 Windows 上更常用)。它具有OpenSSH相同的命令行界面scp。但与其名称相反scp,它主要是SFTP客户端(如果服务器不支持 SFTP,它可以回退到 SCP)。

尽管它的名字,PSCP(像许多其他表面上的 scp 客户端一样)可以使用这些协议中的任何一个。

...

通常 PSCP 会尝试使用 SFTP 协议,并且只有在服务器上没有 SFTP 时才会回退到 SCP 协议。

您可以使用以下命令安装 PuTTY/pscp apt-get

sudo apt-get install -y putty
Run Code Online (Sandbox Code Playgroud)

Stack Overflow 上也有类似的问题: Single line sftp from terminal