7日間のファイルだけをアーカイブし、先日のファイルは削除するシェルスクリプトを生成

7日間のファイルだけをアーカイブし、先日のファイルは削除するシェルスクリプトを生成

バックアップディレクトリに7日間作成されたすべてのファイルをアーカイブし、古いファイルを削除したいと思います。

-mtimeオプションを試してみて、3〜4日間スクリプトが実行されるのを見ました。しかし、5〜6日ほど過ぎると動作が停止しました。したがって、削除は発生せず、ディレクトリがいっぱいになりました。 -mtimeが機能していないようです。

また、これを自動化するためにcronを実行しています。

10 3 * * * su - cassandra -c /opt/cassandra/scripts/backup_cassandra >> /tmp/backup.log

これは私が使用するスクリプトです。

#!/bin/bash
set -x
export PATH=/opt/dse/bin/:/usr/lib/jvm/jre-1.8.0//bin:/sbin:/usr/sbin:/bin:/usr/bin:/root/bin
. /opt/cassandra/.env # source functions & password
# First we delete backup files older than 8 days.
find /data_cassandra/cassandra/backup/ -name "dc_east__*" -mtime 8 -exec rm {} \;
# cd to where the scrips are.
cd /opt/cassandra/scripts/
# And start the backups.
./backup.sh start -all # Kick off a full backup

この問題を解決するのに役立ちます。

ベストアンサー1

あなたはfind8日前のファイルを見ています。man find:

   A numeric argument n can be specified to tests (like -amin, -mtime, -gid, -inum, -links, -size, -uid and -used) as
   +n     for greater than n,
   -n     for less than n,
   n      for exactly n.

だから - 一度やってみてください-mtime +8

おすすめ記事