Я использую рабочий стол Ubuntu 14. Я использую эту машину для резервного копирования других машин и как FTP-сервера для камер видеонаблюдения.
Я должен создать задание крона, которое автоматически удаляет файлы, которые являются более старыми, чем 30 дней. Я сделал некоторый поиск, и я думаю, что нашел правильную команду, но я хочу удостовериться, что я не пропускаю что-то прежде, чем выполнить его.
* 4 * * * find /home/USER/DIRECTORY1/DIRECTORY2/ -mindepth 1 -type f -mtime 29 -delete
Я должен поместить "sudo" в перед командой находки?
Я должен поместить "+" перед количеством дней "29"?
Во-первых, поместите Ваш find ...
команда в bash
сценарий и вызов что сценарий от Вашего crontab
. Если у Вас есть зашифрованный корневой каталог (cat /home/.ecryptfs/$USER/.ecryptfs/Private.mnt
), необходимо будет сохранить сценарий вне Вашего $HOME
дерево каталогов. Хранение команды в crontab
делает конфигурирование, вход и отладку тяжелее, и crontab
, синтаксический анализатор команды не так умен как bash
.
find
с [1 110], и заставляют это работать, прежде, чем рассматривать -delete
.
В-третьих, find
тест" -mtime 29
" говорит find
, "Находят файл mtime
, и возврат True
, если это равно [1 117]. Необходимо использовать -mtime +29
, который find
видит как" more than 29
", который является тем, что Вы хотите. От [1 121]:
Numeric arguments can be specified as
+n for greater than n,
-n for less than n,
n for exactly n.
Четвертый, быть уверенными у Вас есть Доступ для записи к каталогам в [1 122].
Пятый, Вы имеете в виду /home/USER/DIRECTORY1/DIRECTORY2/
или /home/$USER/DIRECTORY1/DIRECTORY2/
? Если $USER
для идентификатора пользователя пользователя, у Вас есть проблема: cron
не определяет $USER
во времени выполнения enviroinment. Это действительно определяет $HOME
, таким образом, Вы могли использовать $HOME/DIRECTORY1/DIRECTORY2
.
Я использую для удаления резервных копий, более старых, чем 10 дней, и это выглядит примерно так:
50 17 * * * find /path/to/files/filename* -type f -mtime +10 | xargs rm
я использую filename*
, потому что они для резервных копий, таким образом, они были бы похожи на это:
filename04-04-2018.tar.gz
filename04-05-2018.tar.gz
filename04-06-2018.tar.gz