欢迎来到资源库(www.zyku.net)

Python教程

当前位置:首页 > 网络编程 > Python教程 > Python

Python备份Mysql脚本

时间:2021-04-24|栏目:Python教程|点击:|我要投稿

代码如下:  

#!/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'

(资源库 www.zyku.net)

上一篇:python备份文件的脚本

栏    目:Python教程

下一篇:rhythmbox中文名乱码问题解决方法

本文标题:Python备份Mysql脚本

本文地址:https://www.zyku.net/python/2172.html

关于我们 | 版权申明 | 寻求合作 |

重要申明:本站所有的文章、图片、评论等内容,均由网友发表或上传并维护或收集自网络,仅供个人学习交流使用,版权归原作者所有。

如有侵犯您的版权,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:95148658 | 邮箱:mb8#qq.com(#换成@)

苏ICP备2020066115号-1

本网站由提供CDN加速/云存储服务