[Linux] rsync를 이용한 원격 서버간 데이터 복사(백업)

 

Rsync 란?

 


파일을 효율적으로 전송하고 동기화하기 위한 유틸리티

 

rsync 옵션 

 


rsync [options] [source] [target]

 

주요 옵션은 아래와 같습니다.

  • a : archive 모드, 심볼릭링크, 타임스탬프, 퍼미션, 그룹, 소유자 등의 정보를 그대로 복사
  • v : 복사 과정을 디테일하게 출력
  • z : 데이터 압축
  • e : 데이터 전송 포트를 기본 873이 아닌 ssh 포트를 사용합니다, '-e ssh'
  • n : dry-run, 실제 동기화 없이 작업을 수행합니다. 
  • b : backup, 동기화 중에 백업을 진행합니다, 백업 된 데이터는 파일명 끝에 "~" 문자가 붙습니다.

 

rsync 예제


'data.txt' 파일을 '/mnt/backup/' 경로로  복사.

rsync -avz data.txt /mnt/backup

 

'data' 디렉토리를 '/mnt/backup/' 경로로 복사. (/mnt/backup/data 이렇게 되겠죠?)

rsync -avz /root/data /mnt/backup

 

'data'디렉토리 내의 데이터를  '/mnt/backcup/' 경로로 복사

rsync -avz /root/data/ /mnt/backup

 

source 서버 '/root/data/' 내 데이터를 target 서버의 '/mnt/backup/' 경로로 복사

rsync -avz root@server-1.test.co.kr:/root/data/ /mnt/backup/

 

target에서 source 서버 접속시 873 디폴트 포트가 아닌 22 sshd 포트를 사용

rsync -avz -e ssh root@server-1.test.co.kr:/root/data/ /mnt/backup/

 

실제 동기화 없이 작업을 수행, 실행시 오류는 없는지, 복사될 파일이 몇개인지 미리 확인을할 수 있음 

rsync -avzn root@server-1.test.co.kr:/root/data /mnt/backup/

 

예를 들어 '/mnt/backup/' 경로에 있는 '1.txt' 파일이 새로운 파일로 덮어씌워질 경우

기존 '1.txt' 파일은 '1.txt~' 로 백업이됨

rsync -avzb root@server-1.test.co.kr:/root/data/ /mnt/backup/

 

'access_log.txt' 파일을 제외하고 데이터 복사

rsync -avz --exclude 'access_log.txt' root@server-1.test.co.kr:/root/data/ /mnt/backup/

 

source를 기준으로 target서버의 데이터가 삭제됨.

예를 들어, source 서버에 1.txt 파일이 없다면 복사 과정에서 target 서버의 1.txt 파일도 없어짐(삭제)

rsync -avz --delete root@server-1.test.co.kr:/root/data/ /mnt/backup/

 

 

 

 

 

 

댓글

Designed by JB FACTORY

loading