rsync를 이용한 개인 PC의 원격지 백업방법

안녕하세요.
요새 바쁜 와중에도 자꾸 팁란에 글을 남기게 되네요.
일하기 싫어서 인거 같습니다.

여기 오시는 분들은 자기가 쓰는 PC의 데이타를 얼마나 자주 백업받는지 궁금하네요.

보통 한달에 한번이나 아니면 일주일에 한번 시디로 굽는다든가 하시죠.

근데 문제는 이렇게 하면 백업하는 것도 신경써줘야 하고, 갑자기 하드가 맛이 가는 경우가 생기면 참 난감해지죠. 작업하던 것이 모두 날라가게 되니까요.

보통 서버 같은 경우에는 여러 툴을 이용해서 백업을 받지만, 개인 PC같은 경우에는 그렇지 못한 경우가 많습니다.

그럼 각설하고…

rsync라는 툴에 대해서 들어보셨을 겁니다. 데이타의 미러링을 위해서 주로 쓰이고 있지요.

이걸 개인 PC에 쓰도록 하는 것이 오늘의 팁입니다.

필요한 설치 환경은 다음과 같습니다.

1. 서버(유닉스 호환이면 되겠죠: 이 서버에 데이타를 백업받습니다.)
서버에는 rsync및 ssh가 설치되어 있어야 합니다.
서버에 설치 부분은 언급하지 않겠습니다. 좋은 문서가 많으니까요.

2. 개인PC(윈도우머신)
윈도우용 rsync 및 ssh

———————————————————————-
윈도우용 rsync 및 ssh는 아래 사이트에 가보시면 다운 받을 수 있습니다.

http://optics.ph.unimelb.edu.au/help/rsync/binaries/
여러가지 파일이 있지만 필요한 파일은
cygwin1.dll
rsync246.exe
ssh.exe
ssh-keygen.exe

1. 위 파일을 다운 받아서 c:
sync 폴더에 저장합니다.
2. rsync246.exe 는 rsync.exe로 파일이름을 변경합니다.
(rsync.exe 버전이 여러개 있지만 2.46버전이 제일 안정적이었습니다.)
3. c:
sync 폴더에 다음과 같이 test.bat라는 파일을 만들어줍니다.
위의 사이트에서 rsetup.bat라는 파일을 받아서 수정하셔도 됩니다.

@echo off
set PATH=c:
sync;%PATH%
set CYGWIN=binmode tty
set TERM=ansi
set USERNAME=myusername <--- myusername을 서버의 자신의 계정이름으로 바꿉니다.
set HOME=c:
sync
set RSYNC_RSH=ssh.exe

4. 피시의 도스창에서 아래와 같은 작업을 해서 테스트 해봅니다.
4-1 c:
sync폴더에서 test.bat을 실행합니다.
4-2 마찬가지로 ssh.exe 서버아이피(혹은 URL)를 실행합니다

응답이 패스워드를 요구하고 패스워드 입력시 서버로 ssh접속이 되는지 확인해봅니다.

5. 위의 작업이 성공적이라면 이제 거의 다 하신 겁니다.
이제 rsync를 이용하는 배치 파일을 만들어 보겠습니다.
@echo off
set PATH=c:
sync;%PATH%
set CYGWIN=binmode tty
set TERM=ansi
set USERNAME=myusername <--- myusername을 서버의 자신의 계정이름으로 바꿉니다.
set HOME=c:
sync
set RSYNC_RSH=ssh.exe
rsync -e ssh -av –delete “/cygdrive/c/Documents and Settings/lum34/My Documents” 서버아이피(URL):/home/lum34/backup/
rsync -e ssh -av –delete “/cygdrive/c/rsync” 서버아이피(URL):/home/lum34/backup/
rsync -e ssh -av –delete “/cygdrive/e/mail” 서버아이피(URL)/home/centerbackup/lum34/backup/

이 파일을 mirror.bat라고 저장하세요.
여기서 /cygdrive/c/는 C: 드라이브입니다. D:드라이브는 /cygdrive/d/ 가 되겠죠.
위의 배치 파일은 제PC의 My Documents파일과 메일등을 서버의 lum34/backup 디렉토리로 복사하라는 명령입니다.
백업받으실 폴더명으로 바꿔주시면 됩니다.
옵션중에 –delete는 제 PC에서 사라진 데이타는 서버에서도 지우라는 것입니다.
옵션은 rsync에 대한 문서를 찾아보세요.

중요: 서버의 lum34 디렉토리 밑에 backup이라는 디렉토리는 직접 만들어 줘야 합니다. 이것을 만들어 주지 않으면 에러가 납니다. 단 그 하위 폴더는 자동으로 만들어 줍니다.

