syslog日志每10分钟备份一次

1、syslog 安装
apt-get install inetutils-syslogd
2、重启syslog、(syslog日志文件写满后会停止记录日志)
sudo killall  -HUP  syslogd
3、循环记录日志需安装logrotate(用于控制日志的循环记录)和cron(定时调用logrotate)
    在Debian或Ubuntu上:
sudo apt-get install logrotate cron
    在Fedora,CentOS或RHEL上:
yum install logrotate crontabs

4、cron会根据/etc/crontab配置定时执行命令

    cron默认配置如下:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin								

# m   h dom mon dow user  command
17    *  *   *   *  root  cd / && run-parts --report /etc/cron.hourly			
25    6  *   *   *  root  test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )	        
47    6  *   *   7  root  test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 
52    6  1   *   *  root  test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )	
    minute — 分钟,从 0 到 59 之间的任何整数
    hour — 小时,从 0 到 23 之间的任何整数
    day — 日期,从 1 到 31 之间的任何整数(如果指定了月份,必须是该月份的有效日期)
    month — 月份,从 1 到 12 之间的任何整数(或使用月份的英文简写如 jan、feb 等等)
    dayofweek — 星期,从 0 到 7 之间的任何整数,这里的 0 或 7 代表星期日(或使用星期的英文简写如 sun、mon 等等)
    command — 要执行的命令(命令可以是 ls /proc >> /tmp/proc 之类的命令,也可以是执行你自行编写的脚本的命令。)
    在以上任何值中,星号(*)可以用来代表所有有效的值。譬如,月份值中的星号意味着在满足其它制约条件后每月都执行该命令。 
    整数间的短线(-)指定一个整数范围。譬如,1-4 意味着整数 1、2、3、4。 
    用逗号(,)隔开的一系列值指定一个列表。譬如,3, 4, 6, 8 标明这四个指定的整数。 
    正斜线(/)可以用来指定间隔频率。在范围后加上 /<integer> 意味着在范围内可以跳过 integer。譬如,0-59/2 可以用来在分钟字段定义每两分钟。间隔频率值还可以和星号一起使用。例如,*/3 的值可以用在月份字段中表示每三个月运行一次任务。 
17    *  *   *   *  //每小时的第17分钟执行一次 cron.hourly 目录下的命令
25    6  *   *   *  //每天的6点25执行一次 cron.daily 目录下的命令
47    6  *   *   7  //每个星期天的6点47执行一次 cron.weekly 目录下的命令
52    6  1   *   *  //每月的1号6点52执行一次 cron.monthly 目录下的命令

5、logrotate中最小轮转周期为小时,不能配置为分钟,要配置为分钟可以使用如下方式:(logrotate中size配置未生效没弄懂)

6、在/etc/crontab文件中添加一个每10分钟执行一次 cron.minutely 目录下的命令

*/10  *  *   *   *  root  test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.minutely )

7、创建目录cron.minutely

sudo mkdir /etc/cron.minutely

8、拷贝/etc/cron.daily/logrotate到/etc/cron.minutely/目录下

sudo cp /etc/cron.daily/logrotate /etc/cron.minutely/

9、编辑/etc/cron.minutely/logrotate文件添加命令

    手动执行日志备份命令

/usr/sbin/logrotate -vf /etc/logrotate.d/inetutils-syslogd

    使用‘-d’选项以预演方式运行logrotate
logrotate -d /etc/logrotate.d/log-file
    使用‘-f’选项来强制logrotate轮循日志文件,‘-v’参数提供了详细的输出。
logrotate -vf /etc/logrotate.d/log-file

    删除压缩的历史日志

rm /var/log/*.gz

10、编辑/etc/logrotate.d/inetutils-syslogd配置文件

/var/log/auth.log {
    rotate 4
    weekly
    missingok
    notifempty
    compress
    delaycompress
}

/var/log/daemon.log {
    rotate 7
    weekly
    missingok
    notifempty
    compress
    delaycompress
}

/var/log/debug {
    size 20M
    rotate 1
    hourly
    missingok
    notifempty
    compress
    delaycompress
    postrotate
       /usr/bin/killall -HUP rsyslogd
    endscript
}

/var/log/kern.log { 
	rotate 4 
	weekly 
	missingok
	notifempty 
	compress 
	delaycompress 
} 

/var/log/lpr.log { 
	rotate 4 
	weekly 
	missingok 
	notifempty 
	compress 
	delaycompress
}

/var/log/mail.err { 
	rotate 4 
	weekly 
	missingok 
	notifempty 
	compress 
	delaycompress
}

/var/log/mail.info { 
	rotate 4 
	weekly 
	missingok 
	notifempty 
	compress 
	delaycompress
}

/var/log/mail.log {
	rotate 4
	weekly 
	missingok 
	notifempty 
	compress
	delaycompress
}

/var/log/mail.warn { 
	rotate 4
	weekly 
	missingok 
	notifempty 
	compress 
	delaycompress
}

/var/log/messages { 
	size 20M 
	rotate 1 
	hourly 
	missingok
	notifempty
	compress 
	delaycompress
	postrotate 
		/usr/bin/killall -HUP rsyslogd 
	endscript
}

/var/log/ppp.log {
	rotate 4
	weekly 
	missingok
	notifempty
	compress
	delaycompress
}

/var/log/user.log {
	size 20M
	rotate 1
	hourly
	missingok
	notifempty
	compress
	delaycompress
	postrotate 
		/usr/bin/killall -HUP rsyslogd 
	endscript
} 

/var/log/uucp.log {
	rotate 4
	missingok
	notifempty
	weekly 
	compress
	delaycompress
}

/var/log/syslog {
	size 20M 
	rotate 1
	hourly 
	compress 
	delaycompress 
	postrotate 
		/etc/init.d/inetutils-syslogd reload >/dev/null 
	endscript
}

        日志样例

# touch /var/log/log-file
# vim /etc/logrotate.d/log-file
/var/log/log-file {
    size=50M		>> 日志文件大小可以增长到50MB
    dateext		>> 让旧日志文件以创建日期命名,这可以通过添加dateext常熟实现。
    monthly		>> monthly: 日志文件将按月轮循。其它可用值为‘daily’,‘weekly’、‘hourly’或者‘yearly’。
    rotate 5		>> rotate 5: 一次将存储5个归档日志。对于第六个归档,时间最久的归档将被删除。
    compress		>> compress: 在轮循任务完成后,已轮循的归档将使用gzip进行压缩。
    delaycompress	>> delaycompress: 总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的归档压缩,压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用。
    missingok		>> missingok: 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。
    notifempty		>> notifempty: 如果日志文件为空,轮循不会进行。
    create 644 root root    >> create 644 root root: 以指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志文件。
    postrotate		    >> postrotate/endscript: 在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。
    /usr/bin/killall -HUP rsyslogd
    endscript
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章