Linux

[Linux] 동기화를 위한 rsync 명령어

밝은숲 2020. 3. 13. 15:55

1. rsync 설명

- 두 개의 site 간의 file & directory의 동기화를 위한 unix용 유틸리티

- 전송시에 네트워크 대역폭을 최소화하는 delta encoding algorithm을 구현하여 rcp나 scp 보다 빠르고 효율적으로 데이터를 동기화

- 폴더, 파일 권한이 그대로 동기화 됨

- tcp 843 사용

- ssh 기반으로 rsync를 사용하면 방화면 오픈없이 사용 가능

- rcp, scp 대용으로 사용

- 주로 원격 사이트 미러링, 데이터 백업 시 사용

 

 

2. 예제

(1) .gz 파일만 /app/logs 에서 /log_backup/app1로 동기화

$ rsync -avz /app/logs /log_backup/app1 --include=\*.gz --exclude=*.*

 

(2) Local 파일을 Remote에 복제

$ rsync -avz /home/data/ root@example.com:/home/backup/

 

(3) Local 파일을 Remote에 복제

$ rsync -avz root@example.com:/home/data /home/backup/

 

(4) Remote의 일부만 Local에 복제(dir1~3중에 1,3만 복제가 필요한 경우)
$ for i in dir1 dir3 ; do rsync -avz root@example.com:$PWD/$i/ /home/backup/$i; done

 

(5) ssh가 22가 아닐 경우 연결

$ rsync -avc --progress -e 'ssh -p 10022' root@example.com:/home/data /home/backup/

*--progress는 전송시 진행내역 보는 옵션

 

(6) 특정 확장자만 전송

$ rsync -zarv --prune-enpty-dirs --include="*/" --include="*.pdf" --exclude='*' "$from" "$to"

 

(7) 디렉토리 구조만 복제

$ rsync -vd root@example.com:/home/ .

* -d 옵션을 추가하면 디렉토리 구조만 복사하고 속에 파일들은 복사하지 않는다.