상태
윈도우7 D:\Gallery 에 파일들이 있음.
나스용에는 CentOS 6.8 이 설치되어 있음. rsync 있음. 별도로 rsync데몬을 실행한 상태는 아님.
나스아이피주소 192.168.0.9 - 계정명 daehan - 웹용 디렉토리는 /home/daehan/webdir/Gallery
상황
리눅스에 이미 예전 사진파일들이 올라가 있지만
윈도우에서 Gallery의 사진들을 폴더별로 다시 정리한 파일들을 나스로 복사해서 동기화 하려고 함.
윈도우 -> 리눅스로 전송&동기화 하는것임.
이 상황에서는 윈도우가 서버이고 리눅스가 클라이언트라고 봐야하나...
rsync 로 할랬는데 윈도우용이 안보여서 찾아봤는데 너무 어려워 ㅜㅜ
https://www.itefix.net/content/cwrsync-free-edition
여기가서 파일을 다운받아서 봤는데 rsyncd.conf 가 안보여 ㅜㅜ
혹시몰라 백업용으로 올려두기.
cwRsync_5.5.0_x86_Free.zip
대충압축풀어서 cwRsync_5.5.0_x86_Free 폴더를 D:\Gallery 폴더안으로 이동.
에디터로 cwrsync.cmd 파일을 열어 봄.
죄다 주석으로 설명만 있고 보니깐
C:\WORK\* --> /cygdrive/c/work/* --> /cygdrive/드라이브명(c,d,e)/디렉토리인듯 싶음.
맨 밑줄에 테스트로 추가해 봄. (마지막에 옵션지정하는거 올려둠)
rsync -avru --delete /cygdrive/d/Gallery/업로드테스투 daehan@192.168.0.9:/home/daehan/webdir/Gallery
D:\Gallery\업로드테스투 폴더를 나스의 /home/daehan/webdir/Gallery 디렉토리 안에 복사(?)
-a(그냥다른사람들도 쓰길래) / -v(상태보여준다니) / -r(서브디렉토리까지) / -u(새로운애들만. 빼면 할 때마다 쓰는듯)
--delete 옵션은 폴더정리로 윈됴에서 이동된 파일들을 리눅스에서 정리해주기위해. 이 기능때문에 rsync쓰는겨...
혹 ssh 포트를 바꿔준 경우라면 예) 2048번포트
rsync -avru --delete -e 'ssh -p 2048' /cygdrive/d/Gallery/업로드테스투 daehan@192.168.0.9:/home/daehan/webdir/Gallery
처럼 -e 옵션에 포트지정하는거 넣어주면 된다.
저장하고 cwrsync.cmd 더블클릭하니 daehan 의 로그인패스 입력하라고 함.
로그인패스 입력하니 뭐가 주르룩 지나간 다음 창히 훅 닫힘.
쉘로 접속해서 보니 /home/daehan/webdir/Gallery 디렉토리밑에 업로드테스투 디렉토리가 777모드로 만들어져있음.
drwxrwxrwx. 7 daehan daehan 4096 2016-11-13 18:00 업로드테스투
아! 그러고 보니 Gallery 디렉토리도 웹에서 멋대로 할려고 모두 777로 정해놨네...
다른 환경에서는 추가로 퍼미션 문제가 있을지 어쩔지는 모르겠넹...
검색해서 다른 글들을 보니 윈됴경로 쓸 때 뒤에 '/'를 붙이면 업로드테스투 폴더는 안되고 폴더안의 파일들만 된다네.
/cygdrive/d/Gallery/ 이렇게 해주면 Gallery 폴더안의 파일들이 몽땅 되는것이긋지.
근데 난 안올려야 될 것들도 같이 있으니 미련하게 따로 따로~
rsync -avru --delete /cygdrive/d/Gallery/가족사진 daehan@192.168.0.9:/home/daehan/webdir/Gallery
rsync -avru --delete /cygdrive/d/Gallery/여행사진 daehan@192.168.0.9:/home/daehan/webdir/Gallery
rsync -avru --delete /cygdrive/d/Gallery/일반짤방 daehan@192.168.0.9:/home/daehan/webdir/Gallery
rsync -avru --delete /cygdrive/d/Gallery/므흣짤방 daehan@192.168.0.9:/home/daehan/webdir/Gallery
pause
줄을 복사해서 cwrsync.cmd 파일 저장하고 했는데 하나 할 때마다 로그인패스 입력하라네...ㅜㅜ
이거 쉽게 하는거 글을 찾았는데 창을 닫아버렸더니 다시 못찾겠다.
top으로 보니 sshd하고 rsync하고 바쁘게 뭔가를 하더라.
주의
퍼미션 설정때문인지
rsync: failed to set times on "파일이나디렉토리이름" Operation not permitted (1)
라는 오류가 나오는데.. 그룹까지 정해줬는데 왜이랴..
찾아보니
기본옵션인 -avz 대신에 -avzO 를 사용하면 해당 에러구문을 피할 수 있습니다.
고는 하는데 오류가 많이 줄어들었지만 제대로 동기화되는지 확인을 못해봤다.
부록 : rSync 옵션.. 어디서 퍼왔는지 기억이 안남 ㅜㅜ
-a : archive mode (심볼릭 링크, 속성, 퍼미션, 소유권 등 보존)
-v 진행상황을 상세히 보여줌
-r 지정한 디렉토리의 하위 디렉토리까지 재귀적으로 실행
-l 소프트링크 보존
-H 하드링크 보존
-p 버전속성 보존
-o 소유속성 보존(루트)
-g 그룹속성 보존
-t 타임스탬프 보존
-D 디바이스 파일보존(루트)
-z 데이터압축 전송
-u 추가된 파일만 전송
-b 낡은 파일은 ~가 붙음
-u 새로운 파일을 덮어쓰지 않음
-c 서버와 클라이언트 파일크기를 세밀히 체크
-e ssh(rsh) 전송암호화
--existing : 추가된 파일은 전송하지않고 갱신된 파일만 전송
--delete : 서버에 없는 파일은 클라이언트에서도 삭제
--exclude 'PATTERN' : 패턴과 맞는 파일만 전송
--stats : 결과를 보고
--daemon : 대몬모드로 운영함(이건 inetd.conf에 지정할 때 필요함)