linux實現自動刪除最舊的幾個檔案詳解

2022-09-26 15:06:23 字數 2251 閱讀 1203

前言

因為公司的檔案伺服器上存有所需的專案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...