# -*- coding: utf-8 -*-
# @Author : CrazyAboutMoney
# @Email : 2442009349@qq.com
# @Time : 2023-04-12
# @WeChat :CrazyAboutMoney
import os
import shutil
import subprocess
# 时间库
import datetime
import time
# 日志库
import logging
from config import execution_time, mysql_path, user, password, db
# 获取当前文件路径
current_directory = os.path.dirname(os.path.abspath(__file__))
# 验证路径是否正确
# 日志 获取了current_directory 路径后可用字符串拼接的方式 把路径插入形成完整的 d:\Desktop\Automatic_backup\Automatic_ backup.log文件存放日志
logging.basicConfig(filename='%s\\Automatic_backup.log' % current_directory,
encoding='utf-8',
level=logging.DEBUG)
# 文件夹名,以时间为格式 yyyymmdd
now_time = time.strftime('%Y%m%d', time.localtime())
# url_path 数据库存放路径:当前路径+文件夹名
url_path = current_directory + '\\%s' % now_time
# 备份数据库
def backup():
mysqldump = 'mysqldump -u {} -p"{}" {} > {}\\{}{}.sql'.format(
user, password, db, url_path, db,
time.strftime('%H_%M_%S', time.localtime()))
# 跳到mysql的 bin 目录下进行执行备份
os.chdir(mysql_path)
# 用subprocess库的getoutput方法去执行mysql备份语句 会返回cmd的信息,看日志 cmd:后面的内容
res = subprocess.getoutput(mysqldump)
# 字符串方法 find 查找 如果没有的话是 返回的值是 -1 int类型
if res.find('error') >= 0:
logging.error('备份数据库失败:%s ' % str(datetime.datetime.now()) +
mysqldump + ' cmd:' + res)
else:
logging.info('备份数据库成功:%s ' % str(datetime.datetime.now()) + mysqldump +
' cmd:' + res)
# 创建文件夹
def mkdir_dump():
os.makedirs(url_path)
logging.info('创建 %s 文件夹成功' % now_time + ' 文件路径:' + url_path)
# 执行备份数据库
backup()
# 查看是文件夹是否已生成
def Get_folder():
# 获取文件夹
delete7day()
logging.info('执行删除超过7天的文件 delete7day()')
folder_list = os.listdir(current_directory)
# 判断是否存在该文件夹
if now_time in folder_list:
creation_time = time.ctime(os.path.getctime(url_path))
logging.error('已存在:' + now_time + ' 文件夹,该文件夹创建时间为:' + creation_time)
backup()
else:
logging.info('不存在 ' + now_time + ' 文件夹,即将创建文件夹')
mkdir_dump()
# 保留7天的文件
def delete7day():
dnow = datetime.datetime.now()
delete_7 = dnow + datetime.timedelta(days=-7)
delete_7 = delete_7.strftime('%Y%m%d')
# 获取当前路径所有文件
dir_list = os.listdir(current_directory)
# 把主程序以及日志等工具排除出去
list_name = [
'Automatic_backup.py',
'Automatic_backup.log',
'Automatic_backup.bat',
'nssm.exe',
'python-3.11.3-amd64.exe',
'config.py',
'__pycache__',
]
for i in list_name:
if i in dir_list:
dir_list.remove(i)
for i in dir_list:
try:
if int(i) < int(delete_7) and len(i) == 8:
logging.info('删除 ' + i + ' 文件 ' + '已超过30天')
shutil.rmtree(i)
except Exception as e:
print('删除报错,返回主程序', e)
logging.error('删除 %s 文件失败!' % i)
# 主程序运行 监听
def Repeated_execution():
logging.info('%s 监听中等待执行备份操作。' %
time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))
while True:
time.sleep(1)
today = datetime.datetime.now()
print(today.time().strftime('%H:%M:%S'))
if today.time().strftime('%H:%M:%S') == execution_time:
logging.info('开始执行备份任务,排查是否已有 %s 文件夹,执行Get_folder。' % now_time)
Get_folder()
if __name__ == "__main__":
Repeated_execution()
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Automatic_backup.zip (4个子文件)
Automatic_backup
nssm.exe 324KB
Automatic_backup.bat 26B
Automatic_backup.py 4KB
config.py 695B
共 4 条
- 1
资源评论
一棵白菜c
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功