본문 바로가기

Coding/Handling Ubuntu

서버와 서버 동기화 하기(lyncd 설정법, conf 예제)

본 서버는 A(가명)라는 서버이나 새로 계산서버 B(가명)라는 것을 사용할 때 서버 간 동기화 작업(B와 A의 데이터 일치)이 필요할 수 있는데요. 이를 위해 사용할 수 있는 프로그램 중 lsyncd라는 것이 있습니다.

 

본인이 직접 사용하면서 설정했던 방법을 정리합니다.

 

사실 설정은 간단한데, 위에 보이시는 것처럼 Target Server에서는 (1) rsync가 설치되어 있고, Source Server에는 (2) lsyncd가 설치되어 있는 상태에서 (3) ssh-key 생성 및 등록, (4) conf파일을 통해 실행시키면 됩니다.

 

보통 따로 설치하지 않아도 rsync는 Ubuntu에 설치되어 있습니다. 따라서 일반적으로는 2번부터 진행하시면 됩니다.

 

 

- 설치

 

 

1. Target Server에서 rsync 설치

sudo apt update
sudo apt install rsync

 

2. Source Server에서 lsyncd 설치

sudo apt update
sudo apt install lsyncd

 

3. ssh-key 생성 및 등록

https://linuxize.com/post/how-to-set-up-ssh-keys-on-ubuntu-1804/를 참고하세요.

 

4. lsyncd.conf 파일 생성, 설정 후 lsyncd 실행

vi등을 이용하여 아래와 같은 내용을 가지고 있는 lsyncd.conf 파일을 만듭니다.

settings {
    logfile = "/data/username/lsyncd.log",
    log = "all",
    statusFile = "/data/username/lsyncd-status.log",
    statusInterval = 20
}

sync {
   default.rsyncssh,
   source="/data/username/Workspace/Project1",
   host="username@144.12.144.12",
   targetdir="/data/username/backup/gcp_backup",
   delete=false,
   rsync = {
     archive = true,
     compress = false,
     whole_file = false
   },
   ssh = {
     port = 22
   }
}

이후 

lsyncd lsyncd.conf

하시면 lsyncd가 실행됩니다.

 

- 부가 설명

기본적으로 lsyncd manual(default.rsyncssh 섹션 참조)에서 제시해주는 config를 조금 수정해서 사용하였습니다.

Target Server의 ip가 "144.12.144.12", 사용하는 id가 username이라고 가정하였습니다.

 

기본 매뉴얼에서 2가지가 추가되었는데, delete = false 부분과 log = "all" 부분입니다. 이 부분은 개인적인 사항입니다.

허나 delete = false 같은 경우 Source에서 파일이 삭제된다고 해도 Target에서 지우지는 않게 하는 옵션입니다. 실수로 Source에서 삭제를 해도 Target에는 남아있으니 유용한 옵션이라고 생각됩니다. (제가 이 옵션을 활성화하지 않은 체 Source에서 삭제를 해서 데이터를 날려버린 건 안비밀.)

 

도움이 되셨다면 공감을, 질문이나 잘못된 점은 댓글 부탁드립니다.