Під великим файловим деревом я маю на увазі близько 200 тис. Файлів, які постійно зростають. Однак порівняно невелика кількість файлів змінюється за будь-яку годину.
Під двонаправленим я маю на увазі, що зміни можуть відбуватися на будь-якому сервері і їх потрібно перенести на інший, тому rsync не здається підходящим.
Під віддаленим я маю на увазі, що сервери знаходяться як в центрах обробки даних, але географічно віддалені один від одного. Наразі існує лише 2 сервери, але вони можуть з часом розширюватися.
У режимі реального часу нормально, що між синхронізацією буде невелика затримка, але запуск крона кожні 1-2 хвилини не здається правильним, оскільки дуже мала частина файлів може змінюватися в будь-яку годину, не кажучи вже про хвилину.
EDIT : Ця функція працює на VPS, тому я можу обмежитися видами ядер на рівні ядра. Крім того, VPS не багаті на ресурси, тому я б ухилявся від рішень, які вимагають багато оперативної пам’яті (наприклад, Gluster?).
Який найкращий / найбільш "прийнятий" підхід для цього? Це здається, це було б загальною потребою, але я ще не зміг знайти загальноприйнятого підходу, що було дивно. (Я шукаю безпеку мас. :)
Я наткнувся на lsyncd, щоб запустити синхронізацію на рівні зміни файлової системи. Це здається розумним, хоча і не надто поширеним, і мене трохи бентежать різні підходи lsyncd. Там просто використовується lsyncd з rsync, але, схоже, це може бути тендітним для двонаправленості, оскільки rsync не має поняття пам’яті (наприклад, - знати, чи слід видалити видалений файл з A на B або новий файл у B) що слід скопіювати на A). Lipsync , здається, просто lsyncd + Rsync реалізація, НЕ так?
Потім використовується lsyncd з csync2 , як-от так: https://icicimov.github.io/blog/devops/File-system-sync-with-Csync2-and-Lsyncd/ ... Я схиляюся до цього підходу, але csync2 трохи химерний, хоча я зробив успішний тест на цьому. Мене найбільше турбує те, що мені не вдалося знайти багато підтвердження громади цього методу.
Людям, які перебувають тут, дуже подобається Unison, але, здається, він більше не знаходиться в активному розвитку, і не ясно, що він має автоматичний тригер, як lsyncd.
Я бачив, як Gluster згадував, але, можливо, надмірність того, що мені потрібно?
ОНОВЛЕННЯ: fyi- Я закінчив роботу з оригінальним рішенням, про яке я згадав: lsyncd + csync2. Це, здається, працює досить добре, і мені подобається архітектурний підхід до того, щоб сервери були дуже вільно з'єднані, так що кожен сервер може працювати на невизначений час самостійно незалежно від якості зв'язку між ними.