如何使用SFTP将文件复制/复制到另一个目录?

时间:2015-01-22 13:20:51

标签: sftp

我在SFTP位置创建了一个目录,我想将文件从一个SFTP目录移动到另一个目录,但不支持cp命令。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:6)

核心SFTP协议不支持复制远程文件。

copy-file extension to the protocol的草稿,但只有少数SFTP服务器(例如ProFTPD/mod_sftp和Bitvise SFTP服务器)支持,而且很少有SFTP客户端({{3}例如)。

最广泛的OpenSSH SFTP服务器绝对不支持它。也不是OpenSSH SFTP客户端(WinSCP),即没有cp命令或任何其他功能相同的命令。


备选方案:

  • 如果您有SSH /终端访问服务器,请使用sftp
  • 如果您的SFTP服务器支持copy-file扩展名,请使用支持它的SFTP客户端。
  • 否则,您唯一的选择是将文件下载到本地临时位置,并将其副本上传回其他/目标远程目录。
    一些SFTP客户端甚至可以一次性透明地为您执行此操作(例如,在WinSCP中,请参阅shell cp command上的通过本地临时副本复制选项)。

(我是WinSCP的作者)

答案 1 :(得分:1)

您可以在命令行模式(winscp /console)中使用WinSCP克隆远程目录。让我们假设您在远程SFTP服务器上有以下结构:

theDestinationDirectory/
  |-file1.txt
  |-file2.txt

您可以使用以下脚本(在WinSCP控制台中)复制此远程目录:

open sftp://myUsername:myPassword@myftp.mydomain.com
mkdir theDestinationDirectory
call cp theSourceDirectory/* theDestinationDirectory/ -r

然后,您可以检查您的副本是否已正确完成(在WinSCP控制台中):

ls theDestinationDirectory

drwxr-sr-x   2 uid12345 gid12345        37 Jul 29 23:50:24 2016 .
drwxr-sr-x   6 uid12345 gid12345        75 Jul 29 23:50:11 2016 ..
-rw-r--r--   1 uid12345 gid12345     29670 Jul 29 23:50:24 2016 file1.txt
-rw-r--r--   1 uid12345 gid12345     12432 Jul 29 23:50:24 2016 file2.txt

请注意,正如Martin Prikryl所写,所有SFTP服务器可能都不支持这种情况......(至少我的支持)