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 相关文章推荐
Python3.6基于正则实现的计算器示例【无优化简单注释版】
Jun 14 Python
详解django.contirb.auth-认证
Jul 16 Python
Python对CSV、Excel、txt、dat文件的处理
Sep 18 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
Jun 27 Python
Python3内置模块random随机方法小结
Jul 13 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
Oct 24 Python
在pycharm中为项目导入anacodna环境的操作方法
Feb 12 Python
python如何实时获取tcpdump输出
Sep 16 Python
python 实现一个图形界面的汇率计算器
Nov 09 Python
python中二分查找法的实现方法
Dec 06 Python
如何用Python编写一个电子考勤系统
Feb 08 Python
Python实现抖音热搜定时爬取功能
Mar 16 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利用Mysql锁解决高并发的方法
2018/09/04 PHP
jQuery 选择表格(table)里的行和列及改变简单样式
2012/12/15 Javascript
jquery自定义下拉列表示例
2014/04/25 Javascript
浅谈jQuery事件绑定原理
2015/01/02 Javascript
jQuery删除一个元素后淡出效果展示删除过程的方法
2015/03/18 Javascript
jquery分割字符串的方法
2015/06/24 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
2016/08/05 Javascript
JavaScript中英文字符长度统计方法示例【按照中文占2个字符】
2017/01/17 Javascript
JS表单数据验证的正则表达式(常用)
2017/02/18 Javascript
jQuery鼠标移动图片上实现放大效果
2017/06/25 jQuery
JavaScript递归算法生成树形菜单
2017/08/15 Javascript
详解使用React全家桶搭建一个后台管理系统
2017/11/04 Javascript
vue基于element的区间选择组件
2018/09/07 Javascript
python通过定义一个类实例作为ftp回调方法
2015/05/04 Python
Django中的文件的上传的几种方式
2018/07/23 Python
Linux上使用Python统计每天的键盘输入次数
2019/04/17 Python
PyTorch在Windows环境搭建的方法步骤
2020/05/12 Python
使用PyCharm安装pytest及requests的问题
2020/07/31 Python
解决Python3.8运行tornado项目报NotImplementedError错误
2020/09/02 Python
python 中关于pycharm选择运行环境的问题
2020/10/31 Python
CSS3+Sprite实现僵尸行走动画特效源码
2016/01/27 HTML / CSS
通过Canvas及File API缩放并上传图片完整示例
2013/08/08 HTML / CSS
惠普墨西哥官方商店:HP墨西哥
2016/12/01 全球购物
联想英国官网:Lenovo英国
2019/07/17 全球购物
什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
2012/05/23 面试题
文秘自荐信
2013/10/20 职场文书
应聘美工求职信
2013/11/07 职场文书
门卫岗位安全职责
2013/12/13 职场文书
加多宝凉茶广告词
2014/03/18 职场文书
平安建设实施方案
2014/03/19 职场文书
完美的中文自荐信
2014/05/24 职场文书
维修工先进事迹
2014/05/29 职场文书
幼儿园运动会口号
2014/06/07 职场文书
社保转移委托书范本
2014/10/08 职场文书
2014年保育员个人工作总结
2014/12/02 职场文书
IDEA使用SpringAssistant插件创建SpringCloud项目
2021/06/23 Java/Android