我们正在尝试使用 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