Python備份Mysql指令碼

2022-09-28 18:15:11 字數 2815 閱讀 9027

複製** **如下:

#!/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路徑 

ftp程式設計客棧queue= 

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  uvvnsyhrqh

timeformat="%y%m%d" 

sqlvalformat="mysqlduuvvnsyhrqhmp -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 

>&g> 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' 

>>&程式設計客棧gt; os.path.split("/home/test/aa.txt") 

('/home/test', 'aa.txt') 

>>> os.path.basename("/home/test/aa.txt") 

'aa.txt'

本文標題: python備份mysql指令碼

本文位址:

編寫mysql備份指令碼 mysql 備份指令碼的編寫

最近在為做一些邊邊角角的工作,現在有乙個需求要每天把mysql的資料庫dump出來到備份機器上面去.看似簡單的任務也潛在了很多的需求,整理如下 自動執行 crontab 指令碼的環境變數設定 由於通過crontab 啟動執行的指令碼環境變數沒有設定,需要在指令碼中設定環境變數 使用何種方式備份資料庫...

mysql備份 MySQL備份指令碼

第乙個指令碼 bin bash mysql備份指令碼bak dir data backup date y m d mysqldb 資料庫名mysqluser 使用者mysqlpwd 密碼mysqlcmd usr bin mysqldumpmysqlser 資料庫伺服器mysqlport 埠if d ...

mysql的備份指令碼 mysql的備份指令碼

1 描述 我相信很多朋友在工作都都會有這種需求,老闆或領導讓你每天都要備份mysql資料庫,你該如何實現呢,是每天到一定的時間在伺服器上敲一遍mysql的備份命令,還是想寫個指令碼,定時定點的自動備份呢?我相信大家都想讓它自動備份,接下來我通 shell指令碼 定時任務 的方式來實現自動備份mysq...