linux系统中日志备份,Linux系统使用logrotate进行日志备份

Linux系统上日志文件很多很多,系统日志message mail cron 等等以及应用程序的日志和访问日志,在大量的访问下,这些日志文件会飞速增长,占用大量私盘空间,同时消耗IO,目前线上使用shell脚本对nginx和tomcat的access_log以及catalina.out文件通过crontab进行日志分割。

今天偶然想起logrotate,小试了下,还是不错的,记录下。。。

查看下log目录下的日志,可以看到关于crontab的日志被分割了,我们没有定义这个,是什么实现的呢?就是logrotate咯。ll /var/log/

-rw-------  1 root  root        0 2月  22 03:21 cron-20150301

-rw-------  1 root  root        0 3月   1 03:20 cron-20150308

-rw-------  1 root  root        0 3月   8 03:19 cron-20150315

-rw-------  1 root  root        0 3月  15 03:35 cron-20150322

-rw-------  1 root  root     5740 3月  28 22:10 cron-20150328

看下logrotate配置文件

2f24e174374172778959f8e9771c7bb7.png

配置文件非常简单,也通俗易懂,一会在说下每个参数的意思,可以看到include /etc/logrotate.d,看看这个目录下有个咩?root@qa-qding-qdingnet. /var/log# ll /etc/logrotate.d/

总用量 40

-rw-r--r--. 1 root root  103 10月  3 2012 dracut

-rw-r--r--  1 root root  185 8月  15 2014 httpd

-rw-r--r--. 1 root root  173 6月  22 2012 iscsiuiolog

-rw-r--r--  1 root root  112 3月  28 22:05 market

-rw-r-----  1 root named 170 10月 15 21:28 named

-rw-r--r--  1 root root  136 8月  23 2010 ppp

-rwxr-xr-x  1 root root  452 11月  8 03:43 salt

-rw-r--r--  1 root root  210 12月 10 18:05 syslog

-rw-r--r--  1 root root  100 2月   4 2013 wpa_supplicant

-rw-r--r--  1 root root   87 10月 16 23:15 yum

关于crontab的log是写在syslog里得,所以我们继续看下syslog的配置文件吧

612ef393202f98d50b326d53fee629c6.png我们都知道syslog管理者cron mail message secure这些日志

貌似刚才logrotate的主配置文件截图没截完整 哈哈,那说一个实力吧 一个tomcat的日志分割,一个nginx的日志分割vim /etc/etc/logrotate.d/tomcat

/data/market_tomcat/logs/catalina.out {   #定义日志的位置,当然也可以写多个就像syslog那样子

rotate 30                             #保留归档30天~不解释,你懂得 就是分割之后保留一个月

daily                                 #每天分割

copytruncate                          #表示此方法采用的是先拷贝再清空的方式

missingok                             #表示如果找不到log文件也没OK

notifempty                            #表示如果log文件是空的,就不进行rotate

}

保存退出,我们执行下/usr/sbin/logrotate -f /etc/logrotate.conf在看下tomcat目录下的日志文件root@Py /data/market_tomcat/logs# ll catalina.out-20150328

-rw-r--r-- 1 root root 233079086 3月  28 22:05 catalina.out-20150328

nginx的例子:/data/logs/qa.qding.qdingnet_accesslog {

daily

missingok

rotate 5

notifempty

sharedscripts

postrotate

[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`

endscript

}

无非就是加了一个shell命令,重启nginx滴。你懂得

参数说明

参数 功能

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 (缺省)以及KB (sizek)或者MB (sizem).

哦对了。我们可以看下/etc/cron.daily/logrotate脚本, 这个每天会主动帮忙进行日志的备份

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值