일단 정리만 해두고 (계속 갱신될듯) 시간내서 한번 테스트를 해볼려고 한다.
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를 사용하는가는 상관이 없다.
백업을 위해 필요한 툴: rsync, cron
- 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
3) 백업할 디렉터리 경로를 지정해 준다. 최초에는 이 파일이 없으므로, 당황하지 말고 새로 만들면 된다.
[root@fileserver]# vi /etc/rsyncd.conf
위 내용을 간단히 설명해 보면 다음과 같다.
[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
옵션 내용은 다음과 같다. 이 외에도 더 다양한 옵션들이 있으나, 여기서는 사용하지 않으므로 설명은 생략하도록 하겠다.
a : archive mode - 심볼릭 링크, 퍼미션, 속성, 소유권 등을 보존
v : verbose - 상세설명
z : compress - 파일압축
--delete : 서버와 클라이언트의 데이터를 비교하여 더이상 원본에 존재하지 않는 파일을 백업서버에서 제거
192.168.128.102::backup : 파일서버 IP의 rsyncd.conf에 등록된 백업대상
/backuptest : 백업서버에 저장할 위치
상기의 명령을 실행하고 디렉터리를 확인해 보니 모든 데이터가 백업되었음을 알 수 있다.
192.162.128.102 서버의 자료가 192.162.128.101 서버의 backuptest 디렉터리에 백업되었다.
[백업 전]
[백업 후]
그런데, 여기까지만 해놓으면 백업할 때마다 일일이 명령어를 쳐주어야 한다.
그래서 간단하게 backup.sh라는 쉘파일을 만들어서 사용하기로 하겠다.
[root@fileserver]# vi backup.sh
이제부터는 backup.sh 파일을 실행하면, 백업을 수행 할 것이다.
그런데, 그냥 파일만 만들면 퍼미션 에러가 나올 것이다.
이때는 퍼미션을 변경해 주자.
[root@fileserver]# chmod 755 backup.sh
이제 backup.sh로 한결 쉽게 백업을 수행할 수 있게되었다.
한번 실행해보자.
잘된다. 그런데 변경된 내용이 없으니 별일이 일어나진 않았다.
궁금하니 한번 변경해 보자. 파일서버에서 파일 1개를 삭제해 봤다.
파일서버에서 삭제된 파일을 백업서버에서도 삭제하여 내용이 똑같아 졌다.
그런데 이것도 좀 수월해 졌을 뿐이지, 자동으로 해주는것은 아니다.
이 때 필요한 것이 cron이다.
cron은 상기에서 설명하였듯이 반복적인 스케쥴링을 관리해주는 툴이다.
※ cron 역시 왠만한 리눅스에는 기본 설치가 되므로, 여기서 설치법은 생략하도록 하겠다.
cron 설정을 위해서 다음과 같이 입력한다.
[root@fileserver]# crontab -e
그러면 vi 편집기가 실행되고 다음과 같이 입력하고 저장한다.
위 내용을 간단히 설명해 보면 다음과 같다. 이 외의 다양한 기능 및 옵션들은 여기서는 사용하지 않으므로 검색을 통해 확인하기 바란다.
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 가 자동으로 실행되서 원격지에 있는 파일서버에 지정해 놓은 디렉터리에서 변경된 파일을 가져와 백업서버에 저장해 놓을 것이다. 원본 서버에서 파일이 삭제되었을 경우에는 백업서버의 파일도 삭제하여 두 내용을 동기화 할것이다.
'Infrastructure' 카테고리의 다른 글
IIS 6.0에 rewrite mod 적용하기 (0) | 2011.07.27 |
---|---|
Introduction to IIS 7 Architecture (0) | 2011.07.25 |
소셜커머스(Social Commerce) 사이트를 통한 악성코드 유포사례 (0) | 2011.07.23 |
웹 프록시를 이용해 우회를 하자 (0) | 2011.07.23 |
Vsftpd backdoor discovered in source code (1) | 2011.07.05 |