1. 程式人生 > >linux中使用corntab和shell指令碼自動備份nginx日誌,按天備份

linux中使用corntab和shell指令碼自動備份nginx日誌,按天備份

編寫shell指令碼,實現nginx日誌每天自動備份到指定資料夾!

需要的命令mv , corntab -e(定時任務),shell指令碼

這裡先說一下corntab:

 https://www.cnblogs.com/longjshz/p/5779215.html  這裡有一篇詳細介紹corn的,

這裡只簡單說一下用法:

corntab -e 就可以編寫我們需要的定時任務,編輯之後儲存即可,需要按指定格式:

比如: 0 6 * * * echo "Good morning." >> /tmp/test.txt   就會每天6點執行

格式按  分 時 日 月 年 命令 

crontab –e : 修改 crontab 檔案. 如果檔案不存在會自動建立。 
crontab –l : 顯示 crontab 檔案。 
crontab -r : 刪除 crontab 檔案。
crontab -ir : 刪除 crontab 檔案前提醒使用者。

 

指令碼如下:

#!/bin/sh
# 備份nginx日誌到指定目錄,以年月日格式命名


# ngingx目錄和需要備份的日誌名稱
NG_DIR=/usr/local/nginx
NG_LOG_NAME=host.access.log

# ng日誌目錄和備份存放目錄
NG_LOG_DIR=$NG_DIR/logs
NG_BAK_PATH=$NG_DIR/baklogs

# 需要備份檔名與備份之後的檔名
NG_LOG_FILE=$NG_LOG_DIR/$NG_LOG_NAME
# 此處date命令需要使用反斜槓``
BAK_TIME=`date -d yesterday +%Y%m%d`
BAK_LOG_FILE=$NG_BAK_PATH/$BAK_TIME-$NG_LOG_NAME

echo $BAK_LOG_FILE

# 備份,停止後再重啟
$NG_DIR/sbin/nginx -s stop

mv $NG_LOG_FILE $BAK_LOG_FILE

$NG_DIR/sbin/nginx

  ,然後編寫定時任務即可:

0 3 * * * sh /usr/local/nginx/sbin/baklog.sh 每天半夜三點執行!!