2011年4月22日 星期五

[ubuntu] 自動刪除幾天前備份檔案shell 程式

因為有個資料夾內, 有備份sql 的資料, 但是又擔心, 若是一直砍, 哪天資料備份故障, 這樣檔案還是會被砍光.
因此加了個判斷.
該資料夾內檔案若是高於5筆 , 才進行刪除動作.
程式如下:
------------------------------------------------------------------------
#!/bin/sh
file_num=$(find /home/xxx/secret/*.bak |wc -l);
if [ $file_num -gt 5 ]; then
find /home/xxx/secret/*.bak -type f -mtime +6 |xargs --no-run-if-empty rm -rf
fi
------------------------------------------------------------------------
存成 rm_sqlback.sh  (權限要改成可以執行的)
加入到 crontab 中

0 1 * * * /bin/sh /root/rm_sqlback.sh


------------------------------------------------------------------------

補充 xargs :

find -iname "*.bak" | xargs -i cp {} ~/bakdir


使用 -i 和 {}  就可以把前面所得到的輸出列表,不是一整串,而是一個一個地傳給後面的指令
上述的指令的效果就像是這樣…

cp ./VERSION.bak ~/bakdir
cp ./inc/main.h.bak ~/bakdir
cp  ./src/fork.c.bak ~/bakdir
cp  ./src/common_lib/dl_string.c.bak ~/bakdir
cp  ./src/common_lib/dl_math.c.bak ~/bakdir

參考:
鳥哥的Linux 私房菜-- 學習Shell Scripts
ddy 狡兔三窟之一: xargs 應用介紹(例)

【下列文章您可能也有興趣】

沒有留言: