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列表操作实例
Jan 14 Python
Python简明入门教程
Aug 04 Python
python各种语言间时间的转化实现代码
Mar 23 Python
深入理解Python中的*重复运算符
Oct 28 Python
Python/ArcPy遍历指定目录中的MDB文件方法
Oct 27 Python
在Python中调用Ping命令,批量IP的方法
Jan 26 Python
python for 循环获取index索引的方法
Feb 01 Python
python可视化实现KNN算法
Oct 16 Python
tensorflow模型转ncnn的操作方式
May 25 Python
python help函数实例用法
Dec 06 Python
整理Python中常用的conda命令操作
Jun 15 Python
使用Python通过企业微信应用给企业成员发消息
Apr 18 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 三维饼图的实现代码
2008/09/28 PHP
php自动加载的两种实现方法
2010/06/21 PHP
一道关于php变量引用的面试题
2010/08/08 PHP
PHP中__get()和__set()的用法实例详解
2013/06/04 PHP
PHP实现抓取迅雷VIP账号的方法
2015/07/30 PHP
PHP小偷程序的设计与实现方法详解
2016/10/15 PHP
thinkPHP中验证码的简单实现方法
2016/12/05 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
php+js实现的无刷新下载文件功能示例
2019/08/23 PHP
javascript不同页面传值的改进版
2008/09/30 Javascript
JavaScript简单实现鼠标拖动选择功能
2014/03/06 Javascript
node.js中的console.timeEnd方法使用说明
2014/12/09 Javascript
JS 作用域与作用域链详解
2015/04/07 Javascript
Nodejs中解决cluster模块的多进程如何共享数据问题
2016/11/10 NodeJs
JavaScrpt中如何使用 cookie 设置查看与删除功能
2017/07/09 Javascript
JS点击动态添加标签、删除指定标签的代码
2018/04/18 Javascript
vue模式history下在iis中配置流程
2019/04/17 Javascript
vue + typescript + video.js实现 流媒体播放 视频监控功能
2019/07/07 Javascript
深入理解javascript prototype的相关知识
2019/09/19 Javascript
[01:45]亚洲邀请赛互动指南虚拟物品介绍
2015/01/30 DOTA
Python利用WMI实现ping命令的例子
2019/08/14 Python
python 字典有序并写入json文件过程解析
2019/09/30 Python
六种酷炫Python运行进度条效果的实现代码
2020/07/17 Python
使用CSS3来匹配横屏竖屏的简单方法
2015/08/04 HTML / CSS
HTML5 Canvas实现文本对齐的方法总结
2016/03/24 HTML / CSS
Expedia韩国官网:亚洲发展最快的在线旅游门户网站
2018/02/26 全球购物
少年闰土教学反思
2014/02/22 职场文书
节能环保标语
2014/06/12 职场文书
观看信仰心得体会
2014/09/04 职场文书
2014最新股权信托合同协议书
2014/11/18 职场文书
酒店财务部岗位职责
2015/04/14 职场文书
2016年“七一建党节”广播稿
2015/12/18 职场文书
工作违纪的检讨书范文
2019/07/09 职场文书
php中配置文件保存修改操作 如config.php文件的读取修改等操作
2021/05/12 PHP
Apache SeaTunnel实现 非CDC数据抽取
2022/05/20 Servers