
Wir experimentieren mit lsyncd, um Daten von Server 1 zu Server 2 synchron zu halten. Alles schien gut zu funktionieren, aber wir stellten fest, dass Unterschiede in den Dateien auftraten.
Wir beschäftigen uns mit Prozessen, die die Ausgabe von Jobs in Dateien auf der Festplatte schreiben. Diese Jobs löschen alle vorhandenen Ausgabedateien und erstellen dann eine neue mit demselben Namen, um die Ausgabe zu schreiben. Die Größe der Ausgabedateien kann von wenigen Bytes bis zu 40 GB reichen.
Wir haben die folgende Konfiguration entwickelt, damit die Änderungen an den Ausgabedateien von lsyncd erkannt, auf den Remote-Server übertragen und vor Ort aktualisiert werden, anstatt nach jeder Dateiaktualisierung die gesamte Datei immer wieder zu übertragen.
Dieses Update scheint uns jedoch bei sehr kleinen Dateien in den Hintern zu beißen, wenn beispielsweise nur ein Datum in der ersten Zeile der Datei aktualisiert wird. Das Skript löscht die Datei, platziert die Ausgabe des Jobs in einer neuen Ausgabedatei mit demselben Namen und das alles geht so schnell, dass lsyncd es nicht zu bemerken scheint.
Kann mir hier jemand helfen, das herauszufinden?
Dies ist die aktuell laufende Konfiguration. Wir verwenden derzeit 4 Eingabeverzeichnisse, um die Dinge aufgrund der Datenmenge, mit der wir arbeiten, etwas zu beschleunigen.
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