Server/Linux

[Linux] 윈도우 서버와 우분투 파일 동기화 쉽게 하기(LSync,rsync 사용법)

Hannana. 2024. 2. 18. 18:12
반응형

scp를 이용해서 디렉토리를 주고 받는 방법이 가장 익숙하지만

변동이 많은 프로젝트를 이렇게 주고 받는 건 비효율적이라는 생각이 들어서

실시간 연동이 가능한 동기화 방법을 찾아봤다.

그래서 찾아보니 LSync를 많이 이용하는 것을 알게 되었다.

 

 

▶[리눅스] 우분투 서버에서 LSync 설정

1. LSync 설치:

sudo apt-get update 
sudo apt-get install lsyncd

 

 

 

2. LSync 설정 파일 생성:

LSync는 설정 파일을 통해 동작한다.

/etc/lsyncd/lsyncd.conf.lua <- 이 경로에 설정 파일을 생성하고, 원하는 설정을 추가한다.

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

sync {
    default.rsync,
    source = "/path/to/source",
    target = "user@windows_server:/path/to/target",
}

 

위 설정은 /path/to/source의 변경 사항을 user@windows_server:/path/to/target로 동기화하는 설정이라고 보면 된다.

본인은 vi로 서버에서 직접 설정 파일을 작성하려고 했으나 들여쓰기 등 작성이 쉽지 않아서

그냥 윈도우에서 메모장으로 

 

이렇게 작성해주고 scp로 해당 경로에 설정 파일을 넘겨줬다..ㅎㅎ

참고로 일부 우분투 버전에서 /etc/lsyncd/ 디렉토리가 자동으로 생성되지 않으니

수동으로 디렉토리를 만들어 주어야 한다.

 

 

 

3. LSync 실행:

sudo systemctl start lsyncd
sudo systemctl enable lsyncd

 

 

 

 

 

 

 

▶[윈도우] 윈도우 서버에서 RSync 설정

  1. 클라이언트 프로그램 설치:

rsync는 유닉스 및 리눅스 시스템에 기본적으로 포함되어 있는 모듈이다.

기본적으로 윈도우 환경에서는 rsync를 직접적으로 실행할 수 없다..

때문에 리눅스 환경을 구현해주는 클라이언트 프로그램이 별도로 필요하다.

Cygwin 또는 DeltaCopy와 같은 RSync 클라이언트를 윈도우 서버에 설치해야하는데

개인적으로 나는 시그윈을 설치했다.

 

Cygwin

Cygwin Get that Linux feeling - on Windows This is the home of the Cygwin project What... ...is it? Cygwin is: a large collection of GNU and Open Source tools which provide functionality similar to a Linux distribution on Windows. a DLL (cygwin1.dll) which

www.cygwin.com

 

설치파일을 실행하다가 패키지 설정 부분이 나오면 net > lsync 를 함께 설치해준다.

 

이렇게 같이 설치해주기

 

2. LSync 설정:

 

RSync 클라이언트를 사용하여 윈도우 서버에서 원격 동기화를 수행하는 스크립트를 작성한다.

 

Cygwin shell:

C:\DeltaCopy\rsync.exe -avz -e ssh user@ubuntu_server:/path/to/source /path/to/target

 

여기서 user@ubuntu_server는 우분투 서버의 사용자 및 호스트 주소를 나타낸닷.

rsync -avz /cygdrive/c/Users/Username/LocalFolder/ username@remote_host:/path/to/remote/folder/

 

(참고) /cygdrive/c/Users/Username/LocalFolder/ => 로컬 윈도우 디렉토리

username@remote_host:/path/to/remote/folder/ => 원격 서버의 디렉토리

 

만약 서버 접속 시 사용자키 인증이 필요하다면

-avz 다음에 

-e 'ssh -i /cygdrive/c/Users/{사용자명}/.ssh/gcp_key' 를 추가하자.

C:/Users/{사용자명}/.ssh와 같은 의미다. 윈도우의 파일들은 /cygdrive 하위에 저장된다.

 

이 설정을 기반으로 우분투 서버에서 윈도우 서버로 변경 사항을 전송하고, 윈도우 서버에서는 원격지의 변경 사항을 가져와 동기화할 수 있음.

 

 

 

근데 매번 시그윈 쉘 열고 저 명령어 붙여넣기 너~무 너무 귀찮으므로

배치파일 만들자.

 

 

 

길고 긴 명령어를 배치파일화하고 

시그윈 쉘에서 해당 명령어를 수행할 수 있도록 bash를 앞에 붙여준다.

 

 

※ 

 

- Windows Subsystem for Linux (WSL) 이 설치되어있으면 bash를 실행했을 때 시그윈 쉘이 실행되지 않고 충돌 발생

-> 시그윈 쉘에 접속할 수 있는 전체 경로를 적어준다.

 

- 원래 명령어는 " " <- 쌍따옴표로 묶어준다. 

-문법을 잘 인식할 수 있도록 기존의 ssh 명령어는 ' ' <- 따옴표로 바꿔준다.

- 배치 파일에서 ssh 경로가 인식되지 않는 문제가 발생 

=> 시그윈 쉘에서 ' which ssh' 명령어 실행하여 ssh 경로 확인하고 

배치 파일 명령어도 풀 경로를 기재해준다. ------> (해결 완료)

 

 

시그윈 쉘 명령어 실행 모습

 

 

 

윈도우 커맨드 창에서 배치파일을 실행한 모습

 

rsync 명령어가 실행되는 것을 볼 수 있다.

이제 간편하게 리눅스-윈도우 파일 동기화가 가능해졌다...

 

프로젝트 진행할 때 아주 유용할 것 같다...

 

 

 

반응형