Python备份Mysql脚本
2023-06-13 09:14:01 时间
#!/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"
相关文章
- mysql workbench 1142,Mysql Workbench错误1142“错误查询安全信息”;关于数据导出「建议收藏」
- MySQL实现高效率高并发插入(mysql高并发插入)
- 检查MySQL是否已安装(查看是否安装mysql)
- 备份MySQL指定路径数据库备份方法(mysql指定路径)
- MySQL命令行删除表的指导.(mysql命令行删除表)
- MySQL数据库:如何使用备份命令(备份mysql命令)
- Mysql 求出时间差:一招制胜(mysql求时间差)
- 学习MySQL备份命令,让数据更加安全可靠!(mysql备份命令)
- MySQL查询练习: 练就精彩查询能力 (mysql查询习题)
- 选择MySQL中的值选择能力提升(mysql和值)
- MySQL 备份:一步搞定全部数据库(mysql备份所有库)
- MySQL 备份:步骤与技巧(mysql的备份)
- MySQL数据库备份:保障数据安全(mysql数据库备份文件)
- MySQL导入导出工具:快速高效实现数据迁移和备份(导入导出工具mysql)
- MySQL语句备份数据库,保护你的数据安全(mysql语句备份数据库)
- MySQL 自动备份脚本:只需轻松一键!(mysql 自动备份脚本)
- Python编程连接MySQL:从零开始(python与mysql)
- MySQL中的Normalization 数据库设计的重要规则(mysql中normal)
- 使用CLINQ与MySQL实现高效数据库查询(c linq mysql)
- MySQL登录连接建立持久连接(.mysql 登录连接串)
- MySQL实现一次性删除指定ID的数据(mysql一次删除 id)
- MySQL不支持区域划分(mysql 不在某个区域)
- 如何找到可靠的MySQL下载渠道(mysql下载那个一个)
- MySQL优化查询避免空列查询(mysql不查询空列)
- Redis 与 MySQL 联动多种策略实现宏观数据优化(redis落地mysql)