2022-07-12 rsync

인터넷을 통한 서버간 동기화 (rsync) – 생활코딩

이 글은 이고잉님의 오픈튜토리얼 리눅스 강의를 듣고 정리한 내용입니다.


rsync

수업목표 : “여기서는 인터넷을 통해서 컴퓨터와 컴퓨터의 파일을 동기화하는 방법인 rsync 대해서 알아봅니다.”

rsync는 컴퓨터 시스템 상에서 파일을 효율적으로 전송하고 동기화하기 위한 유틸리티의 하나로, 파일의 타임스탬프와 크기를 검사함으로써 이루어진다.

rsync 명령어는 서버 간에 동기화나 백업을 진행할 때 유용하다.

적은 양의 리소스와 빠른 퍼포먼스로 동기화를 구축할 수 있다.(변경된 파일에 대해서만 작업을 수행하기 때문)


reference

rsync [options] [source] [destination]
Code language: CSS (css)
shortlong설명
-a–archive자주 사용하는 옵션을 묶어놓은 옵션(= -rlptgoD)
-r–recursive하위 디렉토리까지 복사
-l–links심볼릭 링크 유지하면서 동기화
-p–perms퍼미션 정보 유지하면서 동기화
-t–times타임스탬프 유지하면서 동기화
-g–group그룹 소유권 보존
-o–owner소유권 보존
-D 디바이스 파일 보존
-h 결과를 사람이 읽기 편한 포맷으로 출력
-v–verbose동기화 시 상세 정보를 표시
-q–quiet동기화 시 상세 정보를 표시 하지 않음.
 –delete원본 소스에 없는 파일은 백업 서버에서 삭제
 –exclude제외할 파일 지정 (ex: –exclude=’*.cnf’ –exclude=’abc.php’)
 –include포함할 파일 지정(ex: .pdf파일만 전송해라 ==>  –include=”*/” –include=”*.pdf” –exclude=”*” )
-n–dry-run실제 파일 복사를 하는것이 아니라, 처리될 대상 파일 목록만 출력
-b–backup백업서버에 이미 파일이 존재할경우 백업 디렉토리에 백업
-u–update백업서버에 원본보다 최신 파일이 있을 경우 해당 파일은 복사하지 않음.
-e ssh를 10000 port를 사용한다면  (ex:  -e ‘ssh -p 100000’)
-z 데이터 파일을 압축

-avh : 자주 사용하는 옵션

출처 : https://cipleme.tistory.com/m/25

https://cipleme.tistory.com/m/25


예제 1 (같은 PC 아래 두 디렉터리 동기화)

srcdest 디렉터리는 ~/rsync 디렉터리 아래 위치한다.

이때 src 디렉터리 하위에 위치한 test1~10까지의 파일을 dest 디렉터리 하위로 동기화하고자 한다.

cd ~/rsync

rsync -a src/ dest

위와 같이 명령어를 입력하면 dest 디렉터리 하위에 test1~10 파일이 동기화되어 생성된 것을 확인할 수 있다.

단, 이때 주의할 점이 있다.

rsync -a src dest

위와 같이 src/가 아닌 src만 입력한 경우 원하지 않는 방식으로 처리된다.

src 하위에 위치한 test1~10의 파일이 동기화되는 것이 아니라 dest 디렉터리 하위에 src라는 디렉터리가 생성된다.


예제 2 (다른 PC 간의 동기화)

다른 PC에 위치한 두 디렉터리 간의 동기화 방법에 대해서 알아보겠다.

목표 PC의 ip 주소는 123.4.5.6이고 사용자 id는 tiredI라고 가정한다.

rsync -azP ~/rsync/src/ tiredI@123.4.5.6:~/rsync/dest
Code language: JavaScript (javascript)

이때 역시도 src/라고 정확하게 입력해야 한다.

-z는 zip, -P : 전송되는 상황을 출력한다.

출처 : https://ko.wikipedia.org/wiki/Rsync


댓글 남기기