python mysql自动备份脚本_Python备份Mysql脚本

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值