复制代码 代码如下: #!/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: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'
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|