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

日志压缩与轮转需求:保留5天压缩日志及2天未压缩日志

日志压缩与清理解决方案

核心逻辑

  • 保留最近2天的未压缩原始日志(/user/var/logs/fw/下的当日及昨日日期文件夹)
  • 将第3~7天的日志文件夹压缩归档到备份目录(/user/var/backup-logs/fw/),保留5天压缩日志
  • 删除7天前的所有原始日志和备份压缩文件

实现脚本

创建/usr/local/bin/log-backup-clean.sh脚本,内容如下:

#!/bin/bash

# 定义路径变量
SOURCE_LOG_DIR="/user/var/logs/fw"
BACKUP_LOG_DIR="/user/var/backup-logs/fw"

# 创建备份目录(不存在则自动创建)
mkdir -p "${BACKUP_LOG_DIR}"

# 1. 压缩第3~7天的日志文件夹(按日期名称精准匹配)
for day_offset in {3..7}; do
    TARGET_DATE=$(date -d "${day_offset} days ago" +%Y-%m-%d)
    SOURCE_FOLDER="${SOURCE_LOG_DIR}/${TARGET_DATE}"
    
    # 仅当源文件夹存在且对应备份未生成时执行压缩
    if [ -d "${SOURCE_FOLDER}" ] && [ ! -f "${BACKUP_LOG_DIR}/${TARGET_DATE}.tar.gz" ]; then
        tar -czf "${BACKUP_LOG_DIR}/${TARGET_DATE}.tar.gz" -C "${SOURCE_LOG_DIR}" "${TARGET_DATE}"
        # 若需压缩后立即删除原始文件夹,可取消下方注释
        # rm -rf "${SOURCE_FOLDER}"
    fi
done

# 2. 删除7天前的原始日志文件夹
find "${SOURCE_LOG_DIR}" -type d -name "????-??-??" -mtime +7 -exec rm -rf {} \;

# 3. 删除7天前的备份压缩文件
find "${BACKUP_LOG_DIR}" -type f -name "????-??-??.tar.gz" -mtime +7 -exec rm -f {} \;

脚本权限配置

给脚本添加可执行权限:

chmod +x /usr/local/bin/log-backup-clean.sh

Cron定时任务配置

编辑crontab设置每日自动执行:

crontab -e

添加以下内容(每天凌晨2点执行,日志输出到指定文件便于排查):

0 2 * * * /usr/local/bin/log-backup-clean.sh >> /var/log/log-backup-clean.log 2>&1

关键说明

  • 脚本通过日期偏移量精准定位目标日志,避免误操作
  • 使用tar -C参数确保归档文件路径简洁,不包含冗余的源目录层级
  • 原始日志默认保留至7天前再删除,若需压缩后立即清理原始文件,可取消脚本内对应注释
  • 选择凌晨低峰期执行定时任务,避免影响业务运行

内容的提问来源于stack exchange,提问作者securityseeker

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 07:42:09