Установка 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))