私たちは、lsyncdを使用してserver1とserver2のデータを同期したままにしようとします。すべてがうまくいくようですが、ファイルに違いが現れ始めました。
作業出力をディスク上のファイルに書き込むプロセスを扱っています。これらのアクションは既存の出力ファイルを削除し、出力を書き込む同じ名前の新しいファイルを作成します。出力ファイルサイズは数バイトから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