如何有效地将大量文件从python客户端传输到服务器和服务器?

如何有效地将大量文件从python客户端传输到服务器和服务器?,python,networking,file-io,xml-rpc,file-transfer,Python,Networking,File Io,Xml Rpc,File Transfer,我有大约100个客户端(Windows计算机大多有一个或两个Mac/UBUNTA),我需要通过中央服务器在客户端之间同步大量文件,而中央服务器几乎不处理同步文件(主要是管理访问权限) 目前,我看到两种解决方案可用: 使用XML-RPC。看起来不错,但我不确定性能如何。从这一点上,我在谷歌上搜索到,这种方法的性能并不理想 使用paramiko并通过scp的ftp复制文件。我不喜欢这种解决方案,因为我将文件存储在riak中,在服务器端需要进行双重I/o工作:首先,将文件写入磁盘,然后从磁盘读取文件,

我有大约100个客户端(Windows计算机大多有一个或两个Mac/UBUNTA),我需要通过中央服务器在客户端之间同步大量文件,而中央服务器几乎不处理同步文件(主要是管理访问权限)

目前,我看到两种解决方案可用:

  • 使用XML-RPC。看起来不错,但我不确定性能如何。从这一点上,我在谷歌上搜索到,这种方法的性能并不理想

  • 使用paramiko并通过scp的ftp复制文件。我不喜欢这种解决方案,因为我将文件存储在riak中,在服务器端需要进行双重I/o工作:首先,将文件写入磁盘,然后从磁盘读取文件,最后将其写入riak

  • 还有第三种方法,比如使用套接字和自己编写文件传输代码吗?是否存在异步XML-RPC服务器?我的任务是否需要一个

    文件传输期间的操作:

  • 上传用户的身份验证

  • 检查用户的磁盘配额

  • 基于规则的访问权限管理(谁可以读取/写入每个文件/目录)

  • 将文件放在riak中是因为需要一定程度的容错性


  • 在我看来,这个应用程序实际上更接近dropbox而不是rsync。我们实际上会使用dropbox api,但这个存储将与我们的其他系统深度集成,因此我们希望对它有更多的控制。

    当你说“同步大量文件”时,我想到的第一件事是rsync。如果您不知道该工具,它允许您高效地同步本地和远程目录。它可以配置为跳过未更改的内容,使其非常高效

    现在,当您说服务器“几乎不处理同步文件”时,“几乎”是什么?如果对文件没有任何操作,可以使用rsync。如果文件上确实有一些繁重的计算,那么这些文件的成本可能会使传输成本相形见绌,因此IO不是您的瓶颈,您可以使用任何工具来实现它,而不会降低性能

    现在,如果可以在服务器上镜像文件并在那里应用各种修改,那么就可以使用rsync高效地传输它们。这将允许您不必重新发明文件传输轮子,而是构建在经过验证的基础架构上。我必须在此强调,我无法从你的描述中理解你到底在做什么,也许如果你再多描述一下需求,会有更好或不同的答案

    根据更新的问题进行编辑:


    有些绑定应允许您同步访问,即使是从MS Windows系统。它没有提到OSX,但因为它非常接近POIX,所以很有可能在没有太多麻烦的情况下工作。在服务器端,您只需监视本地文件系统的更改(例如签出),然后将差异提交给数据库。使用这两个应该可以让您开始,如果以后的性能不够,您可以连接到rsync服务器(开源)并从那里触发数据库更新,而无需通过文件系统。

    我发现使用rsync的想法非常有趣,但是rsync在windows上的工作情况如何?我还更新了问题。开发的应用程序实际上更接近dropbox而不是rsync。我们实际上会使用dropbox api,但该存储将与我们的其他系统深度集成,因此我们希望对其进行更多控制。