【运维】windows自动本地备份下发通知邮件

1、实现目标

为保障重要文件和系统数据的持续可用性和安全性,制定如下自动备份及通知机制:

① 定时自动备份
使用 Windows 计划任务配合脚本实现指定目录的定期备份(如每日凌晨 2 点),可支持本地或远程共享路径备份。

② 备份异常通过邮件发送责任人
备份任务执行后,自动检测运行结果,若发生错误,将通过邮件将错误日志和信息发送给对应负责人。

③ 成功与失败均通过邮件通知
使用 Python 脚本根据执行结果自动发送备份成功或失败的状态邮件至指定邮箱

2、windows脚本编写

为实现备份功能,编写批处理脚本(.bat)或 PowerShell 脚本,实现以下功能:

1、设置源目录和目标备份目录

2、日志记录备份结果

3、python脚本发送邮箱通知

4、附录bat脚本

@echo off
setlocal enabledelayedexpansion

:: === 设置源目录和目标目录 ===
set "SRC=D:\deepseek"                    :: 要备份的目录,可修改
set "DST=D:\data"                 :: 备份保存目录,可修改

:: === 设置 WinRAR 路径 ===
set "WINRAR_EXE=C:\Program Files\WinRAR\WinRAR.exe"

:: === 获取当前日期(格式:YYYY-MM-DD) ===
for /f %%i in ('powershell -command "Get-Date -Format yyyy-MM-dd"') do set "TODAY=%%i"

:: === 构建压缩文件路径和日志文件路径 ===
set "RAR_FILE=%DST%\Backup_%TODAY%.rar"
set "LOG_FILE=D:\backup_log.txt"

echo =============================== >> "%LOG_FILE%"
echo [%date% %time%] 开始备份 >> "%LOG_FILE%"
echo 源路径:%SRC% >> "%LOG_FILE%"
echo 目标路径:%RAR_FILE% >> "%LOG_FILE%"

:: === 检查 WinRAR 是否存在 ===
if not exist "%WINRAR_EXE%" (
    echo ?? 未找到 WinRAR!请确认路径设置正确:%WINRAR_EXE% >> "%LOG_FILE%"
    echo ? 未找到 WinRAR,备份失败。
    goto END
)

:: === 执行压缩 ===
"%WINRAR_EXE%" a -r -ep1 "%RAR_FILE%" "%SRC%\*" >> "%LOG_FILE%"
if exist "%RAR_FILE%" (
    echo ? 压缩成功:%RAR_FILE% >> "%LOG_FILE%"
    echo 备份并压缩完成。
) else (
    echo ? 压缩失败,请检查 WinRAR 配置。 >> "%LOG_FILE%"
    echo 压缩失败。
)

:END
echo [%date% %time%] 任务完成 >> "%LOG_FILE%"
echo =============================== >> "%LOG_FILE%"
python "D:\deepseek\smp.py"
endlocal
exit /b

3、STMP邮箱设置

为实现邮件通知功能,需配置 SMTP 发信邮箱:

发件人邮箱及授权码设置

4、python脚本邮箱脚本下发备份成功与否通知

1、配置邮箱及授权码

import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
from datetime import datetime
# 发件人邮箱账号和授权码
sender_email = '1xx@qq.com'
sender_password = 'komydopzpfrmbaaz'

# 收件人邮箱
receiver_email = '1xxx@qq.com'

current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
# 邮件主题和内容
subject = '备份完成提醒'
body = f'备份已成功完成,时间为:{current_time}。'

# 创建邮件对象
msg = MIMEText(body, 'plain', 'utf-8')
msg['From'] = formataddr(('备份系统', sender_email))
msg['To'] = formataddr(('收件人', receiver_email))
msg['Subject'] = subject

try:
    # 连接 SMTP 服务器
    server = smtplib.SMTP_SSL('smtp.qq.com', 465)
    server.login(sender_email, sender_password)

    # 发送邮件
    server.sendmail(sender_email, [receiver_email], msg.as_string())
    print('邮件发送成功')
except Exception as e:
    print(f'邮件发送失败: {e}')
finally:
    # 关闭连接
    server.quit()

5、定时任务设置

使用 Windows 任务计划程序 配置脚本每日定时执行:

  • 执行脚本路径(.bat )

  • 设置触发条件:每日固定时间

6、结果展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值