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 相关文章推荐
Perl中著名的Schwartzian转换问题解决实现
Jun 02 Python
Python类属性的延迟计算
Oct 22 Python
Python安装Numpy和matplotlib的方法(推荐)
Nov 02 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
Nov 11 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
Jan 08 Python
python 限制函数调用次数的实例讲解
Apr 21 Python
python计算日期之间的放假日期
Jun 05 Python
对python 命令的-u参数详解
Dec 03 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
Mar 10 Python
Java byte数组操纵方式代码实例解析
Jul 22 Python
Python实现简繁体转换
Jun 07 Python
图文详解matlab原始处理图像几何变换
Jul 09 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
《星际争霸重制版》兵种对比图鉴
2020/03/02 星际争霸
php数组函数序列之array_keys() - 获取数组键名
2011/10/30 PHP
关于js与php互相传值的介绍
2013/06/25 PHP
PHP安装threads多线程扩展基础教程
2015/11/17 PHP
Yii2 批量插入、更新数据实例
2017/03/15 PHP
PHP网站自动化配置的实现方法(必看)
2017/05/27 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
jQuery get和post 方法传值注意事项
2009/11/03 Javascript
apycom出品的jQuery精美菜单破解方法
2011/02/18 Javascript
juery框架写的弹窗效果适合新手
2013/11/27 Javascript
javascript + jquery实现定时修改文章标题
2014/03/19 Javascript
jQuery在页面加载时动态修改图片尺寸的方法
2015/03/20 Javascript
js基础知识(公有方法、私有方法、特权方法)
2015/11/06 Javascript
js检测离开或刷新页面时表单数据是否更改的方法
2016/08/02 Javascript
在html中引入外部js文件,并调用带参函数的方法
2016/10/31 Javascript
微信小程序 wxapp画布 canvas详细介绍
2016/10/31 Javascript
vue.js实现表格合并示例代码
2016/11/30 Javascript
jQuery使用unlock.js插件实现滑动解锁
2017/04/04 jQuery
Vue filters过滤器的使用方法
2017/07/14 Javascript
利用jQuery+localStorage实现一个简易的计时器示例代码
2017/12/25 jQuery
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
vue-cli3 DllPlugin 提取公用库的方法
2019/04/24 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
2019/06/12 jQuery
jquery分页优化操作实例分析
2019/08/23 jQuery
[43:58]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第二局
2016/02/27 DOTA
python结合opencv实现人脸检测与跟踪
2015/06/08 Python
深入解析Python中的list列表及其切片和迭代操作
2016/03/13 Python
Python编程之微信推送模板消息功能示例
2017/08/21 Python
Python简单实现网页内容抓取功能示例
2018/06/07 Python
linux查找当前python解释器的位置方法
2019/02/20 Python
CSS3过渡transition效果实例介绍
2016/05/03 HTML / CSS
自我评价优秀范文分享
2013/11/30 职场文书
倡议书范文格式
2014/05/12 职场文书
个人政风行风自查自纠报告
2014/10/21 职场文书
同学会邀请函模板
2015/01/30 职场文书
2019年最新借条范本!
2019/07/08 职场文书