[日誌分割回滾] 使用linux自帶的logrotate對nginx日誌進行分割

logrotate日誌分割配置:
# cat /etc/logrotate.d/nginx
/data/nginx_logs/*.access_log         #nginx日誌所在目錄
{
nocompress                                     #不對日誌文件進行轉儲壓縮
daily                                                 #指定轉儲週期爲每天
copytruncate                                   #用於還在打開中的日誌文件,把當前日誌備份並截斷
create                                              #建立新的日誌文件
ifempty                                            #即使是空文件也轉儲
olddir /data/nginx_logs/days            #轉儲後的日誌文件放入指定的目錄,必須和當前日誌文件在同一個文件系統
rotate 0                                           #指定日誌文件刪除之前轉儲的次數,0 指沒有備份,5 指保留5個備份
}


#####################################################################
日誌分割腳本:
#!/bin/bash
#創建轉儲日誌壓縮存放目錄
mkdir -p /data/nginx_logs/days
#手工對nginx日誌進行切割轉換
/usr/sbin/logrotate -vf /etc/logrotate.d/nginx
#當前時間
time=$(date -d "yesterday" +"%Y-%m-%d")
#進入轉儲日誌存放目錄
cd /data/nginx_logs/days
#對目錄中的轉儲日誌文件的文件名進行統一轉換
for i in $(ls ./ | grep "^\(.*\)\.[[:digit:]]$")
do
mv ${i} ./$(echo ${i}|sed -n 's/^\(.*\)\.\([[:digit:]]\)$/\1/p')-$(echo $time)
done
#對轉儲的日誌文件進行壓縮存放,並刪除原有轉儲的日誌文件,只保存壓縮後的日誌文件。以節約存儲空間
for i in $(ls ./ | grep "^\(.*\)\-\([[:digit:]-]\+\)$")
do
tar jcvf ${i}.bz2 ./${i}
rm -rf ./${i}
done
#只保留最近7天的壓縮轉儲日誌文件
find /data/nginx_logs/days/* -name "*.bz2" -mtime 7 -type f -exec rm -rf {} \;

######################################################
#給腳本附上執行權限,放到crontab裏執行
#logrotate
0 0 * * * /usr/local/sbin/logrotate-nginx.sh > /dev/null 2>&1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章