You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写Bash脚本:检查Collector下当日Repository文件夹并触发邮件告警

Bash脚本实现当日备份目录检查与邮件告警

没问题,我来帮你搞定这个脚本需求。首先我们明确核心逻辑:确认当日日期的备份目录是否存在,不存在则收集旧目录信息并发送告警邮件。下面是完整的脚本实现,我会一步步解释细节:

完整脚本代码

#!/bin/bash

# 1. 配置基础参数,根据你的实际环境修改
# 替换为collector目录的绝对路径
COLLECTOR_DIR="/your/actual/path/collector"
# 收件人邮箱
ALERT_EMAIL="your-alert-email@example.com"
# 日期格式,需和备份文件夹的日期格式完全匹配!比如备份是repository-20240520就改成%Y%m%d
DATE_FORMAT="%Y-%m-%d"
# 备份目录的命名规则,比如你的文件夹是repository_2024-05-20就写"repository_$TODAY",如果是2024-05-20_repository就写"$TODAY_repository"
TARGET_DIR_PATTERN="repository_$TODAY"

# 2. 获取当日系统日期(RHEL系统date命令兼容这个格式)
TODAY=$(date +$DATE_FORMAT)

# 3. 检查当日备份目录是否存在
if [ ! -d "$COLLECTOR_DIR/$TARGET_DIR_PATTERN" ]; then
    # 收集所有旧的repository目录(排除当日的)
    OLD_DIRS=$(ls -d "$COLLECTOR_DIR"/repository* 2>/dev/null | grep -v "$TODAY")
    
    # 构造邮件内容
    ALERT_CONTENT="告警信息:
未找到当日[$TODAY]的备份目录!
当前存在的旧备份目录如下:
$OLD_DIRS"
    
    # 发送告警邮件
    echo "$ALERT_CONTENT" | mail -s "备份目录异常告警($TODAY)" "$ALERT_EMAIL"
    
    # 可选:写入日志文件,方便后续排查
    echo "$(date +'%Y-%m-%d %H:%M:%S') - 未找到当日备份目录,已发送告警邮件" >> /var/log/backup_check.log
else
    # 可选:当日目录存在时也写入日志
    echo "$(date +'%Y-%m-%d %H:%M:%S') - 当日备份目录存在,一切正常" >> /var/log/backup_check.log
fi

关键细节说明

  • 日期格式匹配:这是最容易出错的地方!一定要让DATE_FORMAT和你的备份文件夹的日期格式完全一致。比如如果备份文件夹是repository20240520,就把DATE_FORMAT改成%Y%m%d,同时调整TARGET_DIR_PATTERN为repository$TODAY。
  • 路径配置:COLLECTOR_DIR必须写绝对路径,避免脚本在不同目录运行时出错。
  • 邮件发送:确保你的RHEL系统已经配置好邮件服务(比如postfix或sendmail),mail命令能正常发送邮件。如果测试时收不到邮件,可以先手动运行echo "test" | mail -s "test" your-email@example.com排查问题。
  • 日志记录:添加日志可以帮你追踪脚本的执行情况,方便后续排查故障。

定时任务配置(可选)

因为你的备份工具是凌晨2点运行,建议把脚本设置在凌晨2点10分左右执行(给备份留足够时间),用crontab实现:

  1. 编辑crontab:crontab -e
  2. 添加一行:
10 2 * * * /bin/bash /path/to/your/backup_check_script.sh
  1. 保存退出即可,这样脚本每天凌晨2点10分自动运行。

测试建议

在正式部署前,你可以手动修改TODAY变量为一个不存在的日期,运行脚本测试是否能正常发送告警邮件;再改回当日日期,确认不会误发告警。

内容的提问来源于stack exchange,提问作者Roni.Miller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:31:57