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を使用できます 。