lsyncd를 사용하여 한 Linux 시스템에서 다른 Linux 시스템으로 일부 파일을 동기화하고 싶습니다. 파일은 하나의 디렉토리로 제한되지 않으며 모든 파일이 하나의 디렉토리에 있는 것도 원하지 않습니다.
특히 특정 메일 서버 파일이 대체 서버와 동기화되도록 노력하고 있습니다. 목록은 다음과 같습니다.
/etc/postfix/master.cf /etc/postfix/main.cf /etc/postfix/blocked_senders /etc/postfix/relay_recipients /etc/mail/spamassassin/local.cf
일종의 목록을 통해 단일 동기화 섹션에서 이러한 파일을 모두 지정할 수 있습니까, 아니면 별도의 동기화 섹션에서 각 개별 파일을 구성해야 합니까?
답변1
나는 추천한다
--[[
The _extra= hack allows synchronization of individual files. Use one sync {}
stanza per source directory. Use additional --include= lines to handle multiple
files within a single source directory.
]]
sync {
default.rsync,
delay = 0,
source = "/etc/postfix/",
target = "standby.example.com:/etc/postfix/",
rsync = {
_extra = {
"--include=master.cf",
"--include=main.cf",
"--include=blocked_senders",
"--include=relay_recipients",
"--exclude=*",
}
}
}
sync {
default.rsync,
delay = 0,
source = "/etc/mail/spamassassin/",
target = "standby.example.com:/etc/mail/spamassassin/",
rsync = {
_extra = {
"--include=local.cf",
"--exclude=*",
}
}
}
lsyncd가 디렉터리 수준에서 설정된 트리거를 통해 변경 사항을 효과적으로 감지하기 때문에 각 소스 디렉터리에는 sync{} 섹션이 필요하다고 생각합니다.
답변2
이것은 오래된 것이지만 David의 응답을 "lsyncd" 컨텍스트에 넣고 싶었습니다. 예제 구성은 다음과 같습니다(내 시스템 중 하나에서 테스트 및 확인됨).
sync {
default.rsyncssh,
source = "/tmp",
host = "gw2",
targetdir = "/tmp",
delete = false,
rsync = { _extra = { "--files-from=/etc/lsyncd/files.list" } }
}
/etc/lsyncd/files.list 파일에는 "대상"(여기서는 /tmp)에 대한 상대 경로와 동기화하려는 파일이 포함되어 있습니다.
답변3
파일에 저장파일 목록
rsync -a --files-from=file_list /source /dest
이 5개 파일만 있는 경우 -c(체크섬 확인) 및 -z(압축) 옵션을 사용할 수도 있습니다.