在SFTP会话中,可以将一个远程文件复制到同一远程SFTP服务器上的另一个位置



假设我在远程SFTP服务器上有一个文件/home/user/dir1/file.txt。当我处于连接到此服务器的sftp会话(我的服务器只允许sftp连接,但不允许ssh连接!)时,我想将此文件复制到/home/user/dir2/file.txt吗?

有可能这样做吗?如果是,命令是什么?

例如,以下命令将重命名并将文件从远程服务器上的一个目录移动到另一个目录。

sftp> rename dir1/file.txt dir2/file.txt

我正在寻找一个命令,可以将文件从远程服务器上的一个目录复制到另一个目录(如果存在的话)。

解决方法是从第一个位置下载文件并上传到第二个位置,但当有问题的文件很大并且网络连接缓慢时,这不是一个选项!

不确定您所说的"命令";。您指的是SFTP协议请求吗?或者某个可编写脚本/命令行SFTP客户端的命令(例如OpenSSH sftp)?

SFTP协议本身不允许复制远程文件。尽管有一个名为copy-file的协议的可选扩展可以达到这个目的。

引用copy-file扩展规范:

6.复制远程文件

byte   SSH_FXP_EXTENDED
uint32 request-id
string "copy-file"
string source-file
string destination-file
bool   overwrite-destination

此请求将文件从服务器上的一个位置复制到另一个位置。服务器以SSH_FXP_STATUS进行响应。

不过,没有多少SFTP服务器支持该扩展。我知道ProFTPD mod_sftp和Bitvise WinSSHD都支持。OpenSSH只在最新的9.0版本中支持相关的copy-data

最新更新