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 설정
- 클라이언트 프로그램 설치:
rsync는 유닉스 및 리눅스 시스템에 기본적으로 포함되어 있는 모듈이다.
기본적으로 윈도우 환경에서는 rsync를 직접적으로 실행할 수 없다..
때문에 리눅스 환경을 구현해주는 클라이언트 프로그램이 별도로 필요하다.
Cygwin 또는 DeltaCopy와 같은 RSync 클라이언트를 윈도우 서버에 설치해야하는데
개인적으로 나는 시그윈을 설치했다.
설치파일을 실행하다가 패키지 설정 부분이 나오면 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 명령어가 실행되는 것을 볼 수 있다.
이제 간편하게 리눅스-윈도우 파일 동기화가 가능해졌다...
프로젝트 진행할 때 아주 유용할 것 같다...
'Server > Linux' 카테고리의 다른 글
putty ppk 파일을 openssh 개인키로 변환하기 (윈도우에서 EC2 접속 통로 만들기) (0) | 2024.12.08 |
---|---|
[Linux] 리눅스 서버에 패스워드없이 접속하기 / rsa 암호키 방식 / ssh-keygen (0) | 2024.02.03 |
[Linux] 리눅스에서 윈도우로 파일 전송하기 / 리눅스 scp 명령어 사용법 (0) | 2024.01.31 |
[Linux] 윈도우에서 리눅스 접속하기 / ssh 사용법 (0) | 2024.01.28 |
[Linux] 리눅스 yum install 시 failovermethod 오류 (0) | 2024.01.28 |