Linuxデータベースから古いバックアップファイルを削除するように依頼されました(最新の3つを除くすべて)。複数の種類のバックアップがあるため、バックアップの種類ごとに少なくとも3つのバックアップファイルを残す必要があります。
私のスクリプトは、類似した(一致した)名前のすべてのファイルをグループ化し、最後の3つのファイルを除くすべてを削除する必要があります(OSがそれらのファイルを並べ替えると想定しているため、最新のバックアップも最後のバックアップになります)
ファイルは、任意の数字と任意の名前の形式project_name.000000-000000.svndmp.bz2
になっています。最初の6桁は名前の一部であり、最後の6桁はバックアップのバージョンを示します。0
project_name
これまでのところ、私のコードは次のようになっています。
for i in *.svndmp.bz2 # only check backup files
do
nOfOccurences = # Need to find out, how many files have the same name
currentFile = 0
for f in awk -F"[.-]" '{print $1,$2}' $i # This doesn't work
do
if [nOfOccurences - $currentFile -gt 3]
then
break
else
rm $f
currentFile++
fi
done
done
私のスクリプトは、次のバックアップに進む前に、古いバージョンのバックアップを4回削除しようとする可能性があることを認識しています。私はパフォーマンスや効率を求めていません(バックアップはそれほど多くありません)。
私のコードは4時間のネット検索の結果であり、優れたGoogleクエリが不足しています(そして上司はなぜ私がまだ通常のタスクに戻っていないのか疑問に思い始めています)
誰かが私の問題をどのように解決できるかについて、私に意見を与えることができますか?
- 探す
nOfOccurences
- パターンに一致するファイルをawkで検索する
"$1.$2-*"