【问题标题】:How can I copy/duplicate a file to another directory using SFTP?如何使用 SFTP 将文件复制/复制到另一个目录?
【发布时间】:2015-01-22 13:20:51
【问题描述】:

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

我怎样才能做到这一点?

【问题讨论】:

    标签: sftp


    【解决方案1】:

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

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

    最广泛使用的 OpenSSH SFTP 服务器绝对不支持它。也不是通过 OpenSSH SFTP 客户端 (sftp),即没有 cp 命令或任何其他功能等效的命令。未来版本的服务器will support related copy-data 和客户端将支持cp 命令。


    替代方案:

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

    (我是 WinSCP 的作者)

    【讨论】:

      【解决方案2】:

      您可以在命令行模式下使用 WinSCP 克隆远程目录 (winscp /console)。假设您在远程 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 服务器都支持...(至少我的支持)

      【讨论】:

      • 注意事项:您混淆了 FTP 和 SFTP。您正在连接到 SFTP 服务器,而不是 FTP。而且您实际上没有使用 SFTP 进行复制。您正在为副本调用 shell 命令cp(使用WinSCP command call)。因此,实际上您的解决方案与 SFTP(或 FTP)无关 - 在我的回答中,“如果您可以通过 SSH/终端访问服务器,请使用 shell cp 命令。”
      • @MartinPrikryl:你说得对,我以一种令人困惑的方式使用 FTP 术语并相应地编辑了答案。顺便说一句,感谢 WinSCP,这是一个很棒的工具。
      猜你喜欢
      • 1970-01-01
      • 2011-08-11
      • 2017-11-18
      • 1970-01-01
      • 2012-02-15
      • 1970-01-01
      • 2013-05-21
      • 2019-04-17
      相关资源
      最近更新 更多