精准定位并安全归档历史日志文件:先用 find /var/log -type f -name "*.log" -mtime +30 筛选30天前日志,排除 journal、.gz、.1 等文件,-ls 预览后通过 tar 打包压缩至归档目录,验证无误再 -delete 清理。

用 find 查找并归档历史日志文件,关键在于“精准定位 + 安全归档”。不建议直接删除,而是先筛选出符合条件的日志(比如 30 天前的 .log 文件),再打包压缩保存到归档目录,既保留数据又释放空间。
按时间+类型精准定位日志文件
历史日志通常集中在 /var/log 及其子目录,以 .log 结尾,且修改时间较早。使用 -mtime +30 找出 30 天前修改过的普通文件:
find /var/log -type f -name "*.log" -mtime +30- 加
-iname可兼容大小写变体,如.LOG或.Log - 若需更精确到分钟级(例如清理 2 小时前的临时日志),改用
-mmin +120
排除正在使用的活跃日志
避免误伤 syslog、journal 或被 logrotate 锁定的文件:
- 跳过当前正在轮转的目录:
find /var/log -path "/var/log/journal" -prune -o -type f -name "*.log" -mtime +30 -print - 排除以
.gz、.1等结尾的已归档文件:! -name "*.gz" ! -name "*.1" - 加
-ls先预览结果,确认路径和时间是否合理
打包归档并保留原始结构
找到目标后,用 -exec 调用 tar 打包,推荐使用 --transform 重写路径,避免解压时污染根目录:
-
find /var/log -type f -name "*.log" -mtime +30 -exec tar -rf /tmp/archive_$(date +%Y%m%d).tar {} \;(追加模式) - 更安全的做法是先生成列表再打包:
find /var/log -type f -name "*.log" -mtime +30 > /tmp/old_logs.list && tar -cf /tmp/archive_$(date +%Y%m%d).tar -T /tmp/old_logs.list - 打包后自动压缩:
tar -czf /tmp/archive_$(date +%Y%m%d).tar.gz -T /tmp/old_logs.list
归档后清理原始文件(可选)
确认归档无误后,再删除源文件。务必分两步操作,不要合并执行:
- 先验证 tar 包内容:
tar -tzf /tmp/archive_20260729.tar.gz | head -10 - 再批量删除:
find /var/log -type f -name "*.log" -mtime +30 -delete或用-exec rm {} \; - 加
-depth参数可避免因父目录先删导致子项报错


















