Python备份Mysql脚本


Posted in Python onAugust 11, 2008
#!/usr/bin/python  import os  
import time  
import ftplib  
import traceback  
#config vars  
systempathchr="/" #路径分割符,*nix用"/" win32用"\\"  
dbuser="root" #数据库用户名  
dbpwd="dbpwd" #数据库密码  
dbnamelist=["dbone","dbtwo","dbthree"] #需要备份那些数据库  
workdir="/path/to/backup/" #本地备份文件夹  
errlogfile="databack.log" #错误日志名  
ftp_addr="192.168.0.2" #ftp地址  
ftp_port="2102" #ftp端口  
ftp_user="databack" #ftp用户名  
ftp_pwd="backpwd" #ftp密码  
ftp_path="/" #存放到ftp路径  
ftpqueue=[]  

def ftpstor():  
    #login  
    bufsize=1024  
    ftp=ftplib.FTP()  
    try:  
        ftp.connect(ftp_addr,ftp_port)  
        ftp.login(ftp_user,ftp_pwd)  
        ftp.cwd(ftp_path)  
        for filepath in ftpqueue:  
            #open file for input as binary  
            f=open(filepath,"rb")  
            #store file as binary  
            print getfilename(filepath)  
            ftp.storbinary("STOR "+getfilename(filepath),f,bufsize)  
            f.close()  
        ftp.quit()  
    except:  
        path=os.path.join(workdir,errlogfile)  
        traceback.print_exc(file=open(path,"a"))  
      
def dumpdb(dbname):  
    global ftpqueue  
    timeformat="%Y%m%d"  
    sqlvalformat="mysqldump -u%s -p\"%s\" \"%s\" >\"%s\""  
    tarvalformat="tar --directory=\"%s\" -zcf \"%s\" \"%s\""  
    nowdate=time.strftime(timeformat)  
    dumpfile=os.path.join(workdir,dbname+".dump")  
    zipfile=os.path.join(workdir,dbname+nowdate+".tar.gz")  
    sqlval=sqlvalformat % (dbuser,dbpwd,dbname,dumpfile)  
    result=os.system(sqlval)  
    tarval=tarvalformat % (workdir,zipfile,dbname+".dump")  
    result=os.system(tarval)  
    os.remove(dumpfile)  
    ftpqueue.append(zipfile)  
def getfilename(path):  
    pt=path.rfind(systempathchr)  
    return path[pt+1:]  
def main():  
    for dbname in dbnamelist:  
        dumpdb(dbname)  
    ftpstor()  
main()

没有仔细看,不过下面这两句,推荐看看os.path模块里面的函数,可能就不用针对linux和win分别设定不同的分隔符了 引用  
#config vars
systempathchr="/" #路径分割符,*nix用"/" win32用"\\"  
看到代码里面是用在得到文件名的,可以试试os.path.basename活着os.path.split了 
 
 >>> import os.path  
  >>> os.path.basename("c:\\test\\aa.txt")  
  'aa.txt'  
  >>> os.path.split("c:\\test\\aa.txt")  
  ('c:\\test', 'aa.txt')  
  >>> os.path.split("c:\\test\\aa.txt")[-1]  
  'aa.txt'  
  >>> os.path.basename("/home/test/aa.txt")  
  'aa.txt'  
  >>> os.path.split("/home/test/aa.txt")  
  ('/home/test', 'aa.txt')  
  >>> os.path.basename("/home/test/aa.txt")  
  'aa.txt'
Python 相关文章推荐
使用IronPython把Python脚本集成到.NET程序中的教程
Mar 31 Python
Python中的各种装饰器详解
Apr 11 Python
用Python编写一个简单的CS架构后门的方法
Nov 20 Python
Python 正则表达式匹配字符串中的http链接方法
Dec 25 Python
python实现的爬取电影下载链接功能示例
Aug 26 Python
Windows下Anaconda安装、换源与更新的方法
Apr 17 Python
Matplotlib自定义坐标轴刻度的实现示例
Jun 18 Python
浅谈PyTorch中in-place operation的含义
Jun 27 Python
浅析python中的del用法
Sep 02 Python
深入浅析pycharm中 Make available to all projects的含义
Sep 15 Python
细说NumPy数组的四种乘法的使用
Dec 18 Python
OpenCV-Python模板匹配人眼的实例
Jun 08 Python
python备份文件的脚本
Aug 11 #Python
Python 文件操作技巧(File operation) 实例代码分析
Aug 11 #Python
python下如何让web元素的生成更简单的分析
Jul 17 #Python
py中的目录与文件判别代码
Jul 16 #Python
Python Mysql自动备份脚本
Jul 14 #Python
python远程登录代码
Apr 29 #Python
复制粘贴功能的Python程序
Apr 04 #Python
You might like
PHP新手上路(二)
2006/10/09 PHP
php绘图中显示不出图片的原因及解决
2014/03/05 PHP
php7 安装yar 生成docker镜像
2017/05/09 PHP
PHP数组实际占用内存大小原理解析
2020/12/11 PHP
根据分辩率调用不同的CSS.
2007/01/08 Javascript
ie与ff下的event事件使用介绍
2013/11/25 Javascript
15款最好的Bootstrap在线编辑器
2016/08/03 Javascript
原生态js,鼠标按下后,经过了那些单元格的简单实例
2016/08/11 Javascript
微信小程序 本地数据存储实例详解
2017/04/13 Javascript
原生JS实现N级菜单的代码
2017/05/21 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
2017/06/15 Javascript
vue cli 3.0 使用全过程解析
2018/06/14 Javascript
详解angularjs4部署文件过大解决过程
2018/12/05 Javascript
使用Node.js在深度学习中做图片预处理的方法
2019/09/18 Javascript
Vue页面刷新记住页面状态的实现
2019/12/27 Javascript
在Python 3中实现类型检查器的简单方法
2015/07/03 Python
python制作爬虫爬取京东商品评论教程
2016/12/16 Python
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
Python 中的Selenium异常处理实例代码
2018/05/03 Python
PyCharm设置护眼背景色的方法
2018/10/29 Python
详解Python装饰器
2019/03/25 Python
python中树与树的表示知识点总结
2019/09/14 Python
python通过文本在一个图中画多条线的实例
2020/02/21 Python
Django在Model保存前记录日志实例
2020/05/14 Python
python thrift 实现 单端口多服务的过程
2020/06/08 Python
一文轻松掌握python语言命名规范规则
2020/06/18 Python
法国奢华女性时尚配饰网上商店:Monnier Frères
2016/08/27 全球购物
Derek Rose官网:英国高档睡衣、家居服和内衣品牌
2020/01/18 全球购物
求职简历自荐信
2013/10/20 职场文书
中医专业职业生涯规划书范文
2014/01/04 职场文书
作风建设演讲稿
2014/05/23 职场文书
球队口号
2014/06/18 职场文书
单位在职证明书
2014/09/11 职场文书
复试通知单模板
2015/04/24 职场文书
穷人该怎么创业?谨记以下几点
2019/07/11 职场文书
CSS布局之浮动(float)和定位(position)属性的区别
2021/09/25 HTML / CSS