Windows Server数据库备份清理脚本

使用场景:解决Windows server2019 / SQL Server 备份服务的自动化需求
一、 脚本文件    auto-for-win2019
  • 主脚本Auto-Move-Files.bat – 每日自动移动备份文件到日期文件夹并上传到华为obs
  • 清理脚本Clean-Old-Backups.bat – 每周清理旧备份文件夹,防止磁盘爆满
二、 功能概述
1. Auto-Move-Files.bat
  • 执行频率: 每天执行
  • 主要功能:
    • 自动创建以当前日期命名的文件夹(格式:YYYYMMDD)
    • 将当天生成的备份文件移动到对应日期文件夹
    • 同步文件夹到华为云OBS备份
2. Clean-Old-Backups.bat
  • 执行频率: 每周日执行
  • 主要功能:
    • 自动删除7天前的备份文件夹
    • 保留最近7天的本地备份
    • 记录详细操作日志
三、 配置参数
备份目录
set "backup_dir=C:\数据库备份"
保留策略
set "days_to_keep=7"  # 保留最近7天的备份
日志文件
set "log_file=%backup_dir%\cleanup_日志.txt"
四、 清理逻辑
日期计算
  • 当前日期: 使用WMIC命令获取系统日期
  • 截止日期: 当前日期减去7天
  • 示例: 今天是2025-12-19,则删除2025-12-12及之前的文件夹
文件夹识别规则
  1. 格式要求: 8位数字(YYYYMMDD)
  2. 日期验证:
    • 年份 ≥ 2000
    • 月份 1-12
    • 日期 1-31
  3. 比较规则: 文件夹日期 ≤ 截止日期 → 删除
五、 日志记录
日志内容
  • 操作开始时间
  • 配置参数
  • 当前日期和截止日期
  • 每个文件夹的处理结果
  • 操作统计信息
六、 部署步骤
1. 文件放置

将两个批处理文件放在合适的位置,建议:

  • C:\数据库备份\ 目录下
  • 或专门的脚本目录
2. 配置任务计划
Auto-Move-Files.bat(每日任务)
  • 触发器: 每天,选择合适时间(如凌晨1:00)
  • 操作: 启动程序 → 选择 Auto-Move-Files.bat
  • 条件: 不管用户是否登录都要运行
Clean-Old-Backups.bat(每周任务)
  • 触发器: 每周,星期日,选择合适时间(如凌晨2:00)
  • 操作: 启动程序 → 选择 Clean-Old-Backups.bat
  • 条件: 选择“只在用户登录时运行”,如果选择“不管用户是否登录都要运行”,会导致无法运行。
3. 权限设置

确保任务计划程序使用的账户有:

  • 对 C:\数据库备份 的完全控制权限
  • 批处理文件执行权限
七、 注意事项
1. 编码问题
  • 批处理文件必须保存为 ANSI编码
  • 不要使用UTF-8编码,否则会出现乱码错误
2. 权限要求
  • 以管理员权限运行脚本
  • 确保有删除文件夹的权限
3. 错误处理
  • 脚本已包含基本错误处理
  • 删除失败会记录在日志中
  • 不会中断脚本执行
八、 故障排查
常见问题
  1. 脚本一闪而过
    • 检查文件编码(应为ANSI)
    • 检查路径是否正确
    • 手动运行查看错误信息
  2. 文件夹未删除
    • 检查文件夹权限
    • 查看日志文件了解原因
    • 确认日期计算是否正确
  3. 日志文件未生成
    • 检查备份目录是否存在
    • 检查写入权限
    • 查看脚本是否有语法错误
调试方法
  1. 在CMD中手动运行脚本
  2. 查看屏幕输出信息
  3. 检查日志文件详细信息

附件列表