バックアップを日付別にグループ化し、X日前のファイルとフォルダを削除するスクリプト

バックアップを日付別にグループ化し、X日前のファイルとフォルダを削除するスクリプト

30日間のバックアップ= 30のフォルダがあり、バックアップは毎時間実行されるため、各フォルダには24のファイルがあります。ファイルの最新の日付を5つ保持するスクリプトを実行する必要があります。

たとえば、今日が6月30日でスクリプトを実行すると、6月25日、6月26日、6月27日、7月28日、7月29日のフォルダにいくつかのファイルがある場合でも、5つのフォルダがあります。をすべて保持し、そのフォルダのみを削除します。 6月24日以上です。

バックアップ操作によって空のzipファイルが生成される場合は、10kb未満のデータを持つフォルダをスキップすることもお勧めします。

これまでにテストした内容は次のとおりです。

find /files/ -ctime +5 -printf "%TY-%Tm-%Td\n" | sort -u -r | tail -n+5 | xargs rm -R

-ctime +5 = which files we want to expire created more than 5 days ago,
-printf "%TY-%Tm-%Td\n" outputs the dates of the folders so we can sort them
sort -u -r = sorting the output so we can do tail
tail -n +5 = tail skips the 5 newest filegroups: grouped by date, not just 5 newest files

この論理は正しいですか?また、「古いバックアップ」の結果リストで「rm -R」を実行するには、xargの種類が必要です。

よろしくお願いします!

関連情報