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算法学习之桶排序算法实例(分块排序)
Dec 18 Python
Python数据拟合与广义线性回归算法学习
Dec 22 Python
基于python内置函数与匿名函数详解
Jan 09 Python
NumPy 如何生成多维数组的方法
Feb 05 Python
Python3使用pandas模块读写excel操作示例
Jul 03 Python
浅谈python写入大量文件的问题
Nov 09 Python
Python XML转Json之XML2Dict的使用方法
Jan 15 Python
django实现支付宝支付实例讲解
Oct 17 Python
python中的测试框架
Nov 13 Python
Python抖音快手代码舞(字符舞)的实现方法
Feb 07 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
Feb 25 Python
python运算符之与用户交互
Apr 13 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
域名查询代码公布
2006/10/09 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
2014/03/18 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
2015/09/28 PHP
浅谈PHP定义命令空间的几个注意点(推荐)
2016/10/29 PHP
jQuery 研究心得 取得属性的值
2007/11/30 Javascript
js构造函数、索引数组和属性的实现方式和使用
2014/11/16 Javascript
angularJS结合canvas画图例子
2015/02/09 Javascript
JQuery悬停控制图片轮播——代码简单
2015/08/05 Javascript
input输入框内容实时监测(附代码)
2017/08/15 Javascript
Node.js dgram模块实现UDP通信示例代码
2017/09/26 Javascript
vue2单元测试环境搭建
2018/05/24 Javascript
javascript实现拖拽碰撞检测
2020/03/12 Javascript
JS端基于download.js实现图片、视频时直接下载而不是打开预览
2020/05/09 Javascript
Python列表生成器的循环技巧分享
2015/03/06 Python
Python实现全角半角字符互转的方法
2016/11/28 Python
python写一个md5解密器示例
2018/02/23 Python
Python调用服务接口的实例
2019/01/03 Python
Python字典遍历操作实例小结
2019/03/05 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
2019/05/09 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
2019/08/20 Python
Python 内置函数globals()和locals()对比详解
2019/12/23 Python
Pytorch GPU显存充足却显示out of memory的解决方式
2020/01/13 Python
Python爬取微信小程序通用方法代码实例详解
2020/09/29 Python
canvas绘制文本内容自动换行的实现代码
2019/01/14 HTML / CSS
HTML5之消息通知的使用(Web Notification)
2018/10/30 HTML / CSS
StubHub墨西哥:购买和出售您的门票
2016/09/17 全球购物
JD Sports芬兰:英国领先的运动鞋和运动服饰零售商
2018/11/16 全球购物
介绍下Java中==和equals的区别
2013/09/01 面试题
《厄运打不垮的信念》教学反思
2014/04/13 职场文书
学校党委干部个人对照检查材料思想汇报
2014/10/09 职场文书
教师党员群众路线教育实践活动心得体会
2014/11/04 职场文书
不尊敬老师的检讨书
2014/12/21 职场文书
2015年小学语文教师工作总结
2015/10/23 职场文书
中国梦宣传标语口号
2015/12/26 职场文书
2016保送生自荐信范文
2016/01/29 职场文书
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
2021/06/09 Python