본문 바로가기

리눅스/Ubuntu

rsync

rsync는 원격에 있는 파일과 디렉토리를 복사하고 동기화 하기 위한 프로토콜로 주로 백업을 하기 위한 용도로 사용됩니다.

rsync로 백업 할 파일의 크기와 수정 시간을 이전에 백업한 파일과 비교하여 변경사항을 체크한 뒤 변경이 되었다면 다시 백업을 하게 됩니다.

하지만 파일의 크기와 수정 시간만을 가지고 비교하는 것이 완벽하지 않다면, —checksum 옵션을 사용하여 비교할 수 있습니다. —checksum 옵션은 크기와 수정 시간을 비교하는 것 보다 느리고 더 많은 자원을 이용하지만 좀 더 안전합니다.

또한 rsync는 효율적으로 파일을 동기화 시킵니다. 수정된 파일 전체를 복사하는 것이 아니라 서로 다른 부분만 동기화 시킵니다.(Rolling Hash 알고리즘 사용)

 

  • Remote Sync의 약자로 file & directory 동기화를 위한 프로토콜.
  • 전송시에 네트워크 대역폭을 최소화하여 delta encoding algorithm을 구현하여 rcp, scp보다 훨씬 빠르고 효율적으로 site 간의 데이터를 동기화합니다.
  • rsync는 클라이언트와 서버 모두 구성되어 있어 바로 사용이 가능하며 TCP 873포트를 사용합니다.
  • server 구동 시 SSH나 RSH와 같은 Remote Shell protocol 기반에서 동작할 수 있어서 방화벽을 오픈 할 필요 없이 사용 가능합니다.

사용 문법

rsync options source destination

 

주요 옵션

  • -v, —verbose : 자세한 정보 출력
  • -r , —recursive : 재귀적(Recursively)으로 하위 디렉터리 까지 복사
  • -a, —archive : -r, -t, -l, -p, -g, -o, -D 옵션을 적용시킨 것과 동일합니다.
    • -t, —times : 타임스탬프 보존
    • -l, links : 심볼릭 링크를 보존
    • -p —perms : 퍼미션 정보를 보존
    • -g —group : 그룹 소유권 보존
    • -o —owner : 소유권 보존
    • -D : 디바이스 파일 보존
  • -z : 데이터 압축 복사(전송 구간에서만 파일을 압축)
  • -h : 결과를 사람이 읽기 편한 포맷으로 보여줍니다.
  • —exclude : 제외할 파일 또는 폴더 지정 (ex: exclude="/home" —exclude="*.txt")
  • —include : 포함할 파일 또는 폴더 지정
  • -e : ssh포트 변경 (-e 'ssh -p 1022')
  • —delete : 원본 소스에 없는 파일을 백업 소스에서 삭제

간단 사용 예제

rsync -avzh -e 'ssh -p 1020' -delete /home/directory user@backupServerPort:/home/backup

 

'리눅스 > Ubuntu' 카테고리의 다른 글

[Ubuntu]안쓰는 노트북에 Ubuntu Server를 설치 No.1  (0) 2020.06.04