迷茫2017-04-17 17:31:19
有几种可选的解决方案,可以根据实际情况(运行平台,应用需求)进行取舍。
方案一、用python封装对本地rsync程序的调用
设若需求比较简单,且运行平台上有rsync的本地程序可用,可以使用subprocess模块封装对rsync的调用命令(也可以使用os模块进行封装,原理上是一样的),例如:
cmd = "rsync -avrz /opt/data/filename root@ip:/opt/data/file"
subprocess.call(cmd, shell=True)
这种方案的优点是实现简单,不容易有bug。缺点是如果你在Windows平台上运行,就比较麻烦,需要安装本地的rsync程序,比如通过cygwin进行安装之类。
方案二、python对rsync协议的实现:
在Bitbucket上Vivian De Smedt提供了一个针对rsync的python实现,体积很小只有15KB。
https://bitbucket.org/vds2212/rsync.py
这种做法的优点是平台无关,只要是运行python的平台都能用。但是由于这是个人的实现,所以可能会有bug,会与标准rsync不兼容,需要花时间学习脚本的使用方式等等问题。
如果目的只是希望在Linux平台上,在python脚本中调用rsync完成一个自动化的日常维护任务,那么推荐第一种方案。
天蓬老师2017-04-17 17:31:19
呵呵,没有搜索相关模块....
只搜索pypi能找到好几个.
https://pypi.python.org/pypi?%3Aaction=search&term=rsync&submit=search