find コマンドを使用した古いバックアップの削除

find コマンドを使用した古いバックアップの削除

私はこのコマンドを使用してサーバーの古いバックアップを削除しました。

find /backups/etcbak/ -mtime +7 -exec rm {} \; && find /backups/varlogsbak/ -mtime +2 -exec rm {} \; && find /backups/varmysqlbak/ -mtime +7 -exec rm {} \; 

上記のコマンドは、ターゲットディレクトリの物理ファイルを削除するのに役立ちます。

私の質問は次のとおりです

上記のコマンドを使用してサブディレクトリを削除するにはどうすればよいですか?

(現在の日付に基づいてターゲットディレクトリにサブディレクトリを作成するmysqlバックアップスクリプトを追加しました)。

上記のコマンドを次のように適用してみました。

find /backups/etcbak/ -mtime +7 -exec rm -rf {} \; && find /backups/varlogsbak/ -mtime +2 -exec rm -rf {} \; && find /backups/varmysqlbak/ -mtime +7 -exec rm -rf {} \; && find /backups/varmongobak/ -mtime +7 -exec rm -rf {} \;

ただし、古いサブディレクトリはまったく削除されません。

目的は、ターゲットディレクトリに存在できるファイルとディレクトリを削除することです。

たとえば、

/backups/etcbak/filename (where "filename" is deleted after 7 days)

そして

/backups/etcbak/dirname ("dirname"というサブディレクトリとその内容も7日後に削除されます。)

これをハックする方法を知っている人はいますか?ありがとう

ベストアンサー1

私のアプローチは、基準に従ってファイルを削除してから空のディレクトリを削除することです。

find /backups/etcbak /backups/varmysqlbak /backups/varmongobak -depth -type f -mtime +7 -delete
find /backups/varlogsbak -depth -type f -mtime +2 -delete

find /backups/etcbak /backups/varlogsbak /backups/varmysqlbak /backups/varmongobak -mindepth 1 -depth type d -delete 2>/dev/null

-depth暗黙的に必ずしも必要ではありませんが-delete、これを確認して活性化されていることを思い出させることが有用だと思います。

おすすめ記事