Ubuntu日志文件压缩的常用方法
gzip是Ubuntu默认安装的压缩工具,生成的.gz文件压缩率较高,且原始文件会被自动删除(若需保留,需提前备份)。
sudo gzip /var/log/syslog(生成/var/log/syslog.gz)sudo gzip /var/log/syslog /var/log/auth.log /var/log/kern.log(分别生成对应.gz文件)sudo gzip /var/log/*.log(批量处理)bzip2生成的.bz2文件压缩率优于gzip,但压缩速度较慢,适合对存储空间敏感的场景。
sudo bzip2 /var/log/syslog(生成/var/log/syslog.bz2)sudo bzip2 /var/log/syslog /var/log/auth.logsudo bzip2 /var/log/*.log若需保留原始日志文件,或合并多个文件为一个压缩包,可使用tar结合gzip/bzip2。
sudo tar -czvf logs.tar.gz /var/log/syslog /var/log/auth.log(生成logs.tar.gz,原始文件保留)sudo tar -cjvf logs.tar.bz2 /var/log/syslog /var/log/auth.logtar -xzvf logs.tar.gz(解压为原始文件)若需将日志文件传输到Windows系统,可使用zip格式(兼容性好)。
sudo zip logs.zip /var/log/syslog(生成logs.zip,原始文件保留)sudo zip logs.zip /var/log/syslog /var/log/auth.loglogrotate是Ubuntu系统自带的日志管理工具,可自动完成日志轮转(分割)、压缩、删除旧日志等任务,无需手动编写脚本。
/etc/logrotate.conf(定义默认参数,如压缩命令、保留天数)/etc/logrotate.d/(如/etc/logrotate.d/rsyslog针对rsyslog服务的日志配置)/var/log/syslog):/etc/logrotate.d/syslog中添加以下内容:/var/log/syslog {
daily # 每天轮转一次
rotate 7 # 保留最近7天的压缩日志
compress # 启用gzip压缩(生成.syslog.gz)
delaycompress # 延迟压缩(当天日志不压缩,次日压缩前一天的)
missingok # 若日志文件不存在,不报错
notifempty # 若日志为空,不轮转
create 640 root adm # 创建新日志文件,权限640,属主root,属组adm
}
sudo logrotate -d /etc/logrotate.d/syslog(模拟运行,显示将要执行的操作)sudo logrotate -f /etc/logrotate.d/syslog(立即处理日志,无需等待定时任务)若需更灵活的压缩时间(如凌晨2点),可通过cron定时执行压缩命令。
sudo crontab -e/var/log/syslog):0 2 * * * gzip /var/log/syslog
保存后,cron会在指定时间自动执行压缩root用户,压缩时需用sudo提升权限。cp /var/log/syslog /var/log/syslog.bak)。rotate参数(如保留7天)定期清理旧日志。