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 列表递归求和、计数、求最大元素的实例
Nov 28 Python
python3 cvs将数据读取为字典的方法
Dec 22 Python
对python中xlsx,csv以及json文件的相互转化方法详解
Dec 25 Python
pandas dataframe添加表格框线输出的方法
Feb 08 Python
pandas.DataFrame的pivot()和unstack()实现行转列
Jul 06 Python
python通过TimedRotatingFileHandler按时间切割日志
Jul 17 Python
Django 用户认证组件使用详解
Jul 23 Python
python实现桌面气泡提示功能
Jul 29 Python
Python中包的用法及安装
Feb 11 Python
python数据类型可变不可变知识点总结
Mar 06 Python
如何实现一个python函数装饰器(Decorator)
Oct 12 Python
Python机器学习之KNN近邻算法
May 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设计模式 Strategy(策略模式)
2011/06/26 PHP
PHP实现伪静态方法汇总
2016/01/13 PHP
100行PHP代码实现socks5代理服务器
2016/04/28 PHP
修改Laravel5.3中的路由文件与路径
2016/08/10 PHP
HTTP头隐藏PHP版本号实现过程解析
2020/12/09 PHP
PHP读取文件或采集时解决中文乱码
2021/03/09 PHP
JavaScript DOM 学习第九章 选取范围的介绍
2010/02/19 Javascript
JQuery获取当前屏幕的高度宽度的实现代码
2011/07/12 Javascript
JS实现的省份级联实例代码
2013/06/24 Javascript
js实现动态改变字体大小代码
2014/01/02 Javascript
Node.js Streams文件读写操作详解
2016/07/04 Javascript
jQuery post数据至ashx实例详解
2016/11/18 Javascript
jQuery中的siblings()是什么意思(推荐)
2016/12/29 Javascript
Vue.js系列之项目结构说明(2)
2017/01/03 Javascript
Bootstrap框架安装使用详解
2017/01/21 Javascript
Vue2.0如何发布项目实战
2017/07/27 Javascript
详解前端路由实现与react-router使用姿势
2017/08/07 Javascript
js定时器+简单的动画效果实例
2017/11/10 Javascript
vuex actions传递多参数的处理方法
2018/09/18 Javascript
VUE实现可随意拖动的弹窗组件
2018/09/25 Javascript
js实现随机数小游戏
2019/06/28 Javascript
微信小程序移动拖拽视图-movable-view实例详解
2019/08/17 Javascript
uniapp实现可滑动选项卡
2020/10/21 Javascript
antd中table展开行默认展示,且不需要前边的加号操作
2020/11/02 Javascript
python直接访问私有属性的简单方法
2016/07/25 Python
利用Python自动监控网站并发送邮件告警的方法
2016/08/24 Python
python中字符串内置函数的用法总结
2018/09/13 Python
python解析xml简单示例
2019/06/21 Python
opencv之颜色过滤只留下图片中的红色区域操作
2020/06/05 Python
Android笔试题总结
2014/11/29 面试题
电子商务专业学生的自我鉴定
2013/11/28 职场文书
2014年三八妇女节活动总结
2014/03/01 职场文书
物业管理委托协议(2篇)
2014/09/23 职场文书
舞蹈社团活动总结
2015/05/07 职场文书
入党积极分子党小组意见
2015/06/02 职场文书
利用Python将list列表写入文件并读取的方法汇总
2022/03/25 Python