@Eugene007

Как сделать realtime rsync, если файл не найден на текущем сервере?

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

Есть сервер продакшн, на котором находится сайт с ~40Gb файлов контента (картинок, документов, видео и прочего).

Есть сервер для разработки, на котором хочется следующее:
- если сервер Apache не может найти файл в определенной директории и хочет вернуть 404 => нужно сделать rsync и повторить попытку поиска файла
- если php пытает работать с несуществующим файлом (к примеру, узнать его размер для вывода информации на странице) => сделать rsync (на мой взгляд, это сложно, но было бы идеально)

Пути решения, которые я себе представляю:
- сделать на уровне файловой системы (идеально, но не знаю как :)
- специальный модуль или конфигурация Apache, которая обрабатывает 404 ошибку и делает rsync
- cron, который парсит error.log на наличие 404 и делает rsync (просто, но есть задержка во времени)
- конфигурация Varnish, которая позволяет при 404 делать rsync

Возможно, у кого-то есть готовое решение, или предложения.

Заранее спасибо.
  • Вопрос задан
  • 2538 просмотров
Пригласить эксперта
Ответы на вопрос 1
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
Nginx это умеет (не rsync, а отдать файл пользователю с другого сервера и сохранить файл локально).
location / {
    root /var/www/cache;
error_page 404 = @storage; 
 }

  location @storage {
    proxy_pass http://2ndserver;
    proxy_store on;
    proxy_store_access user:rw  group:rw  all:r;
    proxy_temp_path /var/www/cachetmp
    root /var/www/cache;
    access_log off;
  }


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

А rsync иногда по крону делать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы