Linux Script:自動備份或刪除超過特定時間之過期檔案

在使用 linux 時,有時候我們會想要檢查特定目錄下的所有或某些檔案,
看看是不是這些檔案已經超過時效,若超過則刪除或移動到其他備份媒體,
這通常會用在系統 log 的備份等,要達成這個目的,我們該怎麼做呢?

圖片來源:http://www.icosky.com/icon/find-19-icon/

首先我們要利用 linux 中非常強大的指令 find,
利用 find 找到符合特定規則的檔案後再使用指令參數-exec,
這個參數可以將 find 到的結果接過來執行,如果用得好,應該是項非常好用的工具。

說了這麼多,先來個簡單的例子,例如要把 tmp 資料夾底下的 .txt 檔備份到另一個地方:
# find /tmp/ -type f -name "*.txt" -exec cp {} ~/txt \;

首先就 find 相關的參數作說明:
find /tmp/ -type f -name "*.txt" 
/tmp/ 要尋找的目標資料夾
-type f 尋找類型為檔案
-name "*.txt" 尋找檔名為 .txt 結尾
若有使用萬用字元星號*的話建議加上引號,如 "*.txt" 或 '*.txt',
否則在 find 時似乎會有不明錯誤發生,有些該找到的檔案會找不到!

接著說明 -exec 後方的部分
-exec cp {} ~/txt \;
cp  指令
{}  找到的結果檔案
~/txt  cp 的參數
\;  指令的結束符號

下面這行指令就是找到 /tmp/ 資料夾底下超過一天的 .log 檔,然後把他們都刪掉,
其中 -mtime +1 就是要找超過一天沒有被修改的檔案
# find /tmp/ -type f -name "*.log" -mtime +1 -exec rm -rf {} \;

關鍵字:Linux, Script, bash, shell, 刪除, 超過, 特定時間, 過期, 檔案, 定時, 老舊, 目錄, 資料夾, 備份, 清空, 自動,
參考資料:

這個網誌中的熱門文章

2018最新博客來100,50,25折價券序號e-coupon分享

證件遺失補辦身分證/健保卡/駕照/行照/信用卡總整理

2018最新iPhone XS, XS Max, XR信用卡刷卡回饋/分期攻略!(持續更新)

【符碼刷卡報】超商消費繳費懶人包+優惠總整理

星展炫晶御璽卡國內1.2%國外2.5%現金回饋,新戶享最高8.88%多賺1000!

全家FamiPay綁台新卡綁卡送購物金,最高滿200送50!(2018/10/01~11/30)

台新@gogo一般1.5%網購3.5%+行動支付/保費密技!

TOEIC多益成績分數查詢、計算標準與換算對照表

國泰KOKO combo icash網購/超商/icash/繳費5%!

銀行代碼查詢:3碼銀行代碼列表、7碼分行代碼查詢