운영체제/Linux

rsync명령어에 대해서 (옵션 정리)

ahgle 2022. 9. 16. 15:07
728x90
반응형

rsync

rsync 명령어는 서버 간 파일 또는  디렉토리 등을 이동시키는 명령어이다.

 

유사 명령어인 scp는 모든 파일을 전송하는 반면, rsync는 목적지 서버와 파일을 비교하여 변경 파일만 전송함으로써

더 빠르고 효율적인 전송이 가능하다.

 

rsync는 기본적으로 873포트를 이용한다. 

[root@test]# netstat -nlp |grep 873
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      25739/rsync

rsync 명령어 형식

#rsync [options] [source] [destination]

short long 설명
-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   데이터 파일을 압축

 

파일 및 디렉토리를 rsync 명령어를 통해 이동시켜보자

rsync -av /home/test root@192.168.0.1:/home/test/



******.jpg
******.jpg
......
sent 530,901,432 bytes  received 2,828 bytes  39,326,241.48 bytes/sec
total size is 530,762,135  speedup is 1.00

외부 서버로 파일이 test 아래의 파일들이 복사된다.

 

위 옵션 정리에 나와있듯이 -a 옵션을 사용 시 [주 사용하는 옵션을 묶어놓은 옵션(= -rlptgoD)] 을 모두 한 번에 사용가능하므로 rsync명령어 사용 시에는 웬만하면 -a 옵션을 사용한다.

또한 -v옵션을 이용하면 rysnc 동기화  상세 정보가 실시간으로 표시되므로 보통 a옵션과 v옵션을 한 번에 사용하는 경우가 많다. (rysnc -av 호스트명@서버주소:/주소)

 

특정 디렉터리, 파일을 제외하고 복사하고 싶을 때

--exclue 옵션 사용

아래와 같이 작성 시 testdir 디렉터리, test1234.sql 파일을 제외한 모든(*) 파일을 목적지서버(192.168.0.1) /home/test

아래로 복사한다.

rsync -av --exclude 'testdir' --exclude test1234.sql * root@192.168.0.1:/home/test

 

 

출처: https://cipleme.tistory.com/25 [생각중...:티스토리]

728x90