У меня есть папка, которая подключается к аппаратному регистратору погоды. Данные довольно большие, и я хочу сохранить данные за последние 5 часов. Эта папка; однако, есть также некоторые конфигурационные файлы, такие как myconfig.ini.
Как настроить автоматическую службу, которая автоматически удаляет все файлы в папке, кроме нескольких?
Вы можете использовать logrotate
. Он установлен по умолчанию; проверьте страницу руководства для получения инструкций.
Это должно удалить все, что было изменено в течение последнего дня. Я бы посоветовал поместить это в ежедневный хрен. Обязательно протестируйте перед реализацией ... и имейте в виду, что, поскольку он работает с файлами по дате изменения, он не относится к конкретному файлу (т. Е. Если вы измените myconfig.ini, при следующем запуске он может убить ваш myconfig.ini .
find /directory_path -type f -mtime -1 -exec rm{} \;
Это, очевидно, имеет некоторые недостатки, но, по крайней мере, это может быть хорошим началом.
Немного другой подход: почему бы не настроить 5-часовое частотное задание для переименования текущего каталога сбора и создания нового текущего каталога сбора? Вы можете вручную или автоматически обрабатывать / архивировать / удалять отдельные 5-часовые каталоги.
Будет ли добавление команды find
в cron для вас?
find /path/ -type f -mtime +5 -name '*.log'
Вы можете добавить дополнительные элементы, чтобы найти именно те файлы, которые вам нужны. -mtype
- это часть, ограничивающая дату, которая находит файлы, которые были последний раз изменены более 5 дней назад. Вы можете изменить это, чтобы просто посмотреть на время создания или даже доступа (если вы не используете noatime
на своем fs)
Когда вы получаете нужные файлы, просто вставьте -exec rm {} \;
в конце , Вы можете использовать -delete
, но это рухнет, если вы удалите слишком много файлов одновременно. Делайте это только тогда, когда вы уверены!
Если вы хотите запланировать это, su
войдите в подходящую учетную запись пользователя (человека, которому принадлежат файлы), а затем запустите crontab -e
. Затем вы можете записать команду, и при выходе она будет выполняться по заданному вами расписанию. Вы можете узнать больше о cron здесь:
Red Hat / Fedora / Cent имеет небольшой сценарий под названием tmpwatch
, который вы можете легко перенести в Ubuntu.