安装可以直接用pip执行:
代码如下 | 复制代码 |
pip install yunbk |
github地址如下:
https://github.com/dantezhu/yunbk
而用法也非常简单,比如要备份mysql,则代码如下:
代码如下 | 复制代码 |
from yunbk import YunBK from yunbk.backend.local import LocalBackend import sh backend = LocalBackend('/data/backup') with YunBK('mysql', [backend]) as ybk: sh.mysqldump(u='root', all_databases=True, _out="dump.sql") ybk.backup() |
怎么样,简单吧!
上面的代码会将mysql的所有数据库dump下来之后,保存到本地的 /data/backup 目录,并且按照分类和日期命名。除了保存到本地之外,yunbk还提供了 ftp, sftp, 百度的bcs,阿里的oss等多种备份方式.
简单讲一下yunbk的设计原理:
在上面的代码中,用with语句进入了yunbk指定的一个默认临时目录,此时所有的文件写入都会在这个目录里。
当调用backup的时候,yunbk会调用[backend] 中每个backend的upload方法,将数据备份起来
当with结束的时候,yunbk创建的临时目录会自动删除,即不会留下任何痕迹
需要特别说明的是,yunbk是受 bakthat 这个插件启发而来,只是他默认使用亚马逊作为备份方式,在天朝你懂得,另外还有一些实现方式觉得不是特别好,代码有些冗余,所以就自己实现了一个。
废话就不多少了,列一下常用的几种被封方式的示例:
FTP备份
代码如下 | 复制代码 |
from yunbk import YunBK from yunbk.backend.ftp import FTPBackend import sh backend = FTPBackend('127.0.0.1', 'user', 'passwd', '/data/backup') with YunBK('mysql', [backend]) as ybk: sh.mysqldump(u='root', all_databases=True, _out="dump.sql") ybk.backup() |
阿里OSS备份
代码如下 | 复制代码 |
from yunbk import YunBK from yunbk.backend.ali_oss import OSSBackend import sh backend = OSSBackend('127.0.0.1', 'access_id', 'secret_access_key', 'backup_my_data') with YunBK('mysql', [backend]) as ybk: sh.mysqldump(u='root', all_databases=True, _out="dump.sql") ybk.backup() sftp 和 百度bcs 就不写啦,大家应该已经能够自己写出来啦 另外,推荐结合定时执行的库: APScheduler 一起使用,很方便: # -*- coding: utf-8 -*- |
好啦,就到这里,希望对大家有用:)