[Python Study 5] - Backup MySQL

https://dream4ever.org/showthread.php?t=76803特点是多平台,一个脚本内可以备份多个数据库,并分别打包上传到ftp进行备份。调用了mysqldump及tar来进行数据库dump及打包。具体参数说明参见源文件http://5j4m.net/upload/code/mysqldbbackup.py
#!/usr/bin/pythonimport osimport timeimport ftplibimport traceback#config varssystempathchr="/" #路径分割符,*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.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'