【问题标题】:Python: Copy files between two remote serversPython:在两个远程服务器之间复制文件
【发布时间】:2016-07-20 19:10:43
【问题描述】:

我想了解使用 python 将文件从一台远程服务器复制到另一台远程服务器的最佳方法。

我的设置如下所示:

+--------------+
|   Server A   |                                                                              
+--------------+                                                                 
| Build Server |
+--------------+
       | 
       |
+-------------+
|  Server B   |
+-------------+
| Python Code |
+-------------+
      |
      |
+------------+
|  Server C  |
+------------+
| App Server |
+------------+

我在构建服务器中存储了一些 RPM。这些二进制文件需要传输到应用服务器,以便我可以将它们安装在这个盒子上。

目前我正在使用 Python 的 Paramiko 库 [sftp.get 和 sftp.put] 并将二进制文件从服务器 A 获取到服务器 B 并将其从服务器 B 传输到服务器 C。无论如何我可以构建我的代码以便二进制文件可以直接从服务器 A 传输到服务器 C 吗?

更准确地说,执行以下操作:

scp -3 user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt

这种方式避免了中间跳。

非常感谢您的建议/改进!

【问题讨论】:

    标签: python python-2.7 paramiko


    【解决方案1】:

    我会使用rsync 来处理这个问题。您可以直接使用subprocess 模块从Python 调用scp,或者尝试包装或实现的现有Python 模块rsync

    通过子进程调用scp 比通过paramiko 执行所有必需的操作要容易得多。

    【讨论】:

    • scp 不同,rsync 无法在两个远程主机之间进行复制。您仍然需要ssh 进入远程主机之一才能运行rsync 命令。虽然我同意仅使用subprocess 调用scprsync 可能比尝试找到它们的python 实现更好。
    • 这样可以吗?ssh user1@remote1 'rsync -avz /path/to/source user2@remote2:/path/to/dest'
    猜你喜欢
    • 2018-09-04
    • 2021-03-10
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多