有几种可选的解决方案,可以根据实际情况(运行平台,应用需求)进行取舍。 方案一、用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完成一个自动化的日常维护任务,那么推荐第一种方案。
有几种可选的解决方案,可以根据实际情况(运行平台,应用需求)进行取舍。
方案一、用python封装对本地rsync程序的调用
设若需求比较简单,且运行平台上有rsync的本地程序可用,可以使用subprocess模块封装对rsync的调用命令(也可以使用os模块进行封装,原理上是一样的),例如:
这种方案的优点是实现简单,不容易有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完成一个自动化的日常维护任务,那么推荐第一种方案。