Задание крона для удаления файлов, более старых, чем 3 дня

Я, оказалось, время от времени натыкался на эту проблему. Обычно, я просто максимизирую (маленькое) использование окна плеера mod + M в то время как видео играет. Хотя это - только обходное решение и не устраняет проблему (меня достаточно никогда не раздражало рыть глубже).

21
13.06.2014, 02:38
2 ответа

Это достаточно просто (хотя обратите внимание, что это происходит во время модификации более 3 дней назад, так как время создания доступно только на определенных файловых системах со специальными инструментами):

find /a/b/c/1 /a/b/c/2 -type f -mtime +3 #-delete

Удалите # перед -удалением, как только вы убедитесь, что нашли файлы, которые хотите удалить.

Чтобы его запустить скрипт cron, я, вероятно, просто создам исполняемый скрипт (добавим shebang - #!bin/sh в верхнюю строку файла и сделаю его исполняемым с помощью chmod a+x), а затем поместим его в соответствующую директорию cron, например /etc/cron.daily или /etc/cron.weekly. При условии, конечно, что вам не нужен более конкретный график и что эти каталоги существуют на вашем дистрибутиве.

Обновление

Как отмечено ниже, опция -удаление для find не очень портативна. Подход, совместимый с POSIX, будет следующим:

find /a/b/c/1 /a/b/c/2 -type f -mtime +3 #-exec rm {} +

Снова удалите #, когда вы будете уверены, что у вас есть нужные файлы.

Обновление2

Чтобы процитировать комментарий Стефана Шазеласа ниже:

Обратите внимание, что -exec rm {} + имеет уязвимости состояния гонки, которых нет в -delete (если есть). Поэтому не используйте его на каталогах, которые могут быть записаны другими. Некоторые находки также имеют -execdir, который смягчает эти уязвимости.

26
27.01.2020, 19:43

Гораздо лучше использовать tmpwatch

tmpwatch recursively removes files which haven't been accessed for a given time. Normally, it's used to clean up directories which are used for temporary holding space such as /tmp.
9
27.01.2020, 19:43

Теги

Похожие вопросы