清理目錄指令碼
編寫一個目錄清理指令碼。要求,用 -d 選項 標示 需要清理的目錄, 用 -c 選項 標示 目錄下保留的檔案數量。 超出該數量的話,把較老的檔案打包 壓縮,備份到其他目錄下。
點選(此處)摺疊或開啟
-
#!/bin/bash
-
-
if [ $1 = \'-c\' ] && [[ $2 =~ \"^[1-9][0-9]*$\" ]] ; then # 判定是引數1 是否 是選項 -c 並且 引數2 是否是純數字 (用 正規表示式判斷)
-
f_cnt=$2 # 如果滿足上面的條件的話, 把 引數2 當做 保留的檔案數量
-
elif [ $1 = \'-d\' ] && [ -d $2 ]; then # 如果引數1 是 選項 -d 並且 引數2 是個目錄的話
-
f_dir=$2 # 如果滿足上面的條件的話, 把 引數2 當做 要清理的目錄
-
else
-
echo \"invaild option\"
-
fi
-
-
-
if [ $3 = \'-c\' ] && [[ $4 =~ \"^[1-9][0-9]*$\" ]] ; then # 這一部分 跟 上一段程式碼類似。 意思是 -c -d 選項 的前後次序 無所謂。
-
f_cnt=$4
-
elif [ $3 = \'-d\' ] && [ -d $4 ]; then
-
f_dir=$4
-
else
-
echo \"invaild option\"
-
fi
-
-
if [ $f_cnt ]; then
-
echo \"file count : \" $f_cnt
-
fi
-
-
-
if [ $f_dir ]; then
-
echo \"file direction : \" $f_dir
-
fi
-
-
fi
-
-
-
if [ $f_cnt ] && [ $f_dir ]; then
-
-
let t_cnt=\"`ls -l $f_dir/ | wc -l` - 1\"
-
echo $f_cnt
-
-
if [ $t_cnt -gt $f_cnt ]; then
-
-
echo \'old archive log\'
-
let d_cnt=\"$t_cnt - $f_cnt\" # 計算出 需要清理的檔案的個數
-
echo \"$d_cnt files need clear\"
-
-
ls -ltr $f_dir/ | awk \'{ print $9 }\' | head -`expr $d_cnt + 1` | tail -$d_cnt > f.list # 按修改時間排序,把需要清理的老檔案 存到 f.list 列表中
-
-
date_dir=`date +%y_%m_%d`
-
mkdir -p /u02/backup/arch/$date_dir
-
for i in `cat f.list`
-
do
-
echo $f_dir/$i
-
mv $f_dir/$i /u02/backup/arch/$date_dir/ # 把待清理的檔案 移動其他目錄下 (該目錄 帶有當前日期)
-
done
-
-
cd /u02/backup/arch/
-
tar -cvf $date_dir.tar $date_dir # 對清理的檔案 打包壓縮
-
gzip $date_dir.tar
-
rm -rf /u02/backup/arch/$date_dir
-
echo \"$d_cnt file cheaned\"
-
-
else
-
echo \'less euqal $f_cnt files\'
-
fi
-
- fi
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12238525/viewspace-1243407/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 清理bdump目錄檔案
- ssh自動輸入密碼指令碼 切換目錄指令碼密碼指令碼
- windows 批處理備份目錄指令碼Windows指令碼
- 自動建立samba目錄的shell指令碼Samba指令碼
- 保留最新N份備份目錄指令碼指令碼
- oracle 資料庫徹底清除目錄指令碼Oracle資料庫指令碼
- 恢復目錄資料庫備份指令碼資料庫指令碼
- 批次刪除指定目錄下的sh指令碼指令碼
- windows系統垃圾清理指令碼Windows指令碼
- 寶塔計劃任務Shell指令碼定時刪除某各目錄下所有檔案【記錄】清理快取好方法指令碼快取
- linux /tmp 目錄檔案清理規則Linux
- 【NFS】Linux配置NFS共享常用SQL指令碼目錄NFSLinuxSQL指令碼
- mysql簡單的碎片清理指令碼MySql指令碼
- Oracle 11g Rac清理指令碼Oracle指令碼
- IOS-自動打包Shell指令碼(支援目錄帶空格)iOS指令碼
- shell指令碼-透過lftp同步遠端目錄到本地指令碼FTP
- 監控某個目錄使用情況的shell指令碼指令碼
- Oracle資料庫管理指令碼介紹 (RDBMS目錄下)Oracle資料庫指令碼
- 遞迴處理複製變數目錄按原路徑複製到新目錄的指令碼遞迴變數指令碼
- shell指令碼:建立函式並指定目錄進行下載指令碼函式
- mysql 修改data目錄後 無法使用指令碼啟動薦MySql指令碼
- CentOS系統下/tmp目錄臨時檔案清理CentOS
- 清理臨時表規範以及指令碼指令碼
- 【Ubuntu】Ubuntu常用的更新、清理命令指令碼Ubuntu指令碼
- 一個清理指令碼的改進思路指令碼
- Linux管理指令碼之清理空間Linux指令碼
- Shell指令碼-壓縮指定目錄下前一天檔案指令碼
- 監控目錄備份是否成功通用指令碼backup_monitor.sh指令碼
- Jmeter —— 錄製指令碼JMeter指令碼
- elasticsearch 索引清理指令碼及常用命令Elasticsearch索引指令碼
- shell 備份檔案指令碼+自動清理指令碼
- 定時清理監聽日誌的指令碼 。指令碼
- 程式碼目錄結構記錄
- Pythonpyclamad病毒掃描與目錄病毒掃描指令碼(轉載)Python指令碼
- 批次顯示指定目錄下的檔案數量的sh指令碼指令碼
- 鴻蒙原始碼目錄整理鴻蒙原始碼
- 程式碼審計————目錄
- 【Zookeeper】原始碼分析目錄原始碼