Python备份Mysql脚本

484次阅读  |  发布于5年以前

复制代码 代码如下:

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

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8