Lsyncd 缺少小文件更新

Lsyncd 缺少小文件更新

我们正在尝试使用 lsyncd 来保持服务器 1 到服务器 2 的数据同步。一切似乎都工作正常,但我们发现文件开始出现差异。

我们正在处理将作业输出写入磁盘上的文件的进程。这些作业删除任何现有的输出文件,然后创建一个同名的新文件来写入输出。输出文件的大小范围可以从几个字节到 40G。

我们提出了以下配置,以便 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

相关内容