Источник
В данном руководстве показано, как настроить lsyncd для синхронизации изменений в каталогах на одной машине и между удалёнными хостами.
Чтобы установить lsyncd, используйте команды:
Эти команды установят lsyncd. Но демон поставляется без стандартных настроек, потому их необходимо установить самостоятельно.
Ознакомьтесь с этими текстовыми файлами, чтобы понять, как устроены конфигурации lsyncd.
Более подробные настройки можно найти в файле lrsync.lua:
Строки, которые начинаются с двух тире (—), закомментированы, lsyncd не интерпретирует их.
Конфигурационный файл lsync написан ан языке программирования Lua; узнать больше о Lua можно здесь.
Затем нужно добавить несколько файлов в первый каталог:
Эти команды создают 100 файлов в каталоге /source/to/copy.
Кроме того, нужно создать лог для lsyncd и несколько файлов в нём:
Затем нужно создать конфигурационный каталог lsyncd:
В этом каталоге создайте конфигурационный файл lsyncd.conf.lua:
Благодаря этим опциям lsyncd будет использовать созданные ранее файлы.
Эти конфигурации определяются при помощи опции default.rsync, которая значит, что демон lsyncd будет ждать 20 секунд или собирать 1000 отдельных событий синхронизации, а затем вызовет rsync для синхронизации изменений.
Согласно мануалу lsyncd вызываемая команда rsync эквивалентна команде:
Это значит, что rsync работает следующим образом:
Чтобы изменить поведение rsync при помощи опций, задайте переменной rsyncOpts список этих опций, разделив их запятыми:
Теперь файл готов к тестовой синхронизации; сохраните и закройте файл.
Последняя команда не должна вернуть никакого вывода, поскольку каталог пуст.
Перезапустите сервис lsyncd, выполнив команду:
Снова выполните команду ls:
Как видите, демон lsyncd успешно синхронизировал локальные каталоги.
Если в исходный каталог добавить несколько файлов, то с задержкой в 20 секунд они появятся в целевом каталоге.
Затем проверьте целевой каталог при помощи команды ls.
Для начала нужно иметь возможность подключиться к машине по ssh.
Создайте пару ключей для root-пользователя, поскольку lsyncd будет работать как root. Затем скопируйте файл ключа на удалённую машину при помощи команды:
Теперь файл ключа позволит входить на удалённый сервер как пользователю root.
Убедитесь, что это работает, и создайте на удалённой машине целевой каталог:
Для примера создайте целевой каталог /remotesync:
Закройте удалённую сессию и локальную root-сессию, дважды введя exit:
Нужно внести некоторые изменения в раздел sync:
Замените default.rsync на default.rsyncssh, чтобы включить поддержку rsync по ssh; также замените переменную target переменными host и targetdir:
Сохраните и закройте файл.
Подключившись к удалённой машине по ssh, можно увидеть изменения в каталоге /remotesync:
Теперь этот каталог содержит файлы, добавленные в каталог /source/to/copy.
Кроме того, помните, что каталог /usr/share/doc/lsyncd/examples содержит и другие примеры конфигурационных файлов.
Что такое lsyncd?
При управлении веб-сервером или приложением часто возникает необходимость синхронизировать каталоги. Одним из надёжных решений для выполнения этой задачи является демон lsyncd.В данном руководстве показано, как настроить lsyncd для синхронизации изменений в каталогах на одной машине и между удалёнными хостами.
Примечание: Данное 
руководство выполнено на виртуальном выделенном сервере Ubuntu 12.04, но
 любой современный дистрибутив будет работать таким же образом.
Установка lsyncd
Демон lsyncd можно скачать из официального репозитория Ubuntu.Чтобы установить lsyncd, используйте команды:
sudo apt-get update
sudo apt-get install lsyncdЭти команды установят lsyncd. Но демон поставляется без стандартных настроек, потому их необходимо установить самостоятельно.
Примеры конфигурации lsyncd
Демон lsyncd не имеет стандартного конфигурационного файла, но предоставляет несколько примеров конфигураций, которые можно найти в каталоге /usr/share/doc/lsyncd/examples:cd /usr/share/doc/lsyncd/examples
ls
lbash.lua  lgforce.lua      lpostcmd.lua  lrsyncssh.lua
lecho.lua  limagemagic.lua  lrsync.luaОзнакомьтесь с этими текстовыми файлами, чтобы понять, как устроены конфигурации lsyncd.
Более подробные настройки можно найти в файле lrsync.lua:
sudo nano
----
-- User configuration file for lsyncd.
--
-- Simple example for default rsync.
--
settings = {
statusFile = "/tmp/lsyncd.stat",
statusIntervall = 1,
}
sync{
default.rsync,
source="src",
target="trg",
}Строки, которые начинаются с двух тире (—), закомментированы, lsyncd не интерпретирует их.
Конфигурационный файл lsync написан ан языке программирования Lua; узнать больше о Lua можно здесь.
Настройка окружения
Для примера попробуйте синхронизировать два локальных каталога. Создайте их при помощи следующей команды:sudo mkdir -p /source/to/copy
sudo mkdir /destЗатем нужно добавить несколько файлов в первый каталог:
cd /source/to/copy
sudo touch file{1..100}Эти команды создают 100 файлов в каталоге /source/to/copy.
Кроме того, нужно создать лог для lsyncd и несколько файлов в нём:
sudo mkdir /var/log/lsyncd
touch /var/log/lsyncd/lsyncd.{log,status}Затем нужно создать конфигурационный каталог lsyncd:
sudo mkdir /etc/lsyncdВ этом каталоге создайте конфигурационный файл lsyncd.conf.lua:
sudo nano /etc/lsyncd/lsyncd.conf.luaСинхронизация локальных каталогов при помощи lsyncd
При помощи только что созданного конфигурационного файла можно синхронизировать каталоги /source/to/copy directory to the /dest.Основные настройки
Основные настройки находятся в разделе settings; поместите в файл:settings = {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status"
}Благодаря этим опциям lsyncd будет использовать созданные ранее файлы.
Настройки синхронизации
Следующий раздел содержит настройки синхронизации. Поскольку в данном случае синхронизация будет выполняться локально, можно использовать команду rsync.Эти конфигурации определяются при помощи опции default.rsync, которая значит, что демон lsyncd будет ждать 20 секунд или собирать 1000 отдельных событий синхронизации, а затем вызовет rsync для синхронизации изменений.
Согласно мануалу lsyncd вызываемая команда rsync эквивалентна команде:
rsync -ltsd --delete --include-from=- --exclude=* SOURCE TARGETЭто значит, что rsync работает следующим образом:
- -l: копирует символическую ссылку
 - -t: копирует время изменения
 - -s: только подстановочные знаки
 - -d: перемещение каталогов без рекурсии
 
