몇 달 전에 올린 “윈도우에서 scp 간편하게 사용하기“와 비슷한 것입니다.
이 번에는 rsync를 이용하는 것입니다.
scp와 비교했을 때 장점은 한글 파일명이 그대로 유지된다는 것과 rsync의 기능을 이용한다는 것입니다.
전 한글 처리 문제 때문에 이 방법으로 사용합니다. scp에서 설명했던 서버로 전송 후 한글 파일명으로 변환하는 작업이 필요없습니다.
먼저 이 팁의 결과로 사용하게 될 방법은 아래와 같습니다.
서버로 전송할 파일이나 디렉토리를 선택하고 마우스 오른쪽 버튼을 눌러 클릭만 해주시면 미리 지정된 서버의
특정 위치로 전송됩니다. 디렉토리 선택 시 그 안에 있는 모든 파일이 전송됩니다.
다음은 이 팁에서 필요한 파일입니다.
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의 위치, 전송할 서버의 정보, 컨텍스트 메뉴명을 수정하고 저장한 후 더블클릭하여 레지스트리에 추가하면 됩니다.
아래에 보이는 것처럼 경로 설정 시 주의바랍니다. \\ 두 개입니다.
위 설정에서 rsync의 옵션을 적절히 수정하여 사용해도 됩니다.
4. 테스트
탐색기에서 파일 또는 디렉토리를 선택하고, 마우스 오른쪽 버튼을 클릭하여 파일을 전송합니다.
서버로 접속하여 파일이 전송되었는지 확인합니다.
파일의 그룹 소유자가 401처럼 숫자로 나올 경우 /etc/group에 해당 그룹ID(401)를 가진 그룹을 추가하면 됩니다.
좋은 팁 이네요.. 근데 이건 파일 하나씩만 가능한데… 여러 파일을 선택 해서 하려면 어떻게 해야 할까요?
여러 개 지원됩니다.
파일 또는 폴더를 여러 개 동시에 선택하고 클릭하면 됩니다.
좋은 프로그램 감사합니다.
저는 모두 윈도우 기반인 A라는 서버에서 B라는 서버로 동일한 경로에 복사해주고 싶은데요.
/cygdrive/[%1] 까지는 정상적으로 적용되는데 B서버:/cygdrive/[%1] 는 CygwinPath 가 적용이 안되더군요.
혹시 가능할까요?
예) rsync /cygdrive/[%1] B서버:/cygdrive/[%1]
윈도우에서 윈도우 서버로 보내는 것은 생각하지 못했네요..
수정 완료하였습니다.
CygwinPath.exe를 다시 받아서 해보세요..
고맙습니다.
아~ 빠른 답변 감사합니다^^
혹시나 해서 들어왔는데 바로 수정해주시네요.
감사합니다.
문의 좀 드릴려고 합니다.
리눅스(안녕 – rsync-2.6.2-2)의 자료를 윈도우(cwrsync설치)에 rsync를 이용해서 백
업하려고 테스트 중입니다.
테스트를 위한 한두개 파일과 한글파일에 대한 테스트는 됐습니다.
/dev/sda2 67G 57G 7.5G 89% /home
/dev/sda7 48G 42G 4.0G 92% /home1
위의 파티션 백업을 받으려고 하는데
home과 home1 따로 rsync 설정해놨습니다.
C:\Program Files\cwRsync\bin>rsync -avz 아이피주소::설정코멘트(home) /cygdrive/
j/home
receiving file list … overflow: flags=0x3a l1=52 l2=237 lastname=폴더명/pu
blic_html/******/게시판/data/menu_02_02/1196905121_ThumFile1.jpg
ERROR: buffer overflow in receive_file_entry [receiver]
rsync error: error allocating core memory buffers (code 22) at util.c(121) [rece
iver=2.6.9]
이런식의 에러가 나면서 계속 안됩니다…
무엇이 문제인지 어떻게 처리해야할지 문의 드립니다….
——————————————————————————-
추가
백업 계속 테스트 중인데
46GB짜리와 48GB짜리 두개를 테스트 했는데
두개다 40~45GB 사이 정도 받다가
sent 7469182 bytes received 41045252639 bytes 1753602.95 bytes/sec
total size is 47244535488 speedup is 1.15
rsync error: some files could not be transferred (code 23) at main.c(1385) [gene
rator=2.6.9]
이런 에러와 함께 멈춥니다.
윈도우에서는 치명적 오류 창이 뜨고요…
윈도우용으로는 저 용량 한계가 있는건지… 아님 어떤 설정으로 변경이 가능한건지..
.
파일 크기가 너무 크서 테스트해 볼 엄두가 나지 않네요..
일단 백업 받을 곳의 디스크 공간이 충분한지 확인하시고,
옵션을 -avzO로 변경해보세요..
-avzO에서 마지막은 숫자0이 아닌 알파벳 대문자 O입니다.
답변 감사드립니다.
하드 용량은 300GB이상 여유가 있습니다.
답변 주신 옵션으로 해봤는데
receiving file list … overflow: flags=0x3a l1=52 l2=237 lastname=폴더명/pu
blic_html/******/게시판/data/menu_02_02/1196905121_ThumFile1.jpg
ERROR: buffer overflow in receive_file_entry [receiver]
rsync error: error allocating core memory buffers (code 22) at util.c(121) [rece
iver=2.6.9]
이런 메세지와 함께 실행이 되지를 않습니다.
찾아보니 long file name 관련해서 rsync의 예전 버전에 에러가 있다고 합니다. 디렉토리 depth를 줄이거나 최신 버전으로 설치하라고 하네요..
답변 감사드립니다.
윈도우 rsync가 문제가 아닐지 생각되어집니다.
일단 리눅스끼리의 rsync-2.6.2-2 버전으로
서로 문제없이 되는걸 확인 했습니다.
윈도우용이 2.6.9버전인거 같은데 이게 혹 버그가 있는건 아닐까요?
예.. 제 생각에도 윈도우용 cwRsync에 버그가 있는 것 같습니다.
윈도우용 rsync를 다른 것으로 교체해보세요..
다시한번 답변 감사드립니다.
cwRsync_4.0.1_Installer 이 버전을 설치해서 실행하니 정상적으로 동작합니다. ㅎㅎ
감사합니다. 이젠 한글이 문제네요 ㅠㅠ 위에 올려놓으신 dll파일을 올리니 에러나면서 동작을 않합니다.
이거 어떻게 처리할 방법이 있을까 문의드려봅니다…
성공하셨군요..
한글 패치하는 cygwin1.dll은 어느 일본인이 패치해둔 것을 받아 왔는데요..
버전이 오래되어서 설치하신 cwRsync와 맞지 않는 듯합니다.
현재 제 블로그에 올려둔 것은 버전이 1.5.24입니다.
아래 링크는 버전 1.5.25입니다. 받아서 해보시고 결과 알려주세요.
http://fft.kr/tmp/cygwin1.dll
테스트 결과 4.0.1 이후 버전만 대용량이 정상적으로 되는걸 확인했습니다.(cwRsync 2.x 3.x 버전은 안됨)
문제는 한글이네요 위에 파일로 해봤는데 기본 용량부터 차이가 나며(원파일 : 2,419KB/패치파일 : 1,834KB)
“프로시저 시작 지점 __assert_func을 DLL cygwin1.dll에서 찾을 수 없습니다”란 에러와 함께 동작을 않하는군요 흠…
이부분만 해결되면 좋으련만 ㅠㅠ
4.0.2 설치해서 해봤는데요.. 역시나 한글 문제때문에 안되네요..
4.0.4로 테스트 해보니 한글문제가 사라진거 같아요. 한번 확인해보시겠어요?
확인해보니 4.0.4에서는 한글 문제가 해결되었네요.
cygwin1.dll의 버전이 1.7.2로 업데이트 되었네요.
고맙습니다.
cwrsync 4.0.4부터 한글 문제는 해결이 된 것 같지만 파일명 공백은 오히려 문제가 생긴 것 같습니다.
“” 이걸로 인식을 못하는군요..
자신의 자료에 따라 3.x.x 버전과 4.0.4 버전을 선택하며 써야 될 것 같습니다..
막 테스트했습니다.
저는 4.0.4에서 한글과 파일명에 공백 들어간 거 모두 정상적으로 전송됩니다.
리눅스에서 윈도우로 받아오는 과정에서 한글과 공백 문제가 없다고 하셨는데
윈도우에서는 cwrsync 4.0.4를 사용하셨을 것 같은데 리눅스에서는 어느 버전을 사용하셨나요?
저 같은 경우 리눅스에서 rsync 버전이 3.0.6이고 윈도우에서는 cwrsync 4.0.4인데
리눅스에 있는 공백이 있는 한글 제목 파일을 윈도우로 전송하니 전송은 되는데 파일명이 이상하게 들어오던데요?
리눅스에서는 rsync 데몬을 구동하지 않았습니다.
그냥 sshd로 접속한 것입니다.
정말 감사합니다. 답변이 굉장히 빠르시네요 ^^
혹여 –iconv 옵션은 사용하셨나요?
메신저로 바로 통보가 옵니다^^
rsync.reg 파일 열어서 명령 보시면 아시겠지만
–iconv은 사용하지 않았습니다.
아래처럼 사용했습니다.
rsync.exe -avzP –chmod=ug=rwx –delete -e ssh.exe ….
정말 감사드립니다.
^_________^
정말 죄송한데요 리눅스에서 윈도우로 받아오는 과정도 Test 해보신거지요?
윈도우에서 리눅스로 올리는 것 말고요?
위의 rsync.reg는 윈도우에서 리눅스로 올리는 것 같은데요….
예.. 반대는 사용할 일이 없어서.. 해보지 않았습니다.
정말 감사드립니다. 묵은 체증이 내려가는 것 같네요 ^^
죄송하지만 초보입니다 ㅠㅠ
인스톨을 했는데 cygwin1이 없다는 오류가 뜨길래 복사했습니다 (포스트상엔 없어도 된다고 나와있는데…)
그리고 설치 후 program files 폴더안에 생성된 cwrsync폴더에 실행파일이나 그런게 아무것도 없더군요
뭐 어쨋든 ssh키젠파일도 찾긴 했는데 위 설명대로
ssh-keygen.exe -t rsa 라고 cmd상에서 치니까
ssh-keygen.exe : unknwon option –t
ssh-keygen version 1.2.26
usage : ssh-keygen [-b bits] [-p] [-c] [-u] [-f file] [-p pass] [-N new-pass] [-C comment]
라고 출력이 되는군요
-t 옵션을 찾지를 못하는 것 같은데 버전차이의 문제인지 ;;;
흠.. ; 초보라 그런지 뭔가 막히는 부분이 너무 많은데..
어떻게 해야할 지 답이 안나오네요….
혹시 1:1대화가능한 메신져 같은게 있으시다면… 이것저것 몇가지 여쭙고 싶은게 있는데 ….
1. bin폴더에서 ssh-keygen -t rsa를 하니 엔터엔터 치다가 마지막에
Open /home Administrator/.ssh/id_rsa failed : No such file or directory.
Saving the key failed: /home/Administrator/.ssh/id_rsa.
라는 메세지가 출력이 되네요 디렉토리를 찾지 못해서 저장에 실패했다는 말 같은데 왜이럴까요
cwRsync가 업데이트 되면서 약간 달라진 점이 있었나 봅니다.
아래와 같은 메시지가 표시될 때
Enter file in which to save the key (/home/root/.ssh/id_rsa):
다음과 같이 수동으로 경로를 입력하시면 됩니다.
c:\\Documents and Settings\\Administrator\\.ssh\\id_rsa
본문에도 해당 내용을 수정했습니다.
고맙습니다.
아… 됐네요… bin 폴더안에 있었군요 ㅠㅠ
그걸로 하니까 일단 됐어요 위에글은 ;; 비밀번호를 입력을 안해서 삭제가 안되는군요 ㅠㅠ
삭제좀 부탁드릴께요 ㅠ_ㅠ
동일한 문제로 고생하시는 분들을 위해서 중복된 글 1개만 삭제하고 남겨두도록 하겠습니다.
안녕하세요? 오랜만에 다시 들립니다. isul께서 써주신 이 글 아직도 계속 보면서 참고하고 있습니다. 감사드립니다^^
제가 이렇게 비밀 댓글을 쓰는 이유는 cwrsync가 유료화가 되어서 인데요,
혹시 cwrsync가 유료화 되기 이전의 설치 파일을 가지고 있는게 있으신가요? 한글문제가 해결된 4.0.4 이후 버전이면 더욱 좋습니다. 유료화 이전 버전을 찾아보려고 노력했지만 사실상 어렵더라구요.
혹시 가지고 계시다면 ermaker gmail com 으로 연락 부탁드립니다.
어려운 부탁을 하게되어서 죄송하구요, 좋은 답변 기다리고 있겠습니다. 감사합니다^^
안녕하세요..
유료화 되었는지 모르고 있었네요..
저도 받아둔 게 없어서 찾아보았습니다.
아래 사이트에서 4.0.6 버전을 받을 수 있습니다.
http://www.softsea.com/review/cwRsync.html
외장하드로 자료 백업을 하기 위해 cygwinpath를 등록 했는데 아래와 같은 문제가 발생하고 있습니다.
등록 예제 : cygwinpath rsync /cgydrive/[d:\test] /cygdrive/f/[d:\test]
실행 예제 : rsync “/cygdrive/d/test” “:/cygdrive/f/d/test”
아마 조승제님께서 요청하셨던 부분을 해결하기위해 임의로 넣어주신 부분인 것 같은데 동일 서버 내에서 사용할 때는 어떻게 해야 될까요;;