Linux 大文件的分割处理

如果在项目部署前期没有做好日志文件的定时分割备份,日志文件会越来越大,一旦出现问题,很难查看日志文件,定位问题。现在学到两种方式可以解决,分享下。

1. linux的split命令

split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]

split 命令可以按照行,也可以按照字节大小分割。
举例:
以20m大小分割:
split -b 20m catalina.out part_
会生成part_aa,part_ab 等以字母为后缀的文件。
以10000行大小分割:
split -10000 catalina.out part_

2. logrotate工具
它提供自动替换,压缩,删除和邮寄记录文件,每个记录文件都可被设置成每日,每周或每月处理,也能在文件太大时立即处理。
举例:
在/etc/logrotate.d/目录下新建一个文件,例如 vi /etc/logrotate.d/tomcat
内容:

/app/tomcat/logs/catalina.out {  
su root tomcat 
rotate 31  
daily  
copytruncate  
compress  
notifempty  
missingok  
dateext  
}

然后执行/usr/sbin/logrotate -f /etc/logrotate.conf
会发现文件已经做备份。

参数解释:
compress 通过gzip 压缩转储以后的日志
nocompress 不需要压缩时,用这个参数
copytruncate 用于还在打开中的日志文件,把当前日志备份并截断
nocopytruncate 备份日志文件但是不截断
create mode owner group 转储文件,使用指定的文件模式创建新的日志文件
nocreate 不建立新的日志文件
delaycompress 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress 覆盖 delaycompress 选项,转储同时压缩。
errors address 专储时的错误信息发送到指定的Email 地址
ifempty 即使是空文件也转储,这个是 logrotate 的缺省选项。
notifempty 如果是空文件的话,不转储
mail address 把转储的日志文件发送到指定的E-mail 地址
nomail 转储时不发送日志文件
olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir 转储后的日志文件和当前日志文件放在同一个目录下
prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
daily 指定转储周期为每天
weekly 指定转储周期为每周
monthly 指定转储周期为每月
rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
tabootext [+] list 让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~
size size 当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及K (sizek)或者M (sizem).
dateext ; 为日志文件打上日期标签
强制执行
logrotate -vf /etc/logrotate.d/log-file

发布了137 篇原创文章 · 获赞 123 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/lz20120808/article/details/100102399