首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过网络将文件夹复制到多个服务器的最快方法是什么(Python)

通过网络将文件夹复制到多个服务器的最快方法是什么(Python)
EN

Stack Overflow用户
提问于 2012-04-17 06:29:43
回答 2查看 1.2K关注 0票数 1

正如标题所说,我想要完成的是一个包(通常大小可能在500Mb到1 1Gb之间),我想同时(并发)复制大约40台服务器,我一直在使用一个当时运行复制的脚本,因此我正在考虑以下可能性:

1-多进程库,并为每个复制函数创建单个进程,以便它们可以并发运行;-although我认为我可能最终会遇到I/O瓶颈,并且进程无法共享相同的数据。

2-我使用的不是单一的互联网连接,而是一个巨大的企业广域网。

谁能告诉我有没有其他更有效(更快)的方法来达到同样的目的?或者其他方法来解决这个问题呢?(我可以在一个双核工作站上运行这个任务)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-19 06:27:46

假设你的机器有1Gbit的连接。如果你幸运的话,你会得到800Mbit/s的速度,复制每个1GByte需要大约10s,更新这些机器需要6-7分钟。如果这已经足够好了,你唯一需要做的就是有效地使用1Gbit来达到这个目标(你从你当前的脚本中看到了什么?好吧,1Gbit在WAN上可能是有限的,但您可以进行类似的分析)。在这里,多处理可能有帮助,也可能没有帮助。但它不会神奇地为你带来更多的带宽。

如果它不够好,我会考虑:

  • go P2P (参见miku;的答案),所以一旦一台机器有了一些数据,它就可以使用自己的带宽与其他机器共享。这在一定程度上取决于您的网络拓扑结构(是否存在其他瓶颈)。
  • 查看多播,如果网络在您的控制下足够,您可以适当地路由(这对于广域网来说似乎不太可能,但也许有一天在IPv6仙境中...)。而不是复制相同的数据40次(假设每次都是相同的),您只需广播一次,所有接收器同时接收它。组播UDP并不可靠(我想更多的是为IPTV设计的),但是已经有了attempts to build reliable file transfer tools using multicast技术,例如OpenPGMMS's own implementation.

票数 0
EN

Stack Overflow用户

发布于 2012-04-17 06:38:14

1)我对此没有经验,但它看起来很适合您的用例:

  • http://code.google.com/p/pysendfile/

sendfile(2)是一个系统调用,它提供了一种将数据从一个文件描述符复制到另一个文件描述符(套接字)的“零复制”方式。短语“零复制”指的是两个描述符之间的所有数据复制完全由内核完成,而不是将数据复制到用户空间缓冲区中。这在通过套接字(例如FTP)发送文件时特别有用。

你想什么时候使用它?基本上任何通过网络发送文件的应用程序都可以利用

(2)。

2)另一种选择是使用some torrent library。我最近learned (跳到31:00的torrent内容),facebook通过torrent分发他们的日常软件更新(在大约15分钟内用1.5 so的二进制文件更新上千个服务器)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10182616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档