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简明入门教程
Aug 04 Python
python Django框架实现自定义表单提交
Mar 25 Python
Python之web模板应用
Dec 26 Python
python调用百度语音REST API
Aug 30 Python
浅谈pyqt5中信号与槽的认识
Feb 17 Python
Python中super函数用法实例分析
Mar 18 Python
Python数据类型之String字符串实例详解
May 08 Python
Python单元测试工具doctest和unittest使用解析
Sep 02 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
Jan 20 Python
Python使用ElementTree美化XML格式的操作
Mar 06 Python
Django如何实现密码错误报错提醒
Sep 04 Python
Python APScheduler执行使用方法详解
Dec 10 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
取得单条网站评论以数组形式进行输出
2014/07/28 PHP
PHP 抽象方法与抽象类abstract关键字介绍及应用
2014/10/16 PHP
php实现字符串翻转的方法
2015/03/27 PHP
PHP处理bmp格式图片的方法分析
2017/07/04 PHP
PHP7引入的"??"和"?:"的区别讲解
2019/04/08 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
php生成短网址/短链接原理和用法实例分析
2020/05/29 PHP
php判断IP地址是否在多个IP段内
2020/08/18 PHP
JS中的异常处理方法分享
2013/12/22 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
jquery捕捉回车键及获取checkbox值与异步请求的方法
2015/12/24 Javascript
最原始的jQuery注册验证方式
2016/10/11 Javascript
JavaScript仿微信打飞机游戏
2020/07/05 Javascript
详解Angular2响应式表单
2017/06/14 Javascript
微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析
2017/11/27 Javascript
浅谈angular4实际项目搭建总结
2017/12/01 Javascript
vue.js的computed,filter,get,set的用法及区别详解
2018/03/08 Javascript
详解vue 单页应用(spa)前端路由实现原理
2018/04/04 Javascript
如何为vuex实现带参数的 getter和state.commit
2019/01/04 Javascript
three.js 实现露珠滴落动画效果的示例代码
2021/03/01 Javascript
[44:40]KG vs LGD 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
打印出python 当前全局变量和入口参数的所有属性
2009/07/01 Python
浅谈pycharm导入pandas包遇到的问题及解决
2020/06/01 Python
python list的index()和find()的实现
2020/11/16 Python
python中entry用法讲解
2020/12/04 Python
python通用数据库操作工具 pydbclib的使用简介
2020/12/21 Python
Sunglasses Shop丹麦:欧洲第一的太阳镜在线销售网站
2017/10/22 全球购物
科茨沃尔德家居商店:Scotts of Stow
2018/06/29 全球购物
Gucci法国官方网站:意大利奢侈品牌
2018/07/25 全球购物
英国电子产品购物网站:TobyDeals
2018/07/30 全球购物
人事助理岗位职责
2013/11/18 职场文书
艺术设计专业个人求职信范文
2013/12/11 职场文书
职位说明书范文
2014/05/07 职场文书
师德师风建设整改措施思想汇报
2014/10/11 职场文书
物业项目经理岗位职责
2015/04/01 职场文书
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL