python如何操作rsync

rt
没找到相关模块

阅读 15.9k
2 个回答

有几种可选的解决方案,可以根据实际情况(运行平台,应用需求)进行取舍。

方案一、用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完成一个自动化的日常维护任务,那么推荐第一种方案。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题