源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Python备份Mysql脚本

  • 时间:2021-12-30 17:35 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Python备份Mysql脚本
[u]复制代码[/u] 代码如下:
#!/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了   
[u]复制代码[/u] 代码如下:
 >>> 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'
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部