Lsyncd에 작은 파일 업데이트가 누락되었습니다.

Lsyncd에 작은 파일 업데이트가 누락되었습니다.

우리는 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

관련 정보