Lsyncd (Live Syncing Daemon) — демон, который мониторит файловую систему через inotify и запускает rsync при каждом изменении. Это даёт нам задержку 1–15 секунд вместо ожидания следующего cron-запуска.
# Установка
apt install lsyncd
# Конфигурация
mkdir -p /etc/lsyncd /var/log/lsyncd
-- /etc/lsyncd/lsyncd.conf.lua
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status",
statusInterval = 10,
insist = true, -- продолжать при ошибках
maxProcesses = 4, -- параллельные rsync-процессы
maxDelays = 500, -- группировать до 500 изменений в один rsync
}
sync {
default.rsync,
source = "/data/media/",
target = "rsync-user@spb-fs01.meganet.internal:/data/media/",
delay = 5, -- ждём 5 секунд после изменения (группировка)
exclude = {
'.Thumbs.db',
'*.tmp',
'.DS_Store',
'.rsync-partial/',
},
rsync = {
binary = "/usr/bin/rsync",
archive = true,
hard_links = true,
acls = true,
xattrs = true,
sparse = true,
compress = true,
_extra = {
"--compress-level=2",
"--partial",
"--partial-dir=.rsync-partial",
"--bwlimit=500M",
"--timeout=300",
"--delete-after",
},
rsh = "ssh -c aes128-gcm@openssh.com -o Compression=no -T -i /root/.ssh/rsync_key",
},
}
Параметр delay = 5 и maxDelays = 500 — ключевые для производительности. Lsyncd не запускает rsync на каждый изменённый файл, а группирует изменения за 5-секундное окно (до 500 файлов) в один вызов rsync. Это критически важно при массовой записи — например, когда видеоредактор сохраняет проект из 200 файлов.
Оставить комментарий