linux中使用corntab和shell指令碼自動備份nginx日誌,按天備份
阿新 • • 發佈:2019-01-05
編寫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 每天半夜三點執行!!