首页 > 其他分享 >定时备份与定时通知

定时备份与定时通知

时间:2024-01-15 16:12:21浏览次数:50  
标签:files 文件 通知 备份 file path 定时

定时备份与定时通知

背景:SQL server代理每天通过维护计划自动备份数据库到文件A中(.bak文件),为了避免文件A所在的服务器有异变发生,需要将文件A备份到其他服务器(同一个局域网)中。

工具:1、FreeFileSync(自动同步文件) 2、 钉钉机器人 3、python写脚本发送备份成功与否的消息到钉钉的机器人上 4、window10任务计划程序 5、自动删除脚本.bat(没用上,原本是用来保留七天以内的文件信息,后面通过FreeFileSync筛选解决了)

步骤:
1、使用FreeFileSync备份文件到局域网中的一个服务器中
2、python调用钉钉机器人
3、window10任务计划程序进行定时执行

1、FreeFileSync

需要注意3个地方

第1个,需要另存为批处理作业,在设置的时候勾选最小化运行和自动关闭,在定期执行之后不会弹出其运行页面了。

第2个,筛选,这里可以使用其功能进行保留哪一些文件或者哪一些日期进行备份;我使用的是时间跨度选择来进行七天以内的进行镜像备份,一开始我想的是全部备份,在通过脚本去删除其余的,但是我发现脚本在访问其他服务器的时候无法进行删除,试了很多操作都没有成功,如有人知道怎么解决的话,我会非常欢迎!

第3个,同步,也就是选你需要的同步类型,有双向同步,有单向镜像copy,也有更新,还可以自定义,这里我使用的是镜像,就是把原文件copy一份到新服务器中。

2、python调用钉钉机器人

python版本: 3.6.8

需要导入 DingtalkChatbot;

钉钉群里自定义机器人,消息推送开启,记住WebHook、加签密钥(可选)和自定义关键字(这很重要,在消息发送的时候需要存在自定义的关键字)

完成在钉钉群里添加自定义机器人步骤即可。

接下来就是使用python来完成备份成功与否的判定,并且发送至钉钉。效果图如下:

import os
import datetime
from dingtalkchatbot.chatbot import DingtalkChatbot
import re

def check_for_daily_files(folder_path):
    today = datetime.date.today()
    # target_file_pattern = re.compile(r'^AIS20220708188888.*\.bak$') 
    target_file_pattern = re.compile(r'^AIS\d+_backup_.*\.bak$')  # 匹配类似"A008888-aa.bak"或"A008888-123.bak"的文件名
    # target_file_pattern = re.compile(r"A008888-(?:\d+|aa)\.bak")  # 匹配类似"A008888-aa.bak"或"A008888-123.bak"的文件名

    found_daily_files = 0  # 用于追踪当天符合条件的文件数量
    found_sum_files = 0  # 用于追踪文件数量


    for root, dirs, files in os.walk(folder_path):
        for file in files:
            file_path = os.path.join(root, file)
            if target_file_pattern.match(file) and datetime.datetime.fromtimestamp(os.path.getmtime(file_path)).date() == today:
                found_daily_files += 1
            if target_file_pattern.match(file) :
                found_sum_files += 1

        
    if found_daily_files >= 1:
        message = "定时推送:备份成功!" + "日期为“"+ str(today) + "”的文件备份成功!" 
        # message = "备份提醒:备份成功!" + "文件夹存在 "+ str(found_sum_files) + " 个文件"
        xiaoding.send_text(msg= message,is_at_all = False)
    else:
        message = "定时推送:备份失败!" + "日期为“"+ str(today) + "”的文件备份失败!"
        xiaoding.send_text(msg= message,is_at_all = True)
        # message = "备份提醒:备份失败!" + "文件夹存在 "+ str(found_sum_files) + " 个文件"

if __name__ == "__main__":
    WEBHOOK_URL = "前面说到的Webhook"
    secret = "前面说到的加签"  # 可选:创建机器人勾选“加签”选项时使用
    xiaoding = DingtalkChatbot(WEBHOOK_URL,secret)  # 方式一:通常初始化方式
    path_to_watch = "需要监测的文件夹"
    #测试
    if os.path.exists(path_to_watch):
        print("exists")
    else:
        print("not")
    check_for_daily_files(path_to_watch)

3、window10任务计划程序进行定时执行

