Rsync 설치 및 사용 방법(서버간 또는 서버내 파일 동기화)(Crontab을 통한 스케쥴링 포함)
리눅스의 rsync 패키지를 사용해서 서버간 또는 서버내 디렉토리 및 파일을 전송하고 동기화할 수 있는 방법입니다.
# Rsync 설치 및 환경 설정
rsync 설치
$ sudo apt-get install rsync
rsync 환경설정 파일 수정
$ sudo nano /etc/default/rsync
RSYNC_ENABLE=false 라인을 찾고 아래와 같이 수정
RSYNC_ENABLE=true
rsync 서비스 재시작
$ sudo /etc/init.d/rsync restart
# Rsync 기본 문법 및 옵션
rsync options source destination
-a : archive 모드로 타임스탬프, 심볼릭링크, 퍼미션, 그룹, 소유자, 장치 등의 파일 보존
-v : 상세 정보 출력
-r : 하위 디렉토리까지 복사
-z : 데이터를 압축해서 전송. 단 destination에서는 압축이 해제되어 들어감.
일반적으로 아래와 같이 많이 사용
$ rsync avz 소스디렉토리경로 목적지디렉토리경로
# 한 서버에서 디렉토리간 동기화 하기
만약 서버내 AAA라는 디렉토리의 files를 BBB라는 디렉토리에도 동일하게 만들어 주고 싶다면 아래와 같은 명령어를 사용.
$ rsync -avz /AAA/files /BBB
# 한 서버에서 다른 서버의 디렉토리 동기화 하기
1) ssh 또는 rsh를 사용하는 방법(데이터 전송시 암호화 적용)
$ rsync -avz root@호스트네임:/AAA/fies /BBB
또는
$ rsync -avz 호스트아이피:/AAA/files /BBB
2) rsync 데몬을 사용하는 방법(데이터 전송시 암호화 없음. inetd 서비스가 실행상태여야함)
$ rsync -avz 호스트아이피::/AAA/files /BBB
만약 rsync를 사용해서 /AAA/files의 어떤 파일을 삭제했을 때 destination 디렉토리에서도 지워지길 원하는 경우 아래와 같은 명령어 사용.
$ rsync -av --delete /AAA/files /BBB
서버간 동기화를 해야 하는 경우 아래의 사항 참고
[Source 서버용]
1. rsync 설치
2. rsync 설정(/etc/default/rsync)
3. rsync.conf 생성 및 아래 구문 복사 후 붙여넣기
$ sudo nano /etc/rsyncd.conf
log file = /var/log/rsync.log # 로그 파일 경로
[source] # 부르고 싶은 명칭
path = /var/www/omeka1/files # 소스 디렉토리 설정
uid = root # rsync 사용 가능한 사용자
gid = root # rsync 사용 가능한 그룹
use chroot = yes # chroot 사용여부
host allow = x.x.x.x # 해당 호스트 아이피만 접근 가능
max connection = 100 # 최대 연결 개수
timeout 300 # 타임아웃 시간 설정
[Destination 서버용]
1. rsync 설치
2. rsync 설정(/etc/default/rsync)
3. rsync 명령어 실행
문법은 rsync -avz 소스서버아이피 또는 도메인주소::부르고싶은명칭 목적지경로
아래와 같이 작성하고 엔터.
$ rsync -avz 소스서버아이피::source /var/www/omeka2
# Crontab을 활용한 주기적이고 자동적인 파일 동기화
크론탭을 열고 아래의 명령어 예시와 같이 원하는 시점으로 작성
분/시/일/월/요일 순으로 작성
$ crontab -e
[명령어 입력 예시]
15 2 30 7 * rsync -avz /AAA/files /BBB # 7월 30일 2시 15분에 rsync 실행
15 2 * * 1 rsync -avz /AAA/files /BBB # 매주 첫날 2시 15분에 rsync 실행
0 1 * * * rsync -avz /AAA/files /BBB # 매일 1시 정각에 rsync 실행
0-59/1 * * * * rsync -avz 소스서버아이피::source /var/www/omeka2 # 1분마다 rsync 실행
Comments
rsyncd.conf 생성
$ sudo nano /etc/rsyncd.conf
아래와 같이 입력 후 저장하고 에디터 종료
log file = /var/log/rsync.log # 로그 파일 경로
[test] # 부르고 싶은 명칭
path = 원하는 경로 입력 # rsync 디렉토리 설정
uid = root # rsync 사용 가능한 사용자
gid = root # rsync 사용 가능한 그룹
use chroot = yes # chroot 사용여부
host allow = localhost # localhost만 허용
max connection = 100 # 최대 연결 개수
timeout 300 # 타임아웃 시간 설정
$ sudo /etc/init.d/rsync restart