gbmin's Tech Notes

서버 구축 및 유지보수, 클라우드 컴퓨팅, 네트워크 보안, IT 분야 기술 노트. :)

Tech Notes/Tools & Command

[Linux command] rsync 명령어 옵션 및 사용법

gbmin 2023. 6. 13. 20:20

rsync는 리눅스나 UNIX 시스템에서 파일을 복사하거나 백업할 때 사용하는 도구이다. rsync의 주요 장점 중 하나는 이미 복사된 파일들의 수정 사항만 감지해서 그 부분만을 복사하는 "증분 복사" 방식을 사용한다. 이런 방식이로 동작하면 네트워크 트래픽을 줄이고 속도를 향상하는 데 도움이 된다.

 

- 목차

1. 기본 사용법

2. 주요 옵션

3. 사용 예시

 

 

1. 기본 사용법

rsync options source destination

 

 

2. 주요 옵션

옵션 설명
-a 아카이브 모드, 권한, 소유자, 시간을 유지하면서 복사
-r 하위 디렉터리와 파일까지 모두 복사
-v 자세한 출력
-z 네트워크를 통해 전송할 때 압축하여 전송
--delete 원본에 없는 파일은 복사본에서 삭제
-h 사람이 읽기 쉬운 포맷으로 출력
-n dry-run, 실제로 복사를 수행하지 않고 무슨 일이 일어날지를 보여줌
-P 복사 진행상황을 보여줌, -partial (부분 복사 허용) 옵션과 -progress (진행 상황 표시) 옵션을 결합한 것
-e 원격 셸을 사용하여 복사 (ssh나 rsh와 같은 셸 사용 가능)
-u 대상 디렉터리에 있는 파일이 소스보다 새로운 경우 파일을 복사하지 않음
--exclude 특정 파일 또는 디렉터리를 복사 대상에서 제외 --exclude '*.txt' 옵션은 txt 파일을 복사 대상에서 제외
--include --exclude의 반대 개념으로, 복사 대상에 포함시킬 파일 또는 디렉터리를 지정함.
-l 심볼릭 링크를 그대로 복사
-L 심볼릭 링크를 따라 실제 파일을 복사
-b 대상 디렉터리에서 이미 존재하는 파일을 백업하고 새로운 파일을 복사
--backup-dir -b 옵션과 함께 사용하여 백업 파일의 위치를 지정할 수 있음
-c 파일의 체크섬을 확인하여 복사할 파일을 결정
-R 복사할 파일의 원래 디렉터리 구조를 유지
--bwlimit 네트워크 대역폭 사용량을 제한하는 옵션

 

 

3. 사용 예시

파일을 로컬에서 다른 로컬 디렉터리로 복사

rsync -av /path/to/source /path/to/destination


로컬에서 원격으로 파일 복사

rsync -av /path/to/source user@remote:/path/to/destination

 

원격에서 로컬로 파일 복사

rsync -av user@remote:/path/to/source /path/to/destination

 

ssh를 사용하여 원격 서버에 파일 복사

rsync -av -e ssh /path/to/source user@remote:/path/to/destination


source와 backup 디렉터리가 항상 동기화되도록 백업

이 명령은 source 디렉터리의 내용을 backup 디렉터리에 복사하며, source 디렉터리에서 삭제된 파일은 backup 디렉터리에서도 삭제함.

rsync -av --delete /path/to/source /path/to/backup


로컬과 원격 디렉터리 간의 동기화

source 디렉터리의 내용을 destination 디렉터리에 복사하며, source 디렉터리에서 삭제된 파일은 destination 디렉터리에서도 삭제함.

rsync -avz --delete /path/to/source/ user@remote:/path/to/destination/


원격 서버에서 로컬로 대용량 데이터 복사 (중간에 네트워크가 끊겨도 안전)

-P 옵션은 중간에 연결이 끊겨도 이어서 복사할 수 있도록 하며, 진행 상황도 표시해 줌 -z 옵션은 네트워크 전송 시 데이터를 압축하여 속도를 빠르게 처리

rsync -avzP user@remote:/path/to/source /path/to/destination


rsync를 이용하여 디렉터리 전체를 압축 없이 원격 서버로 복사
/ 슬래시를 source와 destination 뒤에 붙여주면, 해당 디렉터리 전체를 복사함.

rsync -av /path/to/source/ user@remote:/path/to/destination/


원격 서버에 있는 파일들 중 로컬에 없는 파일만 복사

--ignore-existing 옵션은 destination에 존재하는 파일이 source에 있어도 복사하지 않는 옵션

rsync -av --ignore-existing user@remote:/path/to/source /path/to/destination


rsync를 이용하여 특정 파일 타입만 복사하고 source 디렉터리에서 모든 txt 파일만 destination 디렉터리로 복사함.

이때, */ 옵션은 모든 디렉터리를 포함하라는 의미이며, *.txt 옵션은 txt 파일을 포함하라는 의미 그리고 * 옵션은 그 외 모든 것을 제외하라는 의미임.

rsync -av --include '*/' --include '*.txt' --exclude '*' /path/to/source/ /path/to/destination/


초당 5000KB (약 5MB)의 속도로 파일을 복사

rsync -av --bwlimit=5000 /path/to/source /path/to/destination