리눅스때는 Rsync를 잘 사용했는대 NT에서 불편함이 있어서 관련 자료를 정리 해본다
일단 정리만 해두고 (계속 갱신될듯) 시간내서 한번 테스트를 해볼려고 한다.

 http://www.itefix.no/i2/node/10650


기타 다른 방법을 이용한것도 있네요
http://blog.naver.com/crystalworld/140129641670



고사이트
http://blog.bagesoft.com/766

http://flashcafe.org/?mid=basic_news&document_srl=1264&page=3

http://wiki.kldp.org/wiki.php/RsyncForWindows

http://www.starhost.co.kr/xe/index.php?mid=textyle&document_srl=145214&vid=blog

http://isulnara.com/tt/161

http://www.jaehun.org/76





[사용 예 1]

사용OS: 윈도우

작업서버: 리눅스(파일서버)

백업서버: 리눅스


[사용예 2]

사용OS: 리눅스

작업서버: 리눅스(파일서버)

백업서버: 리눅스


여기서는 아직까지는 대부분의 사람들이 주 OS로 사용하고 있을거라고 예상되는 윈도우 OS를 사용하는 [사용예 1]을 기준으로 설명해 보도록 한다. 필자는 사용중인 PC에서 리눅스 파일서버를 네트워크 하드로 연결하여 쓰고 있다. 

※ 실제적으로 백업은 파일서버->백업서버 로 진행되므로, 작업자가 사용하는 PC에 어떤 OS를 사용하는가는 상관이 없다.


백업을 위해 필요한 툴: rsynccron

- rsync는 원격 서버의 파일 및 디렉터리를 동기화 해주는 툴이다.

- cron은 지정된 시간에 작업을 반복적으로 수행할수있도록 도와주는 리눅스 스케쥴링 툴이다.


rsync는 쉽게 말해서 파일을 동기화 시켜주는 프로그램이다. 우리는 앞으로 이 rsync를 사용하여 작업을 진행할 것이다.


우선 백업을 하고자 하는 파일서버(192.168.128.102)에 다음과 같은 설정을 해준다.

※ rsync는 왠만한 리눅스에는 기본 설치가 되므로, 여기서 설치법은 생략하도록 하겠다.


1) /etc/services를 열어서 rsync 873/tcp, rsync 873/udp 내용이 없으면 추가해준다.


2) xinetd.d의 rsync 파일을 수정해준다. 최초에는 사용안함으로 설정되어 있으므로, 아래의 그림과 같이 disable=yes를 disable=no로 수정해 준다.


[root@fileserver]# vi /etc/xinetd.d/rsync


xinet.d.rsyncd.jpg


3) 백업할 디렉터리 경로를 지정해 준다. 최초에는 이 파일이 없으므로, 당황하지 말고 새로 만들면 된다.


[root@fileserver]# vi /etc/rsyncd.conf


rsyncd.confd.jpg 


위 내용을 간단히 설명해 보면 다음과 같다.


[backup] : 백업대상 이름

path : 공유할 디렉터리

comment : 설명

uid : 유저 ID

gid : 그룹 ID

use chroot : 상기에 지정한 path를 루트 디렉터리로 사용할 것인지 설정

read only : 읽기전용 설정

host allow : 접근 가능한 호스트 설정

max connection : 최대 연결 가능한 커넥션

timeout : 타임아웃 시간 설정


이것으로 파일서버의 설정이 모두 끝이났다.


이제 백업서버(192.168.128.101)로 이동하여 백업을 진행해 보겠다.

백업서버에서는 아무런 설정이 필요없다. 아래와 같이 명령만 실행하면 된다.

백업 될 디렉터리는 backuptest 로 임의로 설정하였다.


[root@fileserver]# rsync -avz --delete 192.162.128.102::backup /backuptest


옵션 내용은 다음과 같다. 이 외에도 더 다양한 옵션들이 있으나, 여기서는 사용하지 않으므로 설명은 생략하도록 하겠다.


: archive mode - 심볼릭 링크, 퍼미션, 속성, 소유권 등을 보존

: verbose - 상세설명

: compress - 파일압축

--delete : 서버와 클라이언트의 데이터를 비교하여 더이상 원본에 존재하지 않는 파일을 백업서버에서 제거

192.168.128.102::backup : 파일서버 IP의 rsyncd.conf에 등록된 백업대상

/backuptest : 백업서버에 저장할 위치


상기의 명령을 실행하고 디렉터리를 확인해 보니 모든 데이터가 백업되었음을 알 수 있다.

192.162.128.102 서버의 자료가 192.162.128.101 서버의 backuptest 디렉터리에 백업되었다.


[백업 전]

ls.jpg 


[백업 후]

rsync.finale.jpg


그런데, 여기까지만 해놓으면 백업할 때마다 일일이 명령어를 쳐주어야 한다.

그래서 간단하게 backup.sh라는 쉘파일을 만들어서 사용하기로 하겠다.


[root@fileserver]# vi backup.sh


sh.jpg 


이제부터는 backup.sh 파일을 실행하면, 백업을 수행 할 것이다.

그런데, 그냥 파일만 만들면 퍼미션 에러가 나올 것이다.

이때는 퍼미션을 변경해 주자.


[root@fileserver]# chmod 755 backup.sh


이제 backup.sh로 한결 쉽게 백업을 수행할 수 있게되었다.

한번 실행해보자.


sh.exe-x.jpg 


잘된다. 그런데 변경된 내용이 없으니 별일이 일어나진 않았다.

궁금하니 한번 변경해 보자. 파일서버에서 파일 1개를 삭제해 봤다.


sh.delete.jpg 


파일서버에서 삭제된 파일을 백업서버에서도 삭제하여 내용이 똑같아 졌다.

그런데 이것도 좀 수월해 졌을 뿐이지, 자동으로 해주는것은 아니다.


이 때 필요한 것이 cron이다.

cron은 상기에서 설명하였듯이 반복적인 스케쥴링을 관리해주는 툴이다.

※ cron 역시 왠만한 리눅스에는 기본 설치가 되므로, 여기서 설치법은 생략하도록 하겠다.


cron 설정을 위해서 다음과 같이 입력한다.


[root@fileserver]# crontab -e


그러면 vi 편집기가 실행되고 다음과 같이 입력하고 저장한다.


crontab.jpg 


위 내용을 간단히 설명해 보면 다음과 같다. 이 외의 다양한 기능 및 옵션들은 여기서는 사용하지 않으므로 검색을 통해 확인하기 바란다.


30 : 분 (0~59)

00 : 시간 (0~23)

* : 일 (1~31)

* : 월 (1~12)

* : 요일 (0~7 - 0과 7은 일요일)

/backuptest/backup.sh 를 실행


즉 매요일 매월 매일 00시 30분에 backup.sh를 실행하라는 의미이다.

이제부터는 매일 00시 30분에 backup.sh 가 자동으로 실행되서 원격지에 있는 파일서버에 지정해 놓은 디렉터리에서 변경된 파일을 가져와 백업서버에 저장해 놓을 것이다. 원본 서버에서 파일이 삭제되었을 경우에는 백업서버의 파일도 삭제하여 두 내용을 동기화 할것이다.




+ Recent posts