You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Paramiko SCP完整复制远程目录本身及其内容至本地

解决Paramiko SCP复制远程目录本身到本地的问题

你遇到的问题是因为远程路径末尾带斜杠导致的:当remote_path以斜杠结尾时,SCPClient会仅复制该目录下的内容到本地指定路径,而非目录本身。要实现先创建目录e再复制内容的效果,只需调整两个参数的写法:

调整后的代码

def main():
    ssh_client = paramiko.SSHClient()
    ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    private_key = paramiko.RSAKey(filename="/home/harry/.ssh/id_rsa")
    ssh_client.connect(host_name, 
                    port = 22, 
                    username = user_name,
                    private_key)

    scp = SCPClient(ssh_client.get_transport())
    # 去掉远程路径末尾的斜杠,本地路径指定为目标父目录
    scp.get(remote_path=f"/a/b/c/d/e", local_path=f"./f/", recursive=True, preserve_times=True)
    scp.close()
    ssh_client.close()

原理说明

  • 当remote_path不带末尾斜杠时,SCPClient会将整个e目录作为复制对象,将其完整复制到local_path指定的./f/目录下,最终形成./f/e/结构,包含原远程目录的所有内容。
  • 如果你的本地./f/目录不存在,SCPClient会自动创建它,无需额外手动创建。

内容的提问来源于stack exchange,提问作者Harry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 09:12:38