首页 Python正文

Python备份Mysql脚本

Python 2019-11-19 17:11:02 524


#!/usr/bin/python

importos
importtime
importftplib
importtraceback

#configvars
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=[]


defftpstor():
#login
bufsize=1024
ftp=ftplib.FTP()
try:
ftp.connect(ftp_addr,ftp_port)
ftp.login(ftp_user,ftp_pwd)
ftp.cwd(ftp_path)
forfilepathinftpqueue:

#openfileforinputasbinary
f=open(filepath,"rb")
#storefileasbinary
printgetfilename(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"))



defdumpdb(dbname):
globalftpqueue
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)

defgetfilename(path):

pt=path.rfind(systempathchr)
returnpath[pt+1:]

defmain():
fordbnameindbnamelist:
dumpdb(dbname)

ftpstor()

main()

没有仔细看,不过下面这两句,推荐看看os.path模块里面的函数,可能就不用针对linux和win分别设定不同的分隔符了引用
#configvars
systempathchr="/"#路径分割符,*nix用"/"win32用"\\"
看到代码里面是用在得到文件名的,可以试试os.path.basename活着os.path.split了

>>>importos.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'

© 编程脚本学习网