Установка и настройка Lsyncd на Ubuntu 20.04

Введение
Lsyncd (Live Syncing Daemon) — простой и лёгкий инструмент для зеркалирования локальной директории в другую директорию на той же или удалённой системе. Он наблюдает за исходной директорией и при изменениях запускает rsync (или rsync over ssh) для синхронизации. Чаще всего применяется для зеркалирования конфигураций, резервного копирования и доставки файлов между зонами с разным уровнем доступа.
Краткое определение: Lsyncd — демон, который отслеживает изменения файловой структуры и вызывает rsync для синхронизации.
Основные варианты использования
- Локальная синхронизация: копирование /etc -> /mnt на той же машине.
- Удалённая синхронизация: копирование /etc локально на /opt удалённого сервера через ssh.
- Репликация конфигураций между серверами для отказоустойчивости или деплоя.
Требования
- Сервер с Ubuntu 20.04.
- Доступ root или эквивалентные привилегии (sudo).
- Для удалённой синхронизации — доступ по SSH и возможность настройки ключей.
Обновление системы перед началом
Рекомендуется обновить пакеты перед установкой:
apt-get update -y
apt-get upgrade -yПосле обновления перезагрузите систему, если обновления включали ядро или системные службы.
Установка Lsyncd
Lsyncd доступен в стандартных репозиториях Ubuntu. Устанавливаем командой:
apt-get install lsyncd -yПроверка установленной версии:
lsyncd --versionОжидаемый выход (пример):
Version: 2.2.3Настройка Lsyncd для локальной синхронизации
В этом разделе покажем настройку синхронизации /etc/ -> /mnt на той же системе.
- Создайте папку для конфигурации Lsyncd:
mkdir -p /etc/lsyncd- Откройте конфигурационный файл:
nano /etc/lsyncd/lsyncd.conf.lua- Пример содержимого конфигурации:
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status",
statusInterval = 20,
nodaemon = false
}
sync {
default.rsync,
source = "/etc/",
target = "/mnt"
}
Пояснения: logfile и statusFile указывают на файлы логов и статусного файла. default.rsync использует локальный rsync.
- Запустите сервис и включите автозапуск:
systemctl start lsyncd
systemctl enable lsyncd- Проверка статуса:
systemctl status lsyncdПример вывода systemd показывает, что демон активен и запущен.
- Просмотр логов в реальном времени:
tail -f /var/log/lsyncd/lsyncd.log- Проверка результатов синхронизации:
ls /mnt/Вы увидите скопированные файлы из /etc.
Настройка Lsyncd для удалённой синхронизации
Для синхронизации локальной директории с директорией на удалённом сервере потребуется SSH-авторизация без пароля.
Генерация SSH-ключа
На локальной машине выполните:
ssh-keygen -t rsaПо умолчанию ключи будут в ~/.ssh/id_rsa и ~/.ssh/id_rsa.pub.
Копирование публичного ключа на удалённый сервер
ssh-copy-id root@remote-server-ipПосле этого можно подключаться по SSH без ввода пароля:
ssh root@remote-server-ipПример конфигурации Lsyncd для rsync через SSH
Откройте /etc/lsyncd/lsyncd.conf.lua и используйте rsyncssh (rsync over ssh):
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status",
statusInterval = 20,
nodaemon = false
}
sync {
default.rsyncssh,
source = "/etc/",
host = "remote-server-ip",
targetdir = "/opt"
}
Перезапустите сервис:
systemctl restart lsyncdИ проверьте лог:
tail -f /var/log/lsyncd/lsyncd.logНа удалённой машине проверьте /opt — файлы должны появиться там.
Типичные проблемы и их решения
Проблема: Lsyncd не запускается.
- Проверить
systemctl status lsyncdи логи/var/log/lsyncd/lsyncd.log. - Убедиться, что указанные в конфиге каталоги существуют и права доступа корректны.
- Проверить
Проблема: SSH-аутентификация просит пароль.
- Убедиться, что публичный ключ добавлен в ~/.ssh/authorized_keys на удалённой машине.
- Проверить права на ~/.ssh и authorized_keys (chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys).
Проблема: частичные или некорректные копии файлов.
- Проверить параметры rsync, исключения и права доступа. В сложных сценариях добавить параметр rsyncverbose.
Когда Lsyncd не подходит
- Большие объёмы данных с высоким уровнем изменений: Lsyncd триггерит rsync часто, поэтому для больших потоков данных лучше использовать специализированные решения (Ceph, GlusterFS, Unison или ZFS replication).
- Требуется транзакционная согласованность между базами данных — Lsyncd не гарантирует целостность на уровне приложений.
Альтернативные подходы
- Unison — двухсторонняя синхронизация с разрешением конфликтов.
- rsync + cron — для периодических бэкапов без постоянного демона.
- Системы распределённой файловой системы для постоянной репликации и согласованности.
Лучшие практики и рекомендации
- Всегда тестируйте конфигурацию на неверных путях в тестовой среде перед продакшеном.
- Включите логирование и мониторьте статусный файл
/var/log/lsyncd/lsyncd.status. - Настроьте ротацию логов для
/var/log/lsyncd/lsyncd.logчерез logrotate. - Используйте SSH-ключи с passphrase + ssh-agent на клиентских машинах для безопасности ключей.
- Ограничьте доступ по SSH для учетной записи, используемой для синхронизации (например, через Match в sshd_config).
Мини-SOP для развёртывания (шаг за шагом)
- Обновить систему: apt-get update && apt-get upgrade.
- Установить lsyncd: apt-get install lsyncd -y.
- Создать /etc/lsyncd/ и конфиг lsyncd.conf.lua.
- При удалённой синхронизации: создать SSH-ключ и скопировать на целевой сервер.
- Запустить systemctl enable –now lsyncd.
- Проверить логи и статус, выполнить ls в целевой директории.
Контрольные точки и критерии приёмки
- Lsyncd запущен и активен (systemctl status показывает active).
- В
/var/log/lsyncd/lsyncd.logотсутствуют критические ошибки. - Файлы из source присутствуют в target (проверено
lsи выборочныеmd5sum). - SSH-подключение к удалённому хосту работает без пароля, если используется rsyncssh.
Безопасность и жёсткие настройки
- Минимизируйте права для пользователя, через которого выполняется синхронизация.
- Включите в sshd_config ограничение на команды или chroot для пользователя, если требуется.
- Периодически обновляйте rsync/openssh/lsyncd и следите за CVE.
- Защитите лог-файлы и статусные файлы, чтобы в них не попал чувствительный вывод.
Проверки и тесты, которые стоит выполнить
- Тестовый файл: создайте test.txt в /etc и убедитесь, что он появился в /mnt или на удалённом /opt.
- Изменение файла: отредактируйте файл и проверьте, что изменения синхронизировались.
- Удаление: удалите файл и проверьте, что Lsyncd удалит его в целевой директории (в зависимости от конфигурации rsync).
Ментальные модели и эвристики
- Lsyncd — «наблюдатель» + «выполняющий rsync»: он не хранит данные, а инициирует rsync при изменениях.
- Для малых объектов и редких изменений Lsyncd даёт низкую задержку и простоту. Для больших потоков данных оцените нагрузку на I/O.
Краткая сводка и дальнейшие шаги
- Lsyncd подходит для простого зеркалирования директорий и автоматизации копирования конфигураций.
- Для продакшен-использования настройте логирование, ротацию логов и мониторинг.
- Рассмотрите альтернативы при больших объёмах данных или при необходимости двунаправленной синхронизации.
Важно: перед запуском в продакшен протестируйте конфигурацию в изолированной среде и убедитесь, что права доступа и безопасность настроены правильно.
Заключение
В этом руководстве вы узнали, как установить Lsyncd, настроить локальную и удалённую синхронизацию, организовать SSH-ключи, проверить логи и учесть лучшие практики безопасности. Если нужны примеры конфигураций для конкретных сценариев (несколько источников, исключения, использование дополнительных опций rsync), напишите ваши требования — я помогу адаптировать конфигурацию.
Краткие определения терминов
- rsync: инструмент для инкрементного копирования файлов по сети или локально.
- rsyncssh: использование rsync поверх ssh для передачи данных на удалённый хост.
- Lsyncd: демон, отслеживающий изменения и запускающий rsync.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента