Под большим файловым деревом я имею в виду около 200 тыс. Файлов, и они постоянно растут. Относительно небольшое количество файлов изменяется в любой данный час, хотя.
Под двунаправленным я подразумеваю, что изменения могут происходить на любом сервере и должны быть перенесены на другой, поэтому rsync кажется неуместным.
Под удаленным я подразумеваю, что серверы находятся в центрах обработки данных, но географически удалены друг от друга. В настоящее время есть только 2 сервера, но они могут расширяться со временем.
В режиме реального времени вполне допустимо, чтобы между синхронизацией была небольшая задержка, но запуск cron каждые 1-2 минуты кажется неправильным, поскольку очень небольшая часть файлов может меняться в любой данный час, не говоря уже о минуте.
РЕДАКТИРОВАТЬ : Это работает на VPS, так что я мог бы ограничиться видами вещей на уровне ядра, которые я могу сделать. Кроме того, VPS не богаты ресурсами, так что я бы избегал решений, которые требуют много оперативной памяти (например, Gluster?).
Каков наилучший / наиболее «приемлемый» подход для достижения этой цели? Кажется, что это будет общая потребность, но я пока не смог найти общепринятый подход, что было удивительно. (Я ищу безопасность масс. :)
Я сталкивался с lsyncd для запуска синхронизации на уровне изменения файловой системы. Это кажется умным, хотя и не супер распространенным, и меня немного смущают различные подходы lsyncd. Есть только использование lsyncd с rsync, но кажется, что это может быть хрупким для двунаправленности, поскольку rsync не имеет представления о памяти (например, чтобы узнать, следует ли удалять удаленный файл на A на B или новый файл на B это должно быть скопировано в А). lipsync - это просто реализация lsyncd + rsync, верно?
Затем используется lsyncd с csync2 , например: https://icicimov.github.io/blog/devops/File-system-sync-with-Csync2-and-Lsyncd/ ... Я склоняюсь к этому подходу, но csync2 немного странный, хотя я успешно его проверил. Я в основном обеспокоен тем, что мне не удалось найти много подтверждений сообщества этого метода.
Кажется, что людям здесь очень нравится Unison, но кажется, что он больше не находится в активной разработке, и не ясно, есть ли у него автоматический триггер, такой как lsyncd.
Я видел упомянутое Глостер , но, может быть, излишне для того, что мне нужно?
ОБНОВЛЕНИЕ: я закончил тем, что пошел к оригинальному решению, которое я упомянул: lsyncd + csync2. Кажется, он работает довольно хорошо, и мне нравится архитектурный подход, предусматривающий очень слабое объединение серверов, чтобы каждый сервер мог работать самостоятельно неограниченное время независимо от качества связи между ними.