# -*- coding:gbk -*-
import os
import time
import datetime
import shutil
# 自动备份数据库,并删除七天前文件
#数据库ip
DB_HOST = "你的数据库地址"
#数据库端口
DB_PORT = "端口号"
#数据库用户名
DB_USER = "用户名"
#数据库密码
DB_USER_PASSWORD = "密码"
#备份的数据库
DB_NAMES = "数据库名"
#备份到的路径
BACKUP_PATH = "/backmysql/"
# 当前时间.
DATETIME = time.strftime('%Y%m%d')
TODAYBACKUPPATH = BACKUP_PATH + DATETIME
def delmysql():
'''
获取取文件夹下所有文件的名字并删除七天前文件
'''
path = "/backmysql/"
datanames = os.listdir(path)
for i in datanames:
cc=int(int(i)+6)
if cc < int(DATETIME): # 删除七天前备份
pathcc =path+str(i)
if os.path.exists(pathcc): # 如果文件存在
# 删除文件,可使用以下两种方法。
#os.remove(pathcc) #只能删除文件不能删除文件夹
shutil.rmtree(pathcc)
else:
print("文件夹不存在"+pathcc)
def backmysql1():
# 检查备份文件夹是否已经存在。 如果不存在,将创建它 .
if not os.path.exists(TODAYBACKUPPATH):
os.makedirs(TODAYBACKUPPATH)
today = datetime.datetime.now()
for item in os.listdir(BACKUP_PATH):
try:
foldername = os.path.split(item)[1]
day = datetime.datetime.strptime(foldername, "%Y%m%d")
diff = today - day
if diff.days >= 60:
#print( BACKUP_PATH + item)
shutil.rmtree(BACKUP_PATH + item)
except:
pass
# 用于检查是否要在DB_NAME中进行单个数据库备份还是分配多个备份的代码 .
DBS = DB_NAMES.split(",")
for DB_NAME in DBS:
# 备份.
DB_PATH = TODAYBACKUPPATH + "/" + DB_NAME + ".sql"
#print("- - - baking '" + DB_NAME + ".zip'")
dumpcmd = "mysqldump -h" + DB_HOST + " -u" + DB_USER + " -p" + DB_USER_PASSWORD + " " + DB_NAME +" > "+ DB_PATH
os.system(dumpcmd)
if __name__=='__main__':
try:
while True:
now = datetime.datetime.now()
#print(now.hour, now.minute)
if now.hour == 21 and now.minute == 00: # 每天九点运行程序
backmysql1()
print("备份成功 : "+TODAYBACKUPPATH+"sport.sql")
delmysql()
print("删除成功 :"+ DATETIME+"七天前的内容")
# 每隔60秒检测一次
print("程序运行中")
time.sleep(60)
except Exception as e:
print(str(e))
# mysqldump: [Warning] Using a password on the command line interface can be insecure. 在命令行输入密码,就会提示这些安全警告信息(警告信息可忽略)在命令行界面使用密码可能是不安全的
评论0