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
}


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