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