Lsyncd не обновляет небольшие файлы

Lsyncd не обновляет небольшие файлы

Мы экспериментируем с lsyncd, чтобы синхронизировать данные с сервера 1 на сервер 2. Все работало нормально, но мы обнаружили, что в файлах начинают появляться различия.

Мы имеем дело с процессами, записывающими вывод заданий в файлы на диске. Эти задания удаляют все существующие файлы вывода, а затем создают новый с тем же именем для записи вывода. Размер файлов вывода может варьироваться от нескольких байт до 40 ГБ.

Мы придумали следующую конфигурацию, чтобы изменения в выходных файлах подхватывались lsyncd и передавались на удаленный сервер и обновлялись на месте, вместо того чтобы снова и снова передавать весь файл после каждого обновления файлов.

Однако это обновление на месте, похоже, кусает нас за задницу с очень маленькими файлами, где, например, только дата будет обновлена ​​в первой строке файла. Скрипт удаляет файл, помещает вывод задания в новый выходной файл с тем же именем, и это происходит так быстро, что lsyncd, похоже, не замечает этого.

Кто-нибудь здесь может мне помочь разобраться?

Это текущая текущая конфигурация. В настоящее время мы работаем с 4 входными каталогами, чтобы немного ускорить процесс из-за объема данных, с которыми мы имеем дело.

settings {
   logfile = "/var/log/lsyncd/lsyncd.log",
   statusFile = "/var/log/lsyncd/lsyncd.status",
   statusInterval = 1,
   nodaemon   = false,
   inotifyMode = "CloseWrite or Modify",
   insist = true
}
dirs = {
    '/data/dir1',
    '/data/dir2',
    '/data/dir3',
    '/data/dir4',
}
for _, directory in ipairs( dirs )
do
sync {
        default.rsyncssh,
        source = directory,
        targetdir = directory,
        host = "remote_host",
        delay = 0,
        rsync = {
            compress = false,
            whole_file = false,
            update = true,
            inplace = true,
            checksum = true,
            owner = true,
            archive = true,
            perms = true,
            group = true,
            xattrs = true,
            _extra = { "--append-verify" },
            rsh = "/usr/bin/ssh -q -l lsyncd_ssh_user -i /home/lsyncd_ssh_user/.ssh/id_rsa -o StrictHostKeyChecking=no -o User=lsyncd_ssh_user"
        },
}
end

Связанный контент