运维:日志文件的压缩备份

日志文件的压缩备份是服务器运维中的关键任务,可有效防止磁盘空间被占满。主流方法包括使用系统工具 logrotate 或自定义 Shell 脚本结合定时任务。

使用 logrotate 工具(推荐)

logrotate 是 Linux 系统内置的日志管理工具,专为自动轮转、压缩和清理日志文件设计,配置灵活且无需手动编写脚本。

‌核心配置示例(以 Nginx 日志为例)‌:

/var/log/nginx/*.log {

daily # 每天轮转一次

missingok # 日志文件不存在时不报错

rotate 30 # 保留最近30个归档文件

compress # 使用 gzip 压缩旧日志

delaycompress # 延迟一天压缩,确保当日日志可读

notifempty # 日志为空时不轮转

create 0640 www-data adm # 创建新日志文件的权限和所有者

sharedscripts

postrotate

-f /var/run/nginx.pid \] \&\& kill -USR1 \`cat /var/run/nginx.pid\` endscript } ‌关键参数说明‌: rotate N:保留 N 个备份文件,超出的自动删除。 compress:启用 gzip 压缩,显著节省空间。 delaycompress:与 compress 配合使用,避免影响正在写入的日志。 postrotate:轮转后执行命令(如向 Nginx 发送 USR1 信号重载日志)。 ‌配置文件路径‌:通常位于 /etc/logrotate.d/ 目录下,为不同服务创建独立配置文件。 ‌手动测试‌:使用 sudo logrotate -d /etc/logrotate.d/nginx(调试模式)或 sudo logrotate -f /etc/logrotate.d/nginx(强制执行)验证配置‌1。 使用 Shell 脚本自定义备份 若需更灵活的逻辑(如备份到远程目录或特定命名规则),可编写 Shell 脚本并配合 cron 定时执行。 ‌脚本功能示例‌: 每日凌晨 2 点压缩 /data/logs/myapp/ 目录中昨日的日志文件。 将压缩包(如 access.log-20260209.tar.gz)移动至 /data/backup/。 删除 /data/backup/ 中 7 天前的备份文件。 ‌脚本优势‌:可自定义压缩格式(如 tar.gz)、备份路径和清理策略,适合非标准日志路径或特殊需求‌。 ‌执行方式‌:将脚本保存为 backup_logs.sh,通过 crontab -e 添加定时任务:0 2 \* \* \* /path/to/backup_logs.sh。

相关推荐
m0_624578594 分钟前
C#怎么获取U盘的插拔事件_C#如何重写WndProc捕获消息【进阶】
jvm·数据库·python
专业白嫖怪9 分钟前
监控平台Prometheus+Grafana的部署
运维·grafana·prometheus
消失的旧时光-194310 分钟前
SQL 第四篇:JOIN 实战(数据库到底是怎么“拼表”的)
数据库·sql·mysql
mzhan01734 分钟前
Linux: signal: SIGALRM; alarm: ITIMER_REAL
linux·运维·服务器
深蓝轨迹43 分钟前
Spring Data JPA 实战指南:从基础配置到高级技巧
数据库·oracle·spring data jpa
●VON1 小时前
纯ArkUI实现7层拟物3D环形进度图:零依赖的视觉革命
服务器·3d·app·鸿蒙·von
mzhan0171 小时前
Linux: compare的直观性
java·linux·服务器
爱喝水的鱼丶1 小时前
SAP-ABAP:SAP 与 ABAP 关联逻辑与入门路径:业务×开发的协作指南
服务器·前端·数据库·学习·sap·abap
原来是猿1 小时前
TCP Server 业务扩展实战:从 Echo 到远程命令执行与词典翻译
linux·运维·服务器
运维老郭1 小时前
K8S 容器独占 CPU(CPU 绑核)最佳实践,解锁极致性能所需的 3 个核心条件及其代价
运维·云原生·kubernetes