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 옵션을 활용해 네트워크 효율성 극대화
  • 실무 적용: .bashrcrsync-mirror 등 별칭 정의하여 명령어 간소화
  • 결론: rsync는 배포, 백업, 데이터 동기화에서 시간과 대역폭 절약을 위한 필수 도구