Python备份Mysql脚本

 更新时间:2008年08月11日 21:31:12   作者:  
特点是多平台,一个脚本内可以备份多个数据库,并分别打包上传到ftp进行备份。调用了mysqldump及tar来进行数据库dump及打包。 具体参数说明参见源文件

复制代码 代码如下:

#!/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基础之模块详解

    本文详细讲解了Python基础之模块,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • Pycharm简单使用教程(入门小结)

    Pycharm简单使用教程(入门小结)

    这篇文章主要介绍了Pycharm简单使用教程(入门小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-07-07
  • Python实现执行Shell命令并获取输出

    Python实现执行Shell命令并获取输出

    这篇文章主要介绍了如何借助 os.system() 从 Python 脚本执行 cmd 命令,以及如何借助 Python 中的 subprocess 模块以更简单的方式从脚本执行 cmd 命令,感兴趣的小伙伴可以了解下
    2023-10-10
  • python数据处理和数据清洗的示例详解

    python数据处理和数据清洗的示例详解

    数据清洗是指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等,数据清洗与处理的目的是提高数据的质量,提高实验结果的可靠度,本文给大家介绍了python数据处理和数据清洗的示例,需要的朋友可以参考下
    2024-08-08
  • 详解如何利用Pytest Cache Fixture实现测试结果缓存

    详解如何利用Pytest Cache Fixture实现测试结果缓存

    这篇文章主要为大家详细介绍了如何利用Pytest Cache Fixture实现测试结果缓存,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-09-09
  • 使用OpenCV实现读取和显示图像与视频

    使用OpenCV实现读取和显示图像与视频

    OpenCV 是一个强大的计算机视觉库,广泛应用于图像处理和视频处理等领域,本文将详细介绍如何使用 OpenCV 在 Python 中读取和显示图像以及视频,希望对大家有所帮助
    2024-11-11
  • 使用jupyter notebook直接打开.md格式的文件

    使用jupyter notebook直接打开.md格式的文件

    这篇文章主要介绍了使用jupyter notebook直接打开.md格式的文件,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • 浅谈pytorch grad_fn以及权重梯度不更新的问题

    浅谈pytorch grad_fn以及权重梯度不更新的问题

    今天小编就为大家分享一篇浅谈pytorch grad_fn以及权重梯度不更新的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python使用matplotlib 画矩形的三种方式分析

    Python使用matplotlib 画矩形的三种方式分析

    这篇文章主要介绍了Python使用matplotlib 画矩形的三种方式,结合实例形式分析了Python基于matplotlib绘制矩形的具体实现方法与相关操作注意事项,需要的朋友可以参考下
    2019-10-10
  • 基于OpenCV4.2实现单目标跟踪

    基于OpenCV4.2实现单目标跟踪

    这篇文章主要介绍了如何和何时使用OpenCV 4.2中可用的8种不同的跟踪器- BOOSTING, MIL, KCF, TLD, MEDIANFLOW, GOTURN, MOSSE和CSRT,并用他们实现单目标跟踪,需要的可以参考一下
    2022-03-03

最新评论