上面说到使用FreeFileSync生成的批处理作业,还有python的文件。接下来我们使用window的任务计划程序进行定时执行。

一直往下走,按照自己的需求选择,到最后选择程序或脚本的时候,(根据需求)把我们之前写的批处理作业和py文件放进去,就大功告成了。

That is all.

此外,我还遇到一个问题就是配置特定文件只对局域网内的特定用户进行开放(A电脑中的文件A只能让B电脑去访问)。
连接如下:
https://www.cnblogs.com/BambooDoorSay/p/17965591

标签:files,文件,通知,备份,file,path,定时
From: https://www.cnblogs.com/BambooDoorSay/p/17965585

相关文章

  • DM8备份和还原以及实时主备搭建
    一、备份和还原1.1联机备份数据库处于运行状态、并正常提供数据库服务情况下进行的备份操作,我们称为联机备份。数据库处于关闭状态时进行的备份操作,被称为脱机备份。一般生产环境下多数会选择联机备份,即在数据库运行的情况下进行数据库的备份。另备份还可以区分为库备份、表空......
  • 网络-华为、思科交换机配置TFTP自动备份、NTP时间同步、SYSLOG日志同步
    配置使用TFTP进行交换机配置的自动保存华为设备<Huawei-sw>sys[Huawei-sw]setsave-configurationinterval60delay3cpu-limit60[Huawei-sw]setsave-configurationbackup-to-serverserver<TFTP服务器IP>transport-typetftppath\Huawei-sw.zip[Huawei-sw]quit<H......
  • SpringAOP基于xml的五种通知
    <?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springfra......
  • Dithered golden interleaver 黄金分割伪随机交织器 代码备份
    目录公式来源DitheredgoldeninterleaverTheMatrix-DitheredGoldenInterleavingAlgorithm有错误欢迎指正公式来源DesignofaModifiedInterleavingAlgorithmBasedonGoldenSectionTheoryEnhancingthePerformanceofTurboCodesDitheredgoldeninterleaver(*......
  • 定时任务及异步,自定义注解进行参数校验
    简单来说:浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝,此为浅拷贝深拷贝:对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容,此为深拷贝。 如何在Spring/SpringBoot中优雅地做参数校验?springboot项目使用validation-api......
  • mysql备份方案
    1.为什么要备份运维是干什么的?保护服务器数据安全维护公司运维资产7*24小时运转企业真实案件:https://www.leiphone.com/category/sponsor/Isb7Smi17CHBTxVF.html企业丢了数据,就等于失去了商机、客户、产品、甚至倒闭。在各式各样的数据中,数据库的数据更是核心之核心,当......
  • mysql备份实战
    1.备份恢复演练(mysqldump+binlog)知识储备如下内容。。全量备份全量数据,指的是某一整个数据库(如kings)中所有的表、以及表数据,进行备份。例如备份所有数据库、以及所有数据,上面也讲了mysqldump的全量备份操作。备份所有库mysqldump-uroot-pwww.yuchaoit.cn-S/data/330......
  • xtrabackup备份工具
    为什么要学这个工具背景一个合格的运维工程师或者dba工程师,如果有从事数据库方面的话,首先需要做的就是备份,如果没有备份,出现问题的话,你的业务就会出问题,你的工作甚至会。。。所以备份是重要的,但光有备份还不行,备份后如果出现问题,你还得使用备份数据来恢复,但恢复数据的时间一......
  • 精确掌控并发:固定时间窗口算法在分布式环境下并发流量控制的设计与实现
    这是《百图解码支付系统设计与实现》专栏系列文章中的第(14)篇。点击上方关注,深入了解支付系统的方方面面。本篇主要介绍分布式场景下常用的并发流量控制方案,包括固定时间窗口、滑动时间窗口、漏桶、令牌桶、分布式消息中间件等,并重点讲清楚固定时间窗口应用原理和应用场景,以及使用re......
  • Controller(StatefulSet)-部署有状态应用,部署守护进程,一次任务和定时任务
    Controller(StatefulSet)-部署有状态应用在Kubernetes中,StatefulSet是一种用于部署有状态应用的控制器。与无状态应用不同,有状态应用需要保持持久性和可识别的网络标识。在有状态应用中,每个Pod都有一个唯一的标识符,并且Pod的创建和删除顺序是有序的。在StatefulSet中创建的Pod具有以......