2012年4月9日

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, 刪除, 超過, 特定時間, 過期, 檔案, 定時, 老舊, 目錄, 資料夾, 備份, 清空, 自動,
參考資料:


更多精選推薦文章