윈도우에서 rsync 간편하게 사용하기

몇 달 전에 올린 “윈도우에서 scp 간편하게 사용하기“와 비슷한 것입니다.
이 번에는 rsync를 이용하는 것입니다.
scp와 비교했을 때 장점은 한글 파일명이 그대로 유지된다는 것과 rsync의 기능을 이용한다는 것입니다.
전 한글 처리 문제 때문에 이 방법으로 사용합니다. scp에서 설명했던 서버로 전송 후 한글 파일명으로 변환하는 작업이 필요없습니다.

먼저 이 팁의 결과로 사용하게 될 방법은 아래와 같습니다.
사용자 삽입 이미지서버로 전송할 파일이나 디렉토리를 선택하고 마우스 오른쪽 버튼을 눌러 클릭만 해주시면 미리 지정된 서버의
특정 위치로 전송됩니다. 디렉토리 선택 시 그 안에 있는 모든 파일이 전송됩니다.
사용자 삽입 이미지
  다음은 이 팁에서 필요한 파일입니다.

1127416995.reg          – 쉘 컨텍스트 메뉴를 만드는 레지스트리 파일

CygwinPath.exe      – 탐색기에서 선택된 파일의 경로를 Cygwin 형식의 경로로 변환하고, rsync를 실행하는 프로그램

1255671199.dll        – 한글 파일명 지원 dll 파일(cwRsync 4.0.4부터는 필요없습니다. ermaker 님 제보. 2010-04-05)

1. rsync 설치

먼저 윈도우에서 rsync를 사용하기 위해 아래 링크에 있는 cwRsync를 설치합니다.
http://cdnetworks-kr-1.dl.sourceforge.net/project/sereds/cwRsync/4.0.4/cwRsync_4.0.4_Installer.zip

한글 파일명을 지원하기 위하여 첨부된 cygwin1.dll을 cwRsync가 설치된 bin 디렉토리(c:\Program Files\cwRsync\bin\)에 덮어쓰기합니다.(cwRsync 4.0.4부터는 필요없습니다.
2010-04-05)

파일 전송시 암호를 물어보는 것을 없애기 위해서는

ssh-keygen.exe -t rsa 를 실행한 후 아래와 같은 메시지가 보이면..

Enter file in which to save the key (/home/root/.ssh/id_rsa):

c:\Documents
and Settings\Administrator\.ssh\id_rsa

를 입력(접속한 윈도우 계정에 적절히 수정)하고, 엔터키를 칩니다.

그 이후 물어보는 passphrase는 그냥 엔터키를 두 번쳐서 넘어갑니다.

c:\Documents
and Settings\Administrator\.ssh\에(접속한 윈도우 계정에 따라 경로는 달라질 수 있습니다) 생성된
id_rsa.pub의 내용을 서버의 authorized_keys에 추가합니다.

위 과정까지 되면 cwRsync가 설치된 디렉토리에 가서 명령 프롬프트에서 ssh root@서버IP 명령으로 접속되는지 확인해보세요.. 접속되어야 됩니다.

2. CygwinPath 설치

첨부된 파일 중 CygwinPath.exe를 받아서 특정 위치에 복사합니다.

이 프로그램은 쉘컨텍스트 메뉴를 통해 클릭된 파일 또는 디렉토리의 경로를 Cygwin 형식의 경로로 변환하고, 넘겨받은 첫 번째 파라미터 정보를 이용하여 프로그램을 실행하는 역할을 합니다.

즉, c:\tmp\abc.zip과 같은 형식을 /c/tmp/abc.zip 형식으로 변환하고, rsync.exe를 실행하는 기능을 합니다.


3. 쉘 컨텍스트 메뉴 추가

첨부된 파일 중 rsync.reg를 받은 후 확장자가 .reg가 아니면 .reg로 수정한 후 텍스트 편집기에서 열어서 CygwinPath.exe의 위치, 설치한 rsync.exe의 위치, 전송할 서버의 정보, 컨텍스트 메뉴명을 수정하고 저장한 후 더블클릭하여 레지스트리에 추가하면 됩니다.

아래에 보이는 것처럼 경로 설정 시 주의바랍니다. \\ 두 개입니다.

쉘 컨텍스트 메뉴 레지스트리 (Language : text)
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\Shell\FFT.kr(/volume1/tmp/)에 올리기(rsync)\Command]
@=”X:\\Utility\\network\\CygwinPath.exe \”C:\\Progra~1\\cwRsync\\bin\\rsync.exe -avzP –chmod=ug=rwx –delete -e c:\\Progra~1\\cwRsync\\bin\\ssh.exe /cygdrive/[%1] root@fft.kr:/volume1/tmp\””

[HKEY_CLASSES_ROOT\Directory\shell\FFTkr_rsync]
@=”FFT.kr(/volume1/tmp/)에 올리기(rsync)

[HKEY_CLASSES_ROOT\Directory\shell\FFTkr_rsync\command]
@=”X:\\Utility\\network\\CygwinPath.exe \”C:\\Progra~1\\cwRsync\\bin\\rsync.exe -avzP –chmod=ug=rwx –delete -e c:\\Progra~1\\cwRsync\\bin\\ssh.exe /cygdrive/[%1] root@fft.kr:/volume1/tmp/\””

위 설정에서 rsync의 옵션을 적절히 수정하여 사용해도 됩니다.

4. 테스트

탐색기에서 파일 또는 디렉토리를 선택하고, 마우스 오른쪽 버튼을 클릭하여 파일을 전송합니다.
서버로 접속하여 파일이 전송되었는지 확인합니다.
파일의 그룹 소유자가 401처럼 숫자로 나올 경우 /etc/group에 해당 그룹ID(401)를 가진 그룹을 추가하면 됩니다.