Синхронизация файлов в реальном времени

Есть ли какой-либо инструмент для синхронизации файлов между двумя или несколькими Linux-серверами сразу после записи файла на диск? Команда rsync не помогает мне в этом, потому что если я установлю rsync в cron, минимальное время, которое я могу установить, составляет 1 минуту, но мне нужно это в режиме реального времени.

10 голосов | спросил Sourav 31 PM00000090000003931 2016, 21:42:39

6 ответов


11

Не использовал его сам, но недавно прочитал об этом. Существует демон, называемый lsyncd, который, как я полагаю, делает именно то, что вам нужно.

Подробнее об этом ЗДЕСЬ

ответил MelBurslan 31 PM00000090000005031 2016, 21:48:50
2

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

Существует хороший инструмент под названием lsyncd для синхронизации файлов между несколькими серверами в режиме реального времени. Здесь я попытался с двумя серверами.

Хосты: Server1 и Server2

Используемая ОС: CentOS 7

Установите ниже пакеты на обоих серверах.

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

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

Конфигурация 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

Конфигурация Server2

Следуйте той же конфигурации, что и Server1, и измените IP-адрес target.

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

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

Спасибо Мельбурсну за его предложение.

ответил Sourav 1 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 01 Sep 2016 13:43:49 +0300 2016, 13:43:49
1

Inotify-tools

Предоставить интерфейс inotify, состоящий из:

inotifywait

Эта команда просто блокирует события inotify, что делает ее пригодной для использования в сценариях оболочки. Он может просматривать любой набор файлов и каталогов и может рекурсивно просматривать целые деревья каталогов.

inotifywatch

Эта команда собирает статистику использования файловой системы и выводит подсчеты каждого события inotify.

ответил Pro Backup 22 J0000006Europe/Moscow 2017, 17:55:55
1

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

ответил njam 28 +03002017-10-28T14:42:56+03:00312017bEurope/MoscowSat, 28 Oct 2017 14:42:56 +0300 2017, 14:42:56
0

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

ответил John 31 PM00000090000002031 2016, 21:46:20

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132