如何利用Crontab配置每逢特定季度末自动触发的高安级历史归档日志物理物理离带

冬瑶姑娘_3009

冬瑶姑娘_3009

2026-06-07

406人浏览

原创

Linux crontab不支持“季度末”语义,需用每月1日执行脚本判定上月最后一天是否为3/6/9/12月末,若是则触发高安全级归档。

如何利用crontab配置每逢特定季度末自动触发的高安级历史归档日志物理物理离带

Linux 的 crontab 本身不支持“季度末”这种语义级时间表达(如3月31日、6月30日、9月30日、12月31日),因为它只识别固定字段:分钟、小时、日期、月份、星期。而各季度最后一天的日期不统一(3月31日、6月30日、9月30日、12月31日),且闰年2月不参与,无法用单一 crontab 行精确覆盖。因此,“每逢特定季度末自动触发”需通过“每月检查 + 脚本判断是否为季末”来实现。

核心思路:用每月1日执行脚本,由脚本判定当天是否为季度末

crontab 只能按月、日触发,不能直接识别“本季度最后一天”。最可靠做法是:

  • 设定任务每月1日零点运行(0 0 1 * *)
  • 脚本中计算“上个月的最后一天”
  • 判断该日期是否属于3月、6月、9月或12月的月末
  • 若是,则执行高安全级历史归档(含物理离线存储动作)

具体配置步骤

1. 编写季末判定与归档脚本(例如 /opt/bin/quarterly-archive.sh)

内容示例(使用 GNU date,兼容主流发行版):

#!/bin/bash
# 设置严格模式和日志
set -euo pipefail
LOG="/var/log/quarterly-archive.log"
exec >> "$LOG" 2>&1
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Start check..."
<h1>获取上个月最后一天(格式:YYYY-MM-DD)</h1><p>LAST_DAY_OF_PREV=$(date -d "$(date -d 'last month' +'%Y-%m-01') +1 month -1 day" +'%Y-%m-%d' 2>/dev/null || exit 1)
YEAR=$(date -d "$LAST_DAY_OF_PREV" +'%Y')
MONTH=$(date -d "$LAST_DAY_OF_PREV" +'%m')</p><h1>判定是否为季度末:3月、6月、9月、12月的最后一天</h1><p>case "$MONTH" in
"03"|"06"|"09"|"12")
echo "[$(date)] Detected quarter-end: $LAST_DAY_OF_PREV — triggering archive..."</p><pre class="brush:php;toolbar:false;"># ▶▶▶ 此处插入高安全级归档逻辑 ▶▶▶
# 示例(请按实际替换):
# - 生成带校验码的加密归档包
# - 写入WORM(一次写多次读)磁带设备(如 /dev/st0)
# - 执行物理离线操作(如 umount 并标记介质为 offline)
# - 记录介质序列号、哈希值、时间戳至审计库

/opt/bin/do-high-security-archive.sh --date="$LAST_DAY_OF_PREV" --tape="/dev/st0"
;;

*) echo "[$(date)] Not quarter-end ($LAST_DAY_OF_PREV), skip." exit 0 ;; esac

2. 赋予执行权限并测试

FaceSwapper
FaceSwapper

FaceSwapper是一款支持照片、视频和 GIF 换脸的在线 AI 换脸工具。

下载
  • chmod +x /opt/bin/quarterly-archive.sh
  • 手动运行一次:/opt/bin/quarterly-archive.sh,确认日志输出与逻辑正确

添加到 crontab

执行 crontab -e,加入:

0 0 1 * * /opt/bin/quarterly-archive.sh

该行含义:每月1日0点0分执行判定脚本。

高安全级归档的关键实践(非 crontab 本身,但必须配套)

所谓“高安全级历史归档日志物理离带”,需在脚本中落实以下要点:

  • 路径与命令必须用绝对路径:crontab 环境 PATH 极简,date、tar、openssl、mt 等均需写全路径(如 /usr/bin/date)
  • 物理离线需显式控制磁带设备:使用 mt -f /dev/st0 offline 或厂商工具执行卷卸载与物理隔离
  • 完整性保障:归档前生成 SHA256 校验和,写入独立审计日志并同步至气隙系统
  • 权限与审计:脚本应以专用低权限用户(如 archiver)运行;所有操作记录到 /var/log/audit/ 并启用 logrotate
  • 失败熔断:任一环节失败(如磁带写保护、校验不匹配)立即中止,发送告警(可用 logger -p local0.err 接 syslog)

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3630

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3153

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2213

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

5310

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

4982

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

2993

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2485

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

2699

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

277

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.2万人学习