現在、mysql のバックアップを正常に実行しています。一部のサイトでは、このコマンドを使用して 7 日以上前のファイルを削除しています
find /path/to/file -mtime +7 -exec rm -f {} \;
私は偏執的で、まだアーカイブされた情報が欲しいので、31日より古いファイルを削除しますが、前の月から少なくとも1つのファイルを維持し、おそらく1日に作成されたファイルを保存します今月の。
何か案は?
grep はほぼ正しいです。スペースが 1 つだけ多すぎます。これは機能します(少なくとも私にとっては、Debianを使用しています):
rm `find /path/to/file -type f -mtime +7 -exec ls -l {} + | grep -v ' [A-S][a-z][a-z] 1 ' | sed -e 's:.* /path/to/file:/path/to/file:g'`
次のコマンドでファイルを作成できます。
SRC_DIR=/home/USB-Drive
DATE=$(/bin/date "+%4Y%2m%2d%2H%2M")
TIME_STAMP=$(/bin/date --date 'now' +%s)
TIME_CAL=$[$TIME_STAMP-2592000+25200] #last day, 25200 is my GMT+7hour
TIME_LAST=$(/bin/date --date "1970-01-01 $TIME_CAL sec" "+%4Y%2m%2d%2H%2M")
/bin/touch -t ${TIME_LAST} /tmp/lastmonth
/usr/bin/find -P -H ${SRC_DIR} ! -newer /tmp/lastmonth -type d -exec rm -r {} \;
削除したいものに基づいて最後のコマンドを変更できます。この場合、SRC_DIR のサブフォルダーを削除します。「時間属性」で 1 か月以上前。
xargs を使用して、次のような内容を含むスクリプトを作成することもできます。
/path/to/files を検索 -mtime +7| xargs -i rm {};
次に、スクリプトをcronジョブに追加します
ちょっと醜いですが、の出力を解析してみることができますls -l
rm `find /path/to/file -type f -mtime +7 -exec ls -l {} + | grep -v ' [A-S][a-z][a-z] 1 ' | sed -e 's:.* /path/to/file:/path/to/file:g'`
または、スクリプトを作成してリストを取得rm
し、一度に 1 つずつ実行します。