使用 Paramiko 将文件从远程目录复制到远程子目录

kte*_*ten 1 python sftp paramiko

如何将远程服务器中的文件复制/maindir/fil1.txt到子目录/maindir/subdir/file1.txt。我使用 实现了 SFTP paramiko。但它总是检查要复制的本地路径。

filename_full_path='/maindir/fil1.txt'
destfilename_full_path='/maindir/subdir/file1.txt'
sftp.put(filename_full_path, destfilename_full_path)
Run Code Online (Sandbox Code Playgroud)

如何告诉SFTP本地路径也在远程主机中?

Mar*_*ryl 5

核心 SFTP 协议不支持复制远程文件。\n有SFTP 协议的草案copy-data/copy-file扩展。

\n

但在最广泛使用的 OpenSSH SFTP 服务器中,仅copy-data最新版本 9.0支持。另一个支持扩展的服务器是ProFTPDmod_sftp和 Bitvise SFTP 服务器。

\n

因此,即使 Paramiko 确实支持(它不支持),它也可能对您没有任何用处。

\n
\n

备择方案:

\n
    \n
  • 下载文件夹并将其重新上传到新位置(纯 SFTP 解决方案)
  • \n
  • cp在“exec”通道中使用命令(不再是 SFTP,需要 shell 访问) \xe2\x80\x93 use SSHClient.exec_command.
  • \n
  • 许多错误的复制移动。支持将文件移动到另一个文件夹。
  • \n
\n