web-dev-qa-db-ja.com

7日より古いファイルを自動削除する

私はLinuxの完全な初心者ですが、それを理解し始めています。セキュリティビデオファイルをバックアップするためにFTPサーバーを実行しているUbuntu Server 16.04があります。ファイルは、/home/securityfolder1/home/securityfolder2/home/securityfolder3などのフォルダーに保存されます。

securityfolderNは異なるユーザーであることに注意してください。

ハードドライブを常にいっぱいにしたくないので、これらのフォルダーの7日以上前のファイルを毎日削除します。

16

最初に、このコマンドは、名前がsecurityuserで始まる/homeのサブディレクトリで7日より古いすべてのファイルを見つけて削除します。

find /home/securityuser* -mtime +6 -type f -delete

-mtime +6は24時間をカウントするため、+7ではなく-mtimeが必要です。 -atimeman findセクションで説明されているように(-mtimeは同じように機能します):

   -atime n
          File  was  last  accessed n*24 hours ago.  When find figures out
          how many 24-hour periods ago the file  was  last  accessed,  any
          fractional part is ignored, so to match -atime +1, a file has to
          have been accessed at least two days ago.

したがって、7日以上前に変更されたファイルを見つけるには、6日以上前に変更されたファイルを見つける必要があります。したがって、-mtime +6です。

次のステップは、このコマンドを1日に1回実行することです。各securityuserNは異なるユーザーであるため(セットアップを再考する必要がある場合があり、すべてがより複雑になります)、これをrootとして実行する必要があります。したがって、/etc/crontabを編集します。

Sudo nano /etc/crontab

そして、次の行を追加します。

@daily root find /home/securityuser* -mtime +6 -type f -delete

これにより、findコマンドが1日に1回実行され、ファイルが削除されます。

24
terdon

私の知識に従って:

次のようなfindコマンドを試してください。

find ./dirc/* -mtime +6 -type f -delete

./dirc/* : is your directory (Path)
-mtime +6 : modified more than 6 days ago (therefore, at least 7 days ago)
-type f : only files
-delete : no surprise. Remove it to test before like rm
4
km8295