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记录详细调用堆栈日志的方法
May 05 Python
Python中Django 后台自定义表单控件
Mar 28 Python
numpy使用技巧之数组过滤实例代码
Feb 03 Python
Python定时任务sched模块用法示例
Jul 16 Python
python实现字符串加密 生成唯一固定长度字符串
Mar 22 Python
Python3.5迭代器与生成器用法实例分析
Apr 30 Python
Python中判断子串存在的性能比较及分析总结
Jun 23 Python
Python 获取 datax 执行结果保存到数据库的方法
Jul 11 Python
python对象销毁实例(垃圾回收)
Jan 16 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
Apr 01 Python
python自动提取文本中的时间(包含中文日期)
Aug 31 Python
使用python创建股票的时间序列可视化分析
Mar 03 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 HTML JavaScript MySQL代码如何互相传值的方法分享
2012/09/30 PHP
php实现的CSS更新类实例
2014/09/22 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
2019/04/02 PHP
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
基于jquery的复制网页内容到WORD的实现代码
2011/02/16 Javascript
初识JQuery 实例一(first)
2011/03/16 Javascript
JS按字节截取字符长度实例
2013/11/20 Javascript
解析jQuery的三种bind/One/Live事件绑定使用方法
2013/12/30 Javascript
用JS在浏览器中创建下载文件
2014/03/05 Javascript
如何用JavaScript定义一个类
2014/09/12 Javascript
在线所见即所得HTML编辑器的实现原理浅析
2015/04/25 Javascript
JavaScript实现自动对页面上敏感词进行屏蔽的方法
2015/07/27 Javascript
Boostrap入门准备之border box
2016/05/09 Javascript
AngularJS实现标签页的两种方式
2016/09/05 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
2016/10/14 Javascript
JS 学习总结之正则表达式的懒惰性和贪婪性
2017/07/03 Javascript
AngularJS实现的2048小游戏功能【附源码下载】
2018/01/03 Javascript
jQuery判断自定义属性data-val用法示例
2019/01/07 jQuery
JavaScript实现的拼图算法分析
2019/02/13 Javascript
JavaScript实现随机点名小程序
2020/10/29 Javascript
解决antd 下拉框 input [defaultValue] 的值的问题
2020/10/31 Javascript
vue添加自定义右键菜单的完整实例
2020/12/08 Vue.js
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
Python使用smtp和pop简单收发邮件完整实例
2018/01/09 Python
使用Python搭建虚拟环境的配置方法
2018/02/28 Python
python实现汉诺塔算法
2021/03/01 Python
Java Spring项目国际化(i18n)详细方法与实例
2020/03/20 Python
python实现图像拼接功能
2020/03/23 Python
深入了解Python装饰器的高级用法
2020/08/13 Python
python编程的核心知识点总结
2021/02/08 Python
澳大利亚在线性感内衣商店:Fantasy Lingerie
2021/02/07 全球购物
企业内控岗位的职责
2014/02/07 职场文书
社区健康教育实施方案
2014/03/18 职场文书
早安问候语大全
2015/11/10 职场文书
Django使用channels + websocket打造在线聊天室
2021/05/20 Python
「魔法少女伊莉雅」美游粘土人开订
2022/03/21 日漫