Гид по технологиям

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

• 5 min read • DevOps • Обновлено 24 Nov 2025
Установка и настройка Lsyncd на Ubuntu
Установка и настройка Lsyncd на Ubuntu

Иллюстрация процесса синхронизации Lsyncd

Введение

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 на той же системе.

  1. Создайте папку для конфигурации Lsyncd:
mkdir -p /etc/lsyncd
  1. Откройте конфигурационный файл:
nano /etc/lsyncd/lsyncd.conf.lua
  1. Пример содержимого конфигурации:
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.

  1. Запустите сервис и включите автозапуск:
systemctl start lsyncd
systemctl enable lsyncd
  1. Проверка статуса:
systemctl status lsyncd

Пример вывода systemd показывает, что демон активен и запущен.

  1. Просмотр логов в реальном времени:
tail -f /var/log/lsyncd/lsyncd.log
  1. Проверка результатов синхронизации:
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 для развёртывания (шаг за шагом)

  1. Обновить систему: apt-get update && apt-get upgrade.
  2. Установить lsyncd: apt-get install lsyncd -y.
  3. Создать /etc/lsyncd/ и конфиг lsyncd.conf.lua.
  4. При удалённой синхронизации: создать SSH-ключ и скопировать на целевой сервер.
  5. Запустить systemctl enable –now lsyncd.
  6. Проверить логи и статус, выполнить 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.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро