Ubuntu14デスクトップを使用しています。このマシンを他のマシンのバックアップや防犯カメラのFTPサーバーとして使用しています。
30日以上経過したファイルを自動的に削除するcronジョブを作成する必要があります。検索を行ったところ、正しいコマンドが見つかったと思いますが、実行する前に何かが不足していないことを確認したいと思います。
* 4 * * * find /home/USER/DIRECTORY1/DIRECTORY2/ -mindepth 1 -type f -mtime 29 -delete
findコマンドの前に「sudo」を付ける必要がありますか?
日数「29」の前に「+」を付ける必要がありますか?
承認された回答:
まず、find ...
を入力します bash
のコマンド スクリプトを作成し、crontab
からそのスクリプトを呼び出します。 。暗号化されたホームディレクトリがある場合(cat /home/.ecryptfs/$USER/.ecryptfs/Private.mnt
)スクリプトを$HOME
の外に保存する必要があります ディレクトリツリー。コマンドをcrontab
に保持する 構成、ロギング、およびデバッグが困難になり、crontab
コマンドパーサーはbash
ほど賢くありません ’s。
次に、常に、常に、常にfind
をテストします -print
を使用 、-delete
を検討する前に、それを機能させます 。
第三に、find
テスト「-mtime 29
」はfind
に指示しています 「ファイルのmtime
を見つけてください 、およびTrue
を返します 29
と等しい場合 。 -mtime +29
を使用する必要があります 、find
「more than 29
」と表示されます 「、それはあなたが望むものです。 man find
から :
Numeric arguments can be specified as
+n for greater than n,
-n for less than n,
n for exactly n.
第4に、/home/USER/DIRECTORY1/DIRECTORY2/
のディレクトリへの書き込みアクセス権があることを確認します 。
第五に、/home/USER/DIRECTORY1/DIRECTORY2/
のことですか または/home/$USER/DIRECTORY1/DIRECTORY2/
? $USER
の場合 ユーザーのユーザーID用です。問題があります:cron
$USER
を定義していません 実行時環境で。 $HOME
を定義します 、したがって、$HOME/DIRECTORY1/DIRECTORY2
を使用できます 。