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 相关文章推荐
python在命令行下使用google翻译(带语音)
Jan 16 Python
使用Python判断质数(素数)的简单方法讲解
May 05 Python
python3 与python2 异常处理的区别与联系
Jun 19 Python
Python利用ElementTree模块处理XML的方法详解
Aug 31 Python
python3操作微信itchat实现发送图片
Feb 24 Python
Python的多维空数组赋值方法
Apr 13 Python
python 剪切移动文件的实现代码
Aug 02 Python
python判断文件夹内是否存在指定后缀文件的实例
Jun 10 Python
Python参数类型以及常见的坑详解
Jul 08 Python
pytorch 在sequential中使用view来reshape的例子
Aug 20 Python
python3将变量写入SQL语句的实现方式
Mar 02 Python
python实现腾讯滑块验证码识别
Apr 27 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
使用VisualStudio开发php的图文设置方法
2010/08/21 PHP
JpGraph php柱状图使用介绍
2011/08/23 PHP
jQuery实现切换页面布局使用介绍
2011/10/09 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
jquery和雅虎的yql服务实现天气预报服务示例
2014/02/08 Javascript
一个判断抢购时间是否到达的简单的js函数
2014/06/23 Javascript
浅谈NodeJS中require路径问题
2015/05/07 NodeJs
JavaScript函数节流概念与用法实例详解
2016/06/20 Javascript
JS使用正则截取两个字符串之间的字符串实现方法详解
2017/01/06 Javascript
canvas轨迹回放功能实现
2017/12/20 Javascript
React组件内事件传参实现tab切换的示例代码
2018/07/04 Javascript
jQuery中$原理实例分析
2018/08/13 jQuery
微信小程序实现带缩略图轮播效果
2018/11/04 Javascript
使用RxJS更优雅地进行定时请求详析
2019/06/02 Javascript
JavaScript实现拖拽盒子效果
2020/02/06 Javascript
JS实现TITLE悬停长久显示效果完整示例
2020/02/11 Javascript
浅谈Python单向链表的实现
2015/12/24 Python
遗传算法之Python实现代码
2017/10/10 Python
Python进度条实时显示处理进度的示例代码
2018/01/30 Python
Python中生成器和迭代器的区别详解
2018/02/10 Python
python3.6.3转化为win-exe文件发布的方法
2018/10/31 Python
Python通用函数实现数组计算的方法
2019/06/13 Python
python脚本当作Linux中的服务启动实现方法
2019/06/28 Python
python 根据字典的键值进行排序的方法
2019/07/24 Python
python3使用print打印带颜色的字符串代码实例
2019/08/22 Python
基于python爬取有道翻译过程图解
2020/03/31 Python
浅谈pycharm导入pandas包遇到的问题及解决
2020/06/01 Python
如何理解Python中的变量
2020/06/01 Python
台湾生鲜宅配:大口市集
2017/10/14 全球购物
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
村主任“四风”问题个人整改措施
2014/10/04 职场文书
个人批评与自我批评总结
2014/10/17 职场文书
先进学校事迹材料
2014/12/30 职场文书
汽车销售合同文本
2019/08/08 职场文书
致创业的您:这类人不适合餐饮创业
2019/08/19 职场文书
最新农村养殖致富:资金投入较低的创业项目有哪些?
2019/09/26 职场文书