編寫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 每天半夜三點執行!!