
Установка Lsyncd в Unix/Linux
Lsyncd (Live Syncing Daemon) — утилита для синхронизации файлов между сервером(ами). Файлы на локальном компьютере отслеживаются каждые несколько секунд, и если какие-либо изменения отмечены, они затем реплицируются и синхронизируются с удаленными серверами. По умолчанию, Lsync использует Rsync для репликации файлов с локальной машины и передает только файлы, которые были изменены. Тонкоструктурную настройку можно выполнить через файл конфигурации. Пользовательские конфигурации действий могут даже быть написаны с нуля в каскадных слоях, начиная от shell до кода, написанного на языке Lua.
Основные Lsyncd функции:
- Проверяет, нужно ли синхронизировать данные с локальной машиной на удаленный сервер(ы).
- Выполняет проверку наоборот.
- Синхронизация с вашей локальной машины на удаленный (ые).
- Синхронизирует наоборот.
- Может редактировать файл «rsync includes»
Установка Lsyncd в Unix/Linux
Процесс установки очень прост и не требует очень больших усилий. Я приведу несколько примеров по установки данной утилиты на различные Unix/Linux ОС.
Установка Lsyncd в Debian/Ubuntu
# apt-get update -y && apt-get update -y
Выполним установку:
# apt-get install lsyncd -y
После установки, переходим к настройке.
Установка Lsyncd в CentOS/RedHat/Fedora
# yum -y update
Выполним установку:
# yum install lsyncd -y
И, установим дополнительные пакеты:
# yum install lua lua-devel pkgconfig gcc asciidoc -y
После установки, переходим к настройке.
Установка Lsyncd в Mac OS X
Ставим себе на машину homebrew:
Установка homebrew на Mac OS X
И выполняем установку:
$ brew install lsyncd
После установки, переходим к настройке.
Настройка и использование Lsyncd в Unix/Linux
Чтобы все хорошо работало, нужно сгенерировать RSA ключ и положить его на удаленный сервер. Я пропущу данный шаг, т.к я это уже сделал, а если не знаете как это сделать вот статья:
SSH без пароля или аутентификация с использованием шифрованных ключей
Настройка и использование Lsyncd на Mac OS X
И так, я у себя на mac OS X хотел бы настроить lsyncd таким образом, чтобы он синхронизировал все изменения.
И так, я установил данную утилиту и следующим действием, я создам папку где будет хранится лог-файлы:
$ mkdir /usr/local/var/log/lsyncd
И создаю нужные файлы:
$ touch /usr/local/var/log/lsyncd/lsyncd.{log,status}
PS: В ОС Linux они могут лежать в /var/log/lsyncd. Если не имеется такой папки, то создаем.
Далее, я создаю каталог lsyncd в /etc/ для настройки конфига:
$ sudo mkdir /etc/lsyncd
После создания данной папки, я создаю конфигурационный файл:
# vim /etc/lsyncd/linux_notes.conf.lua
Содержание следующее:
settings { logfile = "/usr/local/var/log/lsyncd/lsyncd.log", statusFile = "/usr/local/var/log/lsyncd/lsyncd.status", statusInterval = 1, nodaemon = off } sync { default.rsyncssh, source = "/Users/captain/tmp", host = "captain@31.187.70.238", targetdir = "/home/captain/", excludeFrom="/etc/lsyncd/linux_notes.exclude", delay=3, rsync = { sparse = true, update = true, links = true, times = true, protect_args = false, archive = true, compress = true, whole_file = false, acls = true, verbose = true }, ssh = { port = 22, _extra = {"/usr/bin/ssh -l captain -p 22 -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no"} } }
Иногда нужно исключать некоторые каталоги. Вы можете создать файлe и добавить исключения в строке как в этом примере:
# vim /etc/lsyncd/linux_notes.exclude
файл имеет следующее содержание:
.git/* .*
Теперь мы можем запустить службу lsyncd, выполнив следующую команду:
$ sudo lsyncd /etc/lsyncd/linux_notes.conf.lua -delay 0
Настройка и использование Lsyncd на CentOS
Вот еще пример (проверялось на CentOS 7):
# vim /etc/lsyncd.conf
И прописываем:
settings { logfile = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd/lsyncd.status", statusInterval = 1 } sync { default.rsyncssh, source = "/var/www/html", host = "31.187.70.238", targetdir = "/home/backups/", rsync = { sparse = true, update = true, temp_dir="/tmp/", links = true, times = true, protect_args = false, archive = true, compress = true, whole_file = false, acls = true, verbose = true }, ssh = { port = 22, _extra = {"/usr/bin/ssh -l captain -p 22 -i /home/captain/.ssh/id_rsa -o StrictHostKeyChecking=no"} } }
ИЛИ, если использовать RSYNC:
settings = { logfile = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd/lsyncd.stat", statusInterval = 2, }, sync{ default.rsync, source="/var/www/html", target="31.187.70.238:/home/captain/", rsync={rsh ="/usr/bin/ssh -l captain -i /home/captain/.ssh/id_rsa",} }
Запускаем демон:
# service lsyncd restart
Добавляем в автозагрузку ОС:
# chkconfig lsyncd on
Если используете CentOS 7:
# systemctl restart lsyncd
И
# systemctl enable lsyncd
Подключаемся к серверу и проверяем папки. Так же, можно посмотреть логи.
Репликация в 2 стороны
Чтобы работала репликация и в обратную сторону — на сервере в другом регионе проведите такие же настройки, но в файле конфигурации lsyncd укажите адрес первого сервера. Проверьте, что данные реплицируются и в обратном направлении. В конфигурации lsyncd уже указана временная директория temp_dir, использование которой необходимо для двусторонней синхронизации.
Репликация на несколько серверов
Вот пример конфиругации:
settings = { delay = 1, maxProcesses = 3, logfile = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd/lsyncd.stat", } targetlist = { "66.66.66.10:/var/www/html", "66.66.66.20:/var/www/html" } for _, server in ipairs(targetlist) do sync{ default.rsync, source="/var/www/html", rsyncOps="-rltvupgo" target=server } end
На этом, у меня все, статья «Установка Lsyncd в Unix/Linux» завершена.
отличная статья. Только не хватает инфы по соединению конфига с lsyncd))