[FREEBSD] 使用 logrotate 來管理及備份日誌檔

URL Link //n.sfs.tw/11332

2017-06-19 01:53:56 By 張○○

Unix 系統中的日誌檔存放在 /var/log/  中,可供我們查錯及觀察。日誌檔最大的問題是會不斷的長大。在 FreeBSD 中,有些日誌檔是有自動歸檔整理,如

‧console.log
‧cron
‧maillog
‧messages
‧wtmp

這些檔基本上很難爆,因為他們會定時的壓縮。

但是其他的日誌檔如果不定時去清空,也許就會長大到非常的可怕的地步,像我曾看過的網頁記錄,才三個月就達3G。

手動清空

如果要將記錄內容清空,移除再建立是一個方法,但不是很好的方法,可以採用下面這個指令

例如:

# cat /dev/null > /var/log/httpd-error.log

就可以輕鬆的將記錄檔清空

使用 logrotate來定時壓縮及分檔備份

所以我們可以使用 /usr/local/sysutils/logrotate 來定時壓縮及分檔備份,也可以避免檔案長太大。

一、安裝

系統 7.1-RC1 FreeBSD 7.1-RC1

# cd /usr/ports/sysutils/logrotate
# make install

二、設定

# cd /usr/local/etc/
# cp logrotate.conf.sample logrotate.conf

# vi logrotate.conf

# 廣域變數
# 週期 daily weekly monthly

weekly

# 保存 13x 週期的logs,13 週約為三個月
rotate 13

# 採用 gzip 壓縮
compress

# RPM packages drop log rotation information into this directory
# include /usr/local/etc/logrotate.d

# 要備份的檔案
/var/log/http-access/www.domain.com.log {
    copytruncate
    create 640 root wheel
    size=100M
}

三、測試

# logrotate -f /usr/local/etc/logrotate.conf

<正確的話沒任何的回應>

四、加入排程

# crontab -e

加入一行

10 0 * * 0 /usr/local/sbin/logrotate /usr/local/etc/logrotate.conf

參考連結

[1] http://redhat.ecenter.idv.tw/bbs/showthread.php?threadid=31899&highlight=logrotate


原文 2010-04-01 16:45:06 2009-10-30 10:52:54