前言
因為公司的檔案伺服器上存有所需的專案war包,一段時間以後,大量不用的工程檔案占用磁碟空間,需要定期刪除無用的檔案。這些檔案歸屬不同的專案目錄下,建立的時間各不相同。某些陳舊專案已經數年沒有更新。因此,不能只定期刪除某個目錄下的檔案,更不能按時間刪除多少天以前的檔案。下面話不多說了,來一起看看詳細的實現過程吧。
推進完工
#!/bin/bash
#不同的專案有不同的路徑
#專案的主幹目錄是相同的
release="/opt/devapps/nexus/sonatype-work/nexus/storage/release/"
for path in $;
dofcarj #拼接檔案路徑
releasepath=$$
cd $releasepath
#判斷是否存在該目錄
if [ $? -eq 0 ];
then
echo $releasepath
echo "contains file:"
#輸出所有的內容
echo *
num=`ls -l | grep '^d' | wc -l`;
#判斷資料夾的數量是否超過5個(我只想保留最新的5個資料夾)
www.cppcns.com if [$num -gt 5 ];
then
#計算超過5個多少
num=`expr $num - 5`
clean=`ls -tr | head -$num | xargs`
echo "will delete file:"
echo $
#-n1 每次處理1個檔案
ls -tr | head -$num | xargs -i -n1 rm -rf {}
fifidone
完善實際部署程式設計客棧時,覺得直接刪除檔案不妥,應該是先備份到某一目錄,再次執行指令碼的時候,刪除上次備份的檔案。
release="/opt/devapps/nexus程式設計客棧/sonatype-work/nexus/storage/release/"
#清空備份檔案
backup="/tmp/storage/"
cd $backup
if [ $? -eq 0 ];
then
rm -rf *
fi#清除超過5個檔案之外最老的那些檔案
for path in $;
do releasepath=$$
cd $releasepath
if [ $? -eq 0 ];
then
echo $releasepath
echo "contains file:"
echo *
num=`ls -l | grep '^d' | wc -l`;
if [$num -gt 5 ];
then
num=`expr $num - 5`
clean=`ls -tr | head -$num | xargs`
echo "will delete file:"
echo $
#把檔案移動到備份檔案夾更安全
ls -tr | head -$num | xargs -i -n1 mv {} $backup
fifidone
自動化處理
將上述指令碼儲存為removecode.sh,然後新增crontab。
crontab -e
新增如下一行,每月執行一次:
0 0 1 * * /opt/project/removecode.sh > /opt/project/remove.log 2>&1 &
總結本文標題: linux實現自動刪除最舊的幾個檔案詳解
本文位址:
linux 刪除最舊的檔案
由於使用paas,利用jenkins工具生成的映象檔案很多。support同事每次都會要求我們刪除比較舊的映象,只保留最新的5個。上網找了一下,終於找到乙個大神整理的 ref 參考後寫了乙個自己的 bin bash 不同專案的映象檔案的名稱不同 filenames 0 20190725 filena...
Linux「自動備份 刪除」MYSQL
linux 自動備份 mysql 1 建立備份檔案夾 cd data0 mysql 3306 makedir backup 2 編寫執行指令碼 vi autobackup 寫入以下內容 filename date y m d mysql bin dir mysqldump d dataname u ...
Linux 自動刪除N天前的檔案
linux是乙個很能自動產生檔案的系統,日誌 郵件 備份等。所以自從刪除就顯的很方便。語句寫法 find 對應目錄 mtime 天數 name 檔名 exec rm rf 例1 find u01 backups mtime 10 name exec rm rf 將 u01 backups目錄下所有1...