gtag

2010年8月24日 星期二

利用SHELL保留七天內及上個月最後一天的檔案,其餘刪除

做個DBA,固定清除資料庫Export File是一定要的。測試環境備份保留的期間大約都在很短的週期,以下範例保留每日的Export File至少七天,上個月最後一天的Export File也必須保留Export File的路徑為/backup
Export File的格式為 ${ORACLE_SID}_YYYYMMDD_exp.dmp
Platform:HP-UX 11i


 
#=================================================
#File name:clean_dmp.sh
#=================================================
#!/bin/ksh
tYEAR=`date +%Y`
tMONTH=`date +%m`
#找出上個月份的年月, 已考慮上個月有跨年的情形
if [ ${tMONTH} = "01" ]; then
     LASTM=12
     LASTY=`expr ${tYEAR} - 1`
else
     LASTM=`expr ${tMONTH} - 1`
     LASTY=${tYEAR}
fi
#找出上個月份的最後一天
#awk 找出含有012389數字的資料行,並且只列出最後一欄的數字
#tail 取最後一行
LASTD=`cal ${LASTM} ${LASTY} |awk '/[012389]/{printf $NF"\n"}'|tail -1`

#找出過期7days的檔案,跳過上個月最後一天的檔案,其餘刪除
#+6表示距今超過6X24小時,也就是>6X24小時的修改時間。
#grep -v 表示符合條件的不印出
FILES=`find /backup -mtime +6 -name "*"|grep -v ${LASTY}${LASTM}${LASTD}`
for file_name in ${FILES}
do
   rm -f ${file_name}
done

沒有留言:

張貼留言