Установка Lsyncd в Unix/Linux

Установка 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» завершена.

One thought on “Установка Lsyncd в Unix/Linux

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.