Настройка службы, которая автоматически удаляет определенные файлы из папки

У меня есть папка, которая подключается к аппаратному регистратору погоды. Данные довольно большие, и я хочу сохранить данные за последние 5 часов. Эта папка; однако, есть также некоторые конфигурационные файлы, такие как myconfig.ini.

Как настроить автоматическую службу, которая автоматически удаляет все файлы в папке, кроме нескольких?

2
задан 1 November 2010 в 18:00

5 ответов

Вы можете использовать logrotate. Он установлен по умолчанию; проверьте страницу руководства для получения инструкций.

0
ответ дан 1 November 2010 в 18:00

Это должно удалить все, что было изменено в течение последнего дня. Я бы посоветовал поместить это в ежедневный хрен. Обязательно протестируйте перед реализацией ... и имейте в виду, что, поскольку он работает с файлами по дате изменения, он не относится к конкретному файлу (т. Е. Если вы измените myconfig.ini, при следующем запуске он может убить ваш myconfig.ini .

find /directory_path -type f -mtime -1 -exec rm{} \;

Это, очевидно, имеет некоторые недостатки, но, по крайней мере, это может быть хорошим началом.

0
ответ дан 1 November 2010 в 18:00

Немного другой подход: почему бы не настроить 5-часовое частотное задание для переименования текущего каталога сбора и создания нового текущего каталога сбора? Вы можете вручную или автоматически обрабатывать / архивировать / удалять отдельные 5-часовые каталоги.

0
ответ дан 1 November 2010 в 18:00

Будет ли добавление команды find в cron для вас?

find /path/ -type f -mtime +5 -name '*.log'

Вы можете добавить дополнительные элементы, чтобы найти именно те файлы, которые вам нужны. -mtype - это часть, ограничивающая дату, которая находит файлы, которые были последний раз изменены более 5 дней назад. Вы можете изменить это, чтобы просто посмотреть на время создания или даже доступа (если вы не используете noatime на своем fs)

Когда вы получаете нужные файлы, просто вставьте -exec rm {} \; в конце , Вы можете использовать -delete, но это рухнет, если вы удалите слишком много файлов одновременно. Делайте это только тогда, когда вы уверены!

Если вы хотите запланировать это, su войдите в подходящую учетную запись пользователя (человека, которому принадлежат файлы), а затем запустите crontab -e. Затем вы можете записать команду, и при выходе она будет выполняться по заданному вами расписанию. Вы можете узнать больше о cron здесь:

https://help.ubuntu.com/community/CronHowto

0
ответ дан 1 November 2010 в 18:00

Red Hat / Fedora / Cent имеет небольшой сценарий под названием tmpwatch, который вы можете легко перенести в Ubuntu.

0
ответ дан 1 November 2010 в 18:00

Другие вопросы по тегам:

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