rsync을 활용한 효율적인 파일 동기화 가이드
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
- 대상: 개발자, DevOps 엔지니어, 시스템 관리자
- 난이도: 중급~고급 (rsync 기본 개념 이해 필요)
핵심 요약
- rsync의 핵심 기능:
delta-transfer 알고리즘
을 통해 파일의 변경 부분만 전송 - 활용 예시:
rsync -avz
명령어로 로컬/원격 서버 간 파일 동기화 및 백업 수행 - 중요 옵션:
--delete
(목적지 파일 삭제),--exclude
(특정 파일/디렉토리 제외),--bwlimit
(대역폭 제한)
섹션별 세부 요약
1. rsync 개요
- rsync 정의:
remote sync
를 의미하며, 파일 동기화 및 백업에 사용되는 유니크한 도구 - 주요 장점:
- 효율성: delta-transfer
로 전체 파일 대신 변경 부분만 전송
- 유연성: 로컬/SSH/RSH 환경에서 작동 가능
- 보안: SSH 기반 인증으로 보안 강화
2. rsync 기본 사용법
- 기본 구문:
rsync [옵션] source destination
- 예시:
- rsync -av /source/ /destination/
→ 로컬 디렉토리 동기화
- rsync -avz user@remote:/remote/path/ /local/path/
→ 원격 서버와의 데이터 전송
- 옵션 설명:
- -a
(archive mode): 권한, 타임스탬프, 심볼릭 링크 보존
- -v
(verbose): 전송 과정 상세 출력
- -z
(compression): 데이터 압축 (대역폭 제한 시 유리)
3. 고급 기능 및 팁
- --exclude 옵션: 특정 파일/디렉토리 제외 (예:
--exclude='node_modules'
) - --delete 옵션: 목적지에 존재하지만 소스에 없는 파일 삭제 (완전한 미러 생성)
- --progress: 대규모 파일 전송 시 진행 상태 확인
- --bwlimit: 네트워크 대역폭 제한 (예:
--bwlimit=1000
)
4. 실무 적용 예시
- 백업 스크립트:
```bash
rsync -avz --exclude='.git' --exclude='node_modules' /project/ /backups/project-$(date +"%Y%m%d")/
```
- 연속 배포:
```bash
npm run build && rsync -avz --delete dist/ user@server:/var/www/app/
```
- 다중 서버 배포:
```bash
for server in web1 web2 web3; do rsync -avz dist/ user@$server:/var/www/app/; done
```
5. 성능 최적화 팁
- 압축 옵션 주의:
-z
는 고속 네트워크 환경에서 성능 저하 가능 - 리커시브 깊이 제한:
--max-depth
로 특정 레벨까지만 동기화 - 파일 목록 최적화:
--incremental-file-list
로 대규모 디렉토리 스캔 개선 - 병렬 처리:
--blocking-io
옵션으로 특정 시스템에서 성능 향상
결론
- 핵심 팁:
rsync
의--delete
,--exclude
,--bwlimit
옵션을 활용해 네트워크 효율성 극대화 - 실무 적용:
.bashrc
에rsync-mirror
등 별칭 정의하여 명령어 간소화 - 결론: rsync는 배포, 백업, 데이터 동기화에서 시간과 대역폭 절약을 위한 필수 도구