shell 備份日誌 每三天備份一次

2021-10-05 23:23:02 字數 1217 閱讀 6924

crontab實現不了每隔多少天備份 需要每天定時跑指令碼,自己判斷是否執行備份

#!/bin/bash

day=$(date +%d); #當前天數

scripttime=$(date "+%y-%m-%d %h:%m:%s"); #指令碼執行時間記錄

start=$(date +%s) #開始執行的時間戳

#判斷當前天數是哪天 如果符合備份天數 就執行備份

if [[ $day = 03 ]] || [[ $day = 06 ]] || [[ $day = 09 ]] || [[ $day = 12 ]] || [[ $day = 15 ]] || [[ $day = 18 ]] || [[ $day = 21 ]] || [[ $day = 24 ]] || [[ $day = 27 ]] || [[ $day = 30 ]];

then

#兩種刪除方式

# 1.簡單粗暴直接刪除帶_檔案,不利於多次備份資料保留

cd /data/logs/nginx/xjj/ && rm -rf access_* && rm -rf error_* #刪除之前備份檔案

find /data/logs/nginx/xjj/  -mmin +1 -name  access_* -exec  rm -rf {} \;

date=$(date +%y-%m-%d) #備份時間檔名

cp /data/logs/nginx/xjj/access.log /data/logs/nginx/xjj/access_$date.log #執行備份 變數後面拼接方式 /data/logs/nginx/xjj/access_$date".log"

true > /data/logs/nginx/xjj/access.log #備份完清空日誌檔案內容

cp /data/logs/nginx/xjj/error.log /data/logs/nginx/xjj/error_$date.log

true > /data/logs/nginx/xjj/error.log

end=$(date +%s) #結束執行的時間戳

difference=$(( end - start ))

echo $scripttime' exectime:'$difference>>/data/logs/nginx/xjj/run.log #輸出指令碼備份執行時間 和 指令碼執行時間日誌 >> 是追加

fi

shell之備份日誌

先介紹命令crontab 常用選項 u 表示指定某個使用者,不加 u選項則為當前使用者 e 表示指定任務計畫 l 表示列出任務計畫 r 表示刪除任務計畫 root localhost crontab e crontab no changes made to crontab 輸入如下內容 02 ech...

shell指令碼 自動備份應用日誌

root deploy scripts cat logs bak v2.sh usr bin env bash description 查詢兩天前修改的應用日誌,打包備份之後後刪除 date 2019 06 15 載入系統函式 etc init.d functions 載入環境變數 export p...

shell程式設計 自動備份tomcat日誌詳解

每天凌晨一點,將tomcat中的catalina.out日誌壓縮並備份到目標資料夾中,以當天日期為格式,然後清空日誌。刪除超過15天的備份日誌,並將logs中的其他日誌檔案每7天清空一次 如 localhost.2018 09 21.log等 用date函式擷取當前時間日期 將logs中的catal...