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模块学习 filecmp 文件比较
Aug 27 Python
python人人网登录应用实例
Sep 26 Python
在Linux系统上安装Python的Scrapy框架的教程
Jun 11 Python
一键搞定python连接mysql驱动有关问题(windows版本)
Apr 23 Python
python+selenium开发环境搭建图文教程
Aug 11 Python
python2.7无法使用pip的解决方法(安装easy_install)
Apr 03 Python
python取均匀不重复的随机数方式
Nov 27 Python
python标准库os库的函数介绍
Feb 12 Python
python实现FTP文件传输的方法(服务器端和客户端)
Mar 20 Python
MoviePy常用剪辑类及Python视频剪辑自动化
Dec 18 Python
用Python 执行cmd命令
Dec 18 Python
深度学习tensorflow基础mnist
Apr 14 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、Java des加密解密实例
2015/04/27 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
2015/09/30 PHP
YII2.0框架行为(Behavior)深入详解
2019/07/26 PHP
使用TextRange获取输入框中光标的位
2006/10/14 Javascript
JavaScript 函数调用规则
2009/09/14 Javascript
XMLHTTPRequest的属性和方法简介
2010/11/23 Javascript
js 限制数字 js限制输入实现代码
2012/12/04 Javascript
JS 退出系统并跳转到登录界面的实现代码
2013/06/29 Javascript
js日期、星座的级联显示代码
2014/01/23 Javascript
Highcharts学习之坐标轴
2016/08/02 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
2016/09/19 Javascript
vue.js表格分页示例
2016/10/18 Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
2017/01/21 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
详解react服务端渲染(同构)的方法
2017/09/21 Javascript
seajs模块压缩问题与解决方法实例分析
2017/10/10 Javascript
vue中vee validate表单校验的几种基本使用
2018/06/25 Javascript
js指定日期增加指定月份的实现方法
2018/12/19 Javascript
vue实现记事本功能
2019/06/26 Javascript
layui监听工具栏的实例(操作列表按钮)
2019/09/10 Javascript
Vue插件之滑动验证码用法详解
2020/04/05 Javascript
Vue+element-ui添加自定义右键菜单的方法示例
2020/12/08 Vue.js
Python设计模式中单例模式的实现及在Tornado中的应用
2016/03/02 Python
Python随机生成手机号、数字的方法详解
2017/07/21 Python
python 将json数据提取转化为txt的方法
2018/10/26 Python
python简单实现矩阵的乘,加,转置和逆运算示例
2019/07/10 Python
Django 路由控制的实现
2019/07/17 Python
保护环境建议书300字
2014/05/13 职场文书
节约粮食标语
2014/06/18 职场文书
学习教师敬业奉献模范事迹材料思想汇报
2014/09/19 职场文书
2014年小学图书室工作总结
2014/12/09 职场文书
2014年酒店年度工作总结
2014/12/10 职场文书
春秋淹城导游词
2015/02/11 职场文书
九年级英语教学反思
2016/02/15 职场文书
详解Java实现设计模式之责任链模式
2021/06/23 Java/Android
js基于div丝滑实现贝塞尔曲线
2022/09/23 Javascript