Python备份Mysql脚本
Python备份Mysql脚本
发布时间:2016-12-28 来源:查字典编辑
摘要:复制代码代码如下:#!/usr/bin/pythonimportosimporttimeimportftplibimporttracebac...

复制代码 代码如下:

#!/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:testaa.txt")

'aa.txt'

>>>os.path.split("c:testaa.txt")

('c:test','aa.txt')

>>>os.path.split("c:testaa.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学习
脚本专栏子分类