Linux Shell script 目錄名稱為日期,自動刪除指定日期點前的目錄 Log

Linux

這個 Shell 腳本,用於自動刪除 30 天前的資料夾 Log。首先,腳本列出指定目錄中的資料夾,將其轉換為數組,然後進行日期比較,刪除過期的資料夾。最後,設置可執行權限並安排每週三自動運行此腳本。

程式

登入 root 進行編輯 Shell script:

vim /root/logDelete.sh
#!/bin/bash

folders=$(ls /u1/bsframework/gas/appdata/log-b2b/fastcgidispatch)

# 將換行資料轉 array
mapfile -t dates <<< "$folders"
# 當前日期減 30 天
today30=$(date -d "-30 days" +%s)
for mydate in "${dates[@]}";
do
    # 轉成時間戳才能比較大小
    mydateTmp=$(date -d "$mydate" +%s)

    # 日期小於當天 - 30 天
    if [ "$today30" -gt "$mydateTmp"  ]; then
        # 刪除資料夾
        rm -rf "/u1/bsframework/gas/appdata/log-b2b/fastcgidispatch/${mydate}"
        #echo "/u1/bsframework/gas/appdata/log-b2b/fastcgidispatch/${mydate}"
    fi
done

設定

設定可執行權限:

chmod o+x /root/logDelete.sh

設定 crontab 自動執行 Shell script:

vim /etc/crontab

設定每週三 08:00 自動執行 Shell script:

  *  8  *  *  3 root      /root/logDelete.sh

發表留言