sync {
default.rsync,
source = "/source/to/copy",
target = "/dest"
}Чтобы изменить поведение rsync при помощи опций, задайте переменной rsyncOpts список этих опций, разделив их запятыми:
sync {
default.rsync,
source = "/source/to/copy",
target = "/dest",
rsyncOpts = {"rsync option1", "rsync option2", "rsync option3"}
}Теперь файл готов к тестовой синхронизации; сохраните и закройте файл.
Тестовая локальная синхронизация
Откройте целевой каталог и убедитесь, что он пуст (в данном случае это /dest):cd /dest
lsПоследняя команда не должна вернуть никакого вывода, поскольку каталог пуст.
Перезапустите сервис lsyncd, выполнив команду:
sudo service lsyncd startСнова выполните команду ls:
ls
file1    file18  file27  file36  file45  file54  file63  file72  file81  file90
file10   file19  file28  file37  file46  file55  file64  file73  file82  file91
file100  file2   file29  file38  file47  file56  file65  file74  file83  file92
file11   file20  file3   file39  file48  file57  file66  file75  file84  file93
file12   file21  file30  file4   file49  file58  file67  file76  file85  file94
file13   file22  file31  file40  file5   file59  file68  file77  file86  file95
file14   file23  file32  file41  file50  file6   file69  file78  file87  file96
file15   file24  file33  file42  file51  file60  file7   file79  file88  file97
file16   file25  file34  file43  file52  file61  file70  file8   file89  file98
file17   file26  file35  file44  file53  file62  file71  file80  file9   file99Как видите, демон lsyncd успешно синхронизировал локальные каталоги.
Если в исходный каталог добавить несколько файлов, то с задержкой в 20 секунд они появятся в целевом каталоге.
sudo mkdir /source/to/copy/hello{1..100}
lsЗатем проверьте целевой каталог при помощи команды ls.
Удалённая синхронизация при помощи lsyncd
Чтобы настроить удалённую синхронизацию, нужно внести несколько изменений в конфигурационный файл.Для начала нужно иметь возможность подключиться к машине по ssh.
Подключение к удалённой машине с помощью SSH-ключей
Чтобы получить инструкции по созданию SSH-ключей, читайте данное руководство.Создайте пару ключей для root-пользователя, поскольку lsyncd будет работать как root. Затем скопируйте файл ключа на удалённую машину при помощи команды:
sudo su
ssh-copy-id remote_mirror_ip_addressТеперь файл ключа позволит входить на удалённый сервер как пользователю root.
Убедитесь, что это работает, и создайте на удалённой машине целевой каталог:
ssh remote_mirror_ip_addressДля примера создайте целевой каталог /remotesync:
mkdir /remotesyncЗакройте удалённую сессию и локальную root-сессию, дважды введя exit:
exit
exitНастройка удалённой синхронизации lsyncd
Откройте конфигурационный файл lsyncd:sudo nano /etc/lsyncd/lsyncd.conf.lua
settings = {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status"
}
sync {
default.rsync,
source = "/source/to/copy",
target = "/dest"
}Нужно внести некоторые изменения в раздел sync:
Замените default.rsync на default.rsyncssh, чтобы включить поддержку rsync по ssh; также замените переменную target переменными host и targetdir:
settings = {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status"
}
sync {
default.rsyncssh,
source = "/source/to/copy",
host = "remote_mirror_ip_address",
targetdir = "/remotesync"
}Сохраните и закройте файл.
Тестирование удалённой синхронизации
Перезапустите сервис lsyncd:sudo service lsyncd restartПодключившись к удалённой машине по ssh, можно увидеть изменения в каталоге /remotesync:
sudo su
ssh remote_mirror_ip_address
ls /remotesyncТеперь этот каталог содержит файлы, добавленные в каталог /source/to/copy.
Заключение
Сервис lsyncd — отличный способ синхронизировать файлы между системами и каталогами. Написанный на Lua конфигурационный файл делает этот инструмент ещё более гибким и производительным. Документация Lua и lsyncd содержат инструкции для настройки более сложной синхронизации.Кроме того, помните, что каталог /usr/share/doc/lsyncd/examples содержит и другие примеры конфигурационных файлов.
Комментариев нет:
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.