Python备份Mysql脚本

yipeiwu_com6年前Python基础

复制代码 代码如下:

#!/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:\\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'

相关文章

写了个监控nginx进程的Python脚本

复制代码 代码如下: #!/usr/bin/env python import os, sys, time while True: time.sleep(3) try: ret = os...

python中logging库的使用总结

前言 最近因为工作的需要,在写一些python脚本,总是使用print来打印信息感觉很low,所以抽空研究了一下python的logging库,来优雅的来打印和记录日志,下面话不多说了,...

python 布尔操作实现代码

和别的语言布尔类型定义1为真,0为假不同,python定义的真假比较多。 先说下假吧: false,none,0,"",{},[],() 而真的话,只要和上面的相反就行,比如上面是fal...

基于Django框架的权限组件rbac实例讲解

基于Django框架的权限组件rbac实例讲解

1.基于rbac的权限管理 RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,一个角色拥...

利用python如何在前程无忧高效投递简历

利用python如何在前程无忧高效投递简历

前言 在前程无忧上投递简历发现有竞争力分析,免费能看到匹配度评价和综合竞争力分数,可以做投递参考 计算方式 综合竞争力得分应该越高越好,匹配度评语也应该评价越高越好 抓取所有职位关键...