실시간 파일 동기화


22

디스크에 파일을 쓴 직후에 둘 이상의 Linux 서버간에 파일을 동기화하는 데 사용할 수있는 도구가 있습니까? rsync내가 설정 한 경우 때문에 명령은,이 날 적합하지 않습니다 rsync크론, 나는 설정할 수있는 최소 시간은 1 분입니다,하지만 난 실시간으로 필요.


2
하나의 읽기-쓰기 서버에서 하나 이상의 읽기 전용 서버로 동기화해야합니까, 양방향 동기화 (양방향 전파) 또는 n-way가 필요합니까? 양방향을 원한다면 어떻게 갈등을 해결합니까?
Gilles 'SO- 악마 그만해

답변:


18

직접 사용하지 않았지만 최근에 읽었습니다. 라는 데몬 lsyncd이 있습니다. 필요한 것을 정확하게 수행한다고 가정합니다.

여기 에 대해 더 읽어보기


2
IMHO, 이것은 받아 들여지는 대답이어야합니다. lsyncd용도 inotify및은 FS 수준에서 가장 빠른해야한다. github.com/axkibe/lsyncd 에서 자세히 알아보십시오 . 해당 페이지에서 : Lsyncd는 로컬 디렉토리 트리 이벤트 모니터 인터페이스 (inotify 또는 fsevents)를 감시합니다. 몇 초 동안 이벤트를 집계 및 결합한 다음 하나 이상의 프로세스를 생성하여 변경 내용을 동기화합니다. 기본적으로 이것은 rsync입니다. 따라서 Lsyncd는 새로운 파일 시스템이나 블록 장치를 필요로하지 않고 비교적 쉽게 설치할 수 있고 로컬 파일 시스템 성능을 저해하지 않는 경량 라이브 미러 솔루션입니다.
SACHIN GARG

5

Inotify 도구

inotify로 구성된 인터페이스를 제공하십시오 .

inotifywait

이 명령은 단순히 inotify 이벤트를 차단하여 쉘 스크립트에 사용하기에 적합합니다. 파일 및 디렉토리 세트를 볼 수 있으며 전체 디렉토리 트리를 재귀 적으로 볼 수 있습니다.

inotifywatch

이 명령은 파일 시스템 사용 통계를 수집하고 각 inotify 이벤트의 수를 출력합니다.


4

다중 마스터 모드에서 여러 서버 간의 실시간 파일 동기화

lsyncd여러 서버간에 파일을 실시간으로 동기화하기 위한 유용한 도구가 있습니다 . 여기서는 두 대의 서버로 시도했습니다.

호스트 : Server1 및 Server2

사용되는 OS : CentOS 7

두 서버 모두에 아래 패키지를 설치하십시오.

# yum install -y epel-release
# yum -y install lua lua-devel pkgconfig gcc asciidoc lsyncd

두 서버 모두에서 ssh-key를 생성하고 authorized_keys파일에 추가 하십시오. [server1의 authorized_keys공개 키를 server2에 추가하고 server2의 공개 키를 server1의 authorized_keys파일에 추가]

서버 1 구성

줄의 시작 부분을 /etc/lsyncd.conf사용하여 기본 구성을 열고 주석 처리하고 --아래 구성을 파일에 추가하십시오.

settings {
  logfile = "/var/log/lsyncd/lsyncd.log",
  delay = 1
}
sync {
  default.rsync,
  source="/home/test/public_html/",
  target="server2:/home/test/public_html/",
  rsync = {
    compress = true,
    acls = true,
    verbose = true,
    owner = true,
    group = true,
    perms = true,
    rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"
  }
}

target매개 변수 에서 대상 IP를 변경하십시오 .

delay요구 사항에 따라 매개 변수를 변경할 수 있습니다 . 여기서 1 초로 설정됩니다.

이제 로그 디렉토리를 작성하십시오.

# mkdir -p /var/log/lsyncd

활성화 lsyncd자동으로 시작하는 서비스를.

# systemctl enable lsyncd.service

서비스를 시작하십시오.

# systemctl start lsyncd.service

서버 2 구성

Server1과 동일한 구성을 따르고 targetIP를 변경하십시오 .

이제 동기화가 설정되었습니다.

당신은 활동을 확인할 수 있습니다 tailf /var/log/lsyncd/lsyncd.log

그의 제안에 대해 MelBurslan에게 감사드립니다.


설정 기능의 지연 파라미터가 유효하지 않습니다. maxDelays 변수를 대신 사용하십시오 . 이 도구를 구현했습니다. 정말 강력합니다.
Hasanuzzaman Sattar

3

동기화 는 옵션 일 수 있습니다. 전송 속도가 매우 빠르며 여러 플랫폼에 대한 클라이언트가 있습니다. "inotify"를 사용하여 변경된 파일을 즉시 동기화합니다.


2

클러스터 된 파일 시스템 유형 솔루션을 사용하여이 방식에 접근해야합니다. 두 시스템 간의 간단한 동기화는 실시간 응답을 제공하지 않습니다.


실제로 해당 서버는 AWS에 있습니다. 따라서 클러스터 환경을 얻을 수 없습니다! 다른 방법이 없습니까?
Sourav

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.