Назад | Перейти на главную страницу

Управляйте cron для очистки кешированных каталогов

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

Когда я говорю «управлять», я имею в виду различные места, в идеале это лучше всего работает в базе данных MySQL. Без создания задания cron для каждого местоположения.

Причина этого в том, что у нас есть несколько различных проектов веб-сайтов, которые генерируют кешированные файлы и за последние несколько недель начали расти в размерах.

Вы можете создать сценарий, который запускается на одном сервере через cron и будет использовать ssh для удаления файлов в разных местах:

ssh user@server1.example.org rm -rf /path/to/cache
ssh user@server2.example.org rm -rf /path/to/cache2
etc.

Проверить на опечатки! :-)

Или безопаснее:

ssh user@server1.example.org 'cd /path/to && rm -rf cache'

Обязательно используйте ssh-copy-id для копирования вашего ключа на удаленные серверы, чтобы вы могли использовать вход без пароля:

ssh-copy-id user@server1.example.com

Если вы имеете в виду разные серверы, то лучше всего написать задание cron на каждом. Напишите общий сценарий, который выполняет полезную работу, и запланируйте его на всех серверах.

Если вы имеете в виду разные места на одном сервере, то одно задание cron, которое считывает каталоги из текстового файла и очищает их, является самым простым вариантом, mysql кажется излишним для списка целевых каталогов. Если есть веская причина для наличия местоположений в базе данных mysql, тогда вы можете написать один сценарий perl для чтения данных mysql и очистки перечисленных каталогов.

Наконец, в зависимости от того, как ваши веб-приложения создают файлы, они все равно должны быть написаны так, чтобы обслуживать их самостоятельно. Когда приложение создает новый кэшированный файл, оно может проверить, нужно ли его удалить. Самоуправляемые приложения лучше, чем полагаться на внешние скрипты, которые могут дать сбой по не связанным причинам.