Синхронізація файлів у режимі реального часу


22

Чи є якийсь інструмент для синхронізації файлів між двома або більше Linux-серверами відразу після запису файлу на диск? rsyncКоманда не влаштовує мене на це, тому що , якщо я викладу rsyncв хрон, мінімальний час можна встановити в 1 хвилину, але мені це потрібно на основі реального часу.


2
Вам потрібна синхронізація з одного сервера читання-запису на один або декілька серверів, доступних лише для читання, чи вам потрібна двостороння синхронізація (з поширенням в обох напрямках) або n-напрям? Якщо ви хочете двосторонній / як вирішити конфлікти?
Жил "ТАК - перестань бути злим"

Відповіді:


18

Я не використовував його сам, але читав про нього недавно. Є демон lsyncd, який, я вважаю, робить саме те, що вам потрібно.

Детальніше про це читайте ТУТ


2
ІМХО, це повинна бути прийнята відповідь. lsyncdвикористовує inotify& має бути найшвидшим на рівні fs. Детальніше на github.com/axkibe/lsyncd . З цієї сторінки: Lsyncd спостерігає інтерфейс монітора подій дерев локальних каталогів (ініціює або fsevents). Він агрегує та поєднує події протягом декількох секунд, а потім породжує один (або більше) процес (и) для синхронізації змін. За замовчуванням це rsync. Таким чином, Lsyncd - це легке живе дзеркальне рішення, яке досить просто встановити, не вимагаючи нових файлових систем або блокувати пристрої, і не перешкоджає роботі локальної файлової системи.
SACHIN GARG

5

Інструменти-інструменти

Надайте інтерфейс inotify, що складається з:

inotifywait

Ця команда просто блокує ініціювати події, що робить її придатною для використання в скриптах оболонки. Він може переглядати будь-який набір файлів і каталогів, а також може рекурсивно переглядати цілі дерева каталогів.

inotifywatch

Ця команда збирає статистику використання файлової системи та видає підрахунки кожної події, що ініціює.


4

Синхронізація файлів у реальному часі між декількома серверами в режимі мульти майстер

Існує хороший інструмент lsyncdдля синхронізації файлів між декількома серверами в режимі реального часу. Тут я спробував з двома серверами.

Хости: Server1 та Server2

ОС, що використовується: CentOS 7

Встановіть нижче пакети на обох серверах.

# yum install -y epel-release
# yum -y install lua lua-devel pkgconfig gcc asciidoc lsyncd

генерувати ssh-ключ на обох серверах та додавати у authorized_keysфайл. [додати відкритий ключ сервера1 до файлу сервера2 authorized_keysта відкритий ключ сервера2 до authorized_keysфайлу сервера1 ]

Конфігурація Server1

Відкрийте /etc/lsyncd.confта прокоментуйте конфігурацію за замовчуванням, використовуючи --на початку рядка та додайте нижче конфігурацію у файл.

settings {
  logfile = "/var/log/lsyncd/lsyncd.log",
  delay = 1
}
sync {
  default.rsync,
  source="/home/test/public_html/",
  target="server2:/home/test/public_html/",
  rsync = {
    compress = true,
    acls = true,
    verbose = true,
    owner = true,
    group = true,
    perms = true,
    rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"
  }
}

Змініть цільовий IP- targetпараметр.

Ви можете змінити delayпараметр відповідно до вашої вимоги. Тут встановлено 1 секунду.

Тепер створіть каталог журналів.

# mkdir -p /var/log/lsyncd

Увімкніть lsyncdпослугу запуск автоматично.

# systemctl enable lsyncd.service

Запустіть послугу.

# systemctl start lsyncd.service

Конфігурація сервера2

Дотримуйтесь тієї ж конфігурації, що і Server1, і змініть targetIP-адресу.

Тепер синхронізація встановлена.

Ви можете перевірити активність від tailf /var/log/lsyncd/lsyncd.log

Дякую Мелбурслану за його пропозицію.


Параметр затримки в налаштуваннях недійсний. Замість цього використовуйте змінну maxDelays . Я реалізував цей інструмент. Це дійсно потужно.
Hasanuzzaman Sattar

3

Синхронізація може бути варіантом. Це надзвичайно швидко, передача шифрується і є клієнти для декількох платформ. Він використовує "inotify", щоб миттєво синхронізувати зміни файлів.


2

Вам потрібно буде підійти до цього за допомогою кластерного рішення типу файлової системи - проста синхронізація між двома машинами не дасть відповіді в реальному часі.


Насправді ці сервери є на AWS. Таким чином, ми не можемо отримати кластерне середовище! Хіба немає іншого способу?
Сурав

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.