참고로
rsync -e ssh -av –delete “/cygdrive/c/Documents and Settings/lum34/My Documents” 서버아이피(URL):/home/lum34/backup/
rsync -e ssh -av –delete “/cygdrive/c/Documents and Settings/lum34/My Documents/” 서버아이피(URL):/home/lum34/backup/
의 차이는 위의 것이 My Documents라는 폴더를 만들고 그 하위의 폴더내용도 백업한다면
아래것은 My Documents 라는 폴더 밑의 것만 백업합니다. My Documents라는 폴더는 만들지 않습니다.

6. mirror.bat 파일을 실행합니다.
계정 암호를 물어볼겁니다. 암호를 넣으시면 백업할 파일 목록을 만들고 백업하는 과정을 보실 수 있을 겁니다.

7. 그런데 백업할 때마다 계정암호를 물어본다면 좀 귀찮죠.
보안상 안좋지만 이렇게 하면 됩니다.
7-1 ssh-keygen.exe -P “”
이렇게 실행해줍니다. 물론 도스창에서 입니다. 그리고 test.bat이나 mirror.bat을 먼저 실행한 후에 해야 합니다.
이렇게 하면
Enter file in which to save the key (/cygdrive/c/rsync/.ssh/identity):
이라고 물어볼겁니다.
그냥 Enter 치시면 됩니다.
7-2 이제 c:
sync./ssh 라는 디렉토리에 보면 identity.pub 라는 파일이 생겼을 겁니다.
이걸 서버의 자신의 계정 밑의 .ssh 디렉토리에도 authorized_keys 파일이름으로 복사합니다.

7-3 다시 한번 mirror.bat을 실행시켰을 때 암호 물어보지않고 백업한다면 성공입니다.
7-4 이렇게 했을 때 문제는 도스창에서 test.bat과 같은 환경 파일을 실행하고 ssh.exe 서버아이피 하면 ssh로 바로 접속된다는 것입니다.
이제 자기 PC에 대한 보안도 잘 지켜야 겠죠.

8. 복원하는 배치파일은 다음과 같습니다. 이 배치 파일은 자신의 컴의 c:
sync
estore라는 폴더로 서버에 백업되어 있는 파일을 불러
오는 것입니다.
@echo off
set PATH=c:
sync;%PATH%
set CYGWIN=binmode tty
set TERM=ansi
set USERNAME=myusername <--- myusername을 서버의 자신의 계정이름으로 바꿉니다.
set HOME=c:
sync
set RSYNC_RSH=ssh.exe
rsync -e ssh -av 서버아이피(URL):/home/lum34/backup ./restore

9. 이제 자동으로 백업을 받게 해야겠죠.
이것은 윈도우의 예약된 작업을 이용해서 하면 됩니다. 예약작업추가해서 적당한 시간을 설정하면 되겠죠.

10. 이제 자기 PC뿐만 아니라 사무실의 다른 사람들 데이타도 백업받도록 해주면 좋겠죠. 사무실에 있는 모든 사람이 계정을 가지고 있지 않을 뿐더로 모두다 서버에 접속할 수 있는 권한을 준다는 것도 좋지 않을테니까요.

특히 예쁜 아가씨라면…. 하드가 날라갔을 때 데이타를 복구해준다면 만만치 않은 이익이 오리라 믿습니다. 흑. 저 장가갔습니다.

10-1. 서버에 cbacupk 등의 공통된 계정을 만듭니다. 이 계정은 권한을 최소한만 주도록 해주는 것이 좋을겁니다.
mirror.bat 파일과 resotre.bat 파일에서 계정이름을 수정합니다.
그리고 백업받을 위치도 수정합니다. 개인당 하나의 디렉토리를 지정해주면 되겠죠.
그리고 c:
sync.ssh의 파일을 새로 만드는 것이 아니라 cbacup으로 설정해서 만든 처음의 컴퓨터에서 .ssh 폴더의 파일을 복사해서주면 됩니다.
———————————————————————————–
긴 팁 읽어주셔서 감사합니다.

제가 올리는 팁에 대한 더 자세한 사항은 아래 사이트를 참조하세요.
http://optics.ph.unimelb.edu.au/help/rsync/rsync_pc1.html

lum34 아. 하나 빼먹은게 있네요. 백업시 나오는 메시지 중 read error: Connection reset by peer는 에러가 아닙니다.
작업중인 디렉토리와 백업디렉토리의 내용이 같을 경우 나오는 메시지 입니다.