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实现多线程下载文件的代码实例
Jun 01 Python
python 生成器协程运算实例
Sep 04 Python
Python pyinotify日志监控系统处理日志的方法
Mar 08 Python
Python多线程threading模块用法实例分析
May 22 Python
python交易记录链的实现过程详解
Jul 03 Python
python返回数组的索引实例
Nov 28 Python
Python连接SQLite数据库并进行增册改查操作方法详解
Feb 18 Python
python轮询机制控制led实例
May 03 Python
Python extract及contains方法代码实例
Sep 11 Python
Python数据可视化常用4大绘图库原理详解
Oct 23 Python
python实现无边框进度条的实例代码
Dec 30 Python
python 装饰器重要在哪
Feb 14 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
Ajax+PHP 边学边练 之二 实例
2009/11/24 PHP
thinkphp普通查询与表达式查询实例分析
2014/11/24 PHP
php rsa加密解密使用详解
2015/01/14 PHP
jQuery使用手册之三 CSS操作
2007/03/24 Javascript
Span元素的width属性无效果原因及解决方案
2010/01/15 Javascript
jQuery点击后一组图片左右滑动的实现代码
2012/08/16 Javascript
打开新窗口关闭当前页面不弹出关闭提示js代码
2013/03/18 Javascript
JavaScript编程中布尔对象的基本使用
2015/10/25 Javascript
BootStrap 智能表单实战系列(五) 表单依赖插件处理
2016/06/13 Javascript
js放大镜放大购物图片效果
2017/01/18 Javascript
angular实现IM聊天图片发送实例
2017/05/08 Javascript
bootstrap轮播图示例代码分享
2017/05/17 Javascript
Vue Element使用icon图标教程详解(第三方)
2018/02/07 Javascript
vue-cli3 从搭建到优化的详细步骤
2019/01/20 Javascript
微信小程序实现带参数的分享功能(两种方法)
2019/05/17 Javascript
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
2019/08/08 jQuery
layui富文本编辑器前端无法取值的解决方法
2019/09/18 Javascript
es6中new.target的作用和使用场景简单示例分析
2020/03/14 Javascript
[01:59]游戏“zheng”当时试玩会
2019/08/21 DOTA
Python中的自省(反射)详解
2015/06/02 Python
利用Python实现颜色色值转换的小工具
2016/10/27 Python
Python实现找出数组中第2大数字的方法示例
2018/03/26 Python
对Python 两大环境管理神器 pyenv 和 virtualenv详解
2018/12/31 Python
python 列表输出重复值以及对应的角标方法
2019/06/11 Python
简单了解python关系(比较)运算符
2019/07/08 Python
opencv python Canny边缘提取实现过程解析
2020/02/03 Python
Python文件操作基础流程解析
2020/03/19 Python
如何在python中判断变量的类型
2020/07/29 Python
Dogeared官网:在美国手工制作的珠宝
2019/08/24 全球购物
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
四年级下册教学反思
2014/02/01 职场文书
护理专科自荐书范文
2014/02/18 职场文书
《路旁的橡树》教学反思
2014/04/07 职场文书
电子商务助理求职自荐信
2014/04/10 职场文书
自考生自我评价
2019/06/21 职场文书
MySQL 开窗函数
2022/02/15 MySQL