rsync란?
Remote Sync의 약자로 시스템 간 파일을 효율적으로 동기화 하고 복사하는 유틸리티
변경된 데이터만 복사하여 네트워크, 디스크의 사용량을 최소화 할 수 있다.
필요성
- 효율적인 데이터 전송:
- 기존 파일의 변경된 부분만 전송하므로 대규모 데이터 동기화 시 빠르고 효율적
- 유연한 동기화 옵션:
- 디렉터리 구조 유지, 삭제된 파일 반영등 다양한 동기화 옵션 존재
- 재시도 가능:
- 네트워크등의 문제로 중단된 작업을 다시 처음부터 하지 않고, 재개할수 있음
- 보안성:
- ssh를 이용안 보안성 보장
사용법
- source: 복사할 파일 또는 디렉터리
- destination: 파일이 복사될 위치
rsync [옵션] [source] [destination]
옵션
옵션 | 설명 | 필요한 상황 |
-a | 아카이브 모드. 심볼릭 링크, 파일 권한, 타임스탬프 등 유지. | 파일의 모든 속성을 보존하며 복사해야 할 때. |
-v | 상세 출력. | 작업 진행 상황을 확인해야 할 때. |
-z | 데이터 전송 중 압축. | 네트워크 대역폭을 줄이고 전송 속도를 높이고 싶을 때. |
-e ssh | SSH를 사용한 보안 전송. | 안전하게 파일을 전송하고 싶을 때. |
--progress | 전송 진행 상황을 표시. | 복사 속도와 남은 시간을 확인하고 싶을 때. |
--partial | 중단된 작업을 재개. | 네트워크가 불안정하거나 대규모 파일 복사를 중단 후 재개해야 할 때. |
--delete | 대상에서 소스에 없는 파일을 삭제. | 소스와 대상 디렉터리를 완전히 동기화해야 할 때. |
--exclude | 특정 파일 또는 디렉터리 제외. | 예: --exclude='*.log' (로그 파일 제외). |
-r | 디렉터리 내부의 모든 하위 파일/디렉터리 복사. | 디렉터리 전체를 복사해야 할 때. |
-u | 최신 파일만 복사. | 이미 복사된 파일을 덮어쓰지 않도록 방지하고 싶을 때. |
-n | 시험 실행. 실제 복사 대신 실행 계획만 표시. | 복사 작업 전에 변경 사항을 미리 확인하고 싶을 때. |
예시
#로컬 디렉토리 카피
rsync -av /local/dir/ /backup/dir/
#원격 서버에 동기화
rsync -avz /local/dir/ username@remote_host:/remote/dir/
#원격 서버에서 데이터 가져오기
rsync -avz username@remote_host:/remote/dir/ /local/dir/
#ssh를 이용한 전송
rsync -e ssh -av /local/dir/ username@remote_host:/remote/dir/
#중단된 작업 재시작
rsync --partial --progress -av /local/dir/ username@remote_host:/remote/dir/
#특정파일 제외
rsync -av --exclude='*.tmp' /source/dir/ /destination/dir/
#삭제 동기화
rsync -av --delete /source/dir/ /destination/dir/
주의사항
- 파일 삭제 주의:
- --delete 옵션은 대상에서 소스에 없는 파일을 삭제하므로, 잘못 사용하면 데이터를 잃을 수 있음.
- SSH 키 필요:
- 원격 서버와 파일 전송 시 비밀번호 입력 없이 자동화하려면 SSH 키 설정 필요.
- 대규모 데이터 전송:
- 잘못된 설정으로 대규모 데이터를 덮어쓰거나 삭제하지 않도록 -n 옵션으로 미리 확인.
- 네트워크 상태:
- 네트워크가 불안정할 경우 --partial 옵션을 사용해 재시작 가능하도록 설정.
rsync vs scp
기능 | rsync | scp |
전송 방식 | 차분 전송 (변경된 파일/데이터만 전송) | 전체 파일을 항상 전송. |
속도 | 데이터 변경량이 적을 경우 더 빠름. | 항상 동일 속도. |
동기화 기능 | 소스와 대상 디렉터리를 동기화 가능 (--delete 등 옵션). | 단순 파일 복사에 적합. |
재시도 가능 | 중단된 작업 재개 가능 (--partial). | 중단되면 처음부터 다시 시작. |
보안 | 기본적으로 SSH와 함께 사용 가능. | SSH와 함께 사용되지만 동기화 기능은 없음. |
댓글