DevSecOps/etc

rsync 기본 사용법과 주요 옵션 정리

봉의일상 2025. 3. 2. 21:53

1. rsync란?

rsync는 파일 및 디렉터리를 효율적으로 동기화하는 강력한 도구입니다.

파일의 변경된 부분만 전송하는 차등 전송(differential transfer) 방식을 사용하여 네트워크 대역폭을 절약하고 빠르게 동기화할 수 있습니다.


2. rsync 기본 사용법

rsync의 기본적인 실행 형식은 다음과 같습니다.

rsync [옵션] 원본 경로 대상 경로

예를 들어, 로컬 디렉터리를 다른 위치로 복사할 때:

rsync -av /home/user/data /backup/

또는 원격 서버에 전송할 때:

rsync -av /home/user/data user@remote:/backup/

3. rsync 주요 옵션 정리

1) 파일 속성을 유지하는 -a (아카이브 모드)

rsync -a source/ destination/
  • 디렉터리 구조, 심볼릭 링크, 권한, 타임스탬프 등을 유지하며 동기화
  • cp -r보다 강력한 파일 복사 기능 제공

2) 전송 진행 상황을 출력하는 -v (verbose)

rsync -av source/ destination/
  • 전송 중인 파일 목록과 진행 사항을 출력
  • 로그 기록용으로 유용

3) 파일 크기를 줄이기 위한 -z (압축)

rsync -az source/ destination/
  • 전송 시 파일을 압축하여 속도를 향상
  • 네트워크 속도를 절약하는 데 효과적

4) 삭제 동기화: --delete

rsync -av --delete source/ destination/
  • 원본에서 삭제된 파일을 대상에서도 삭제하여 정확한 복제 유지
  • 주의: 잘못 사용하면 데이터 손실 가능성이 있음

5) 파일 비교 기준 변경: -u (업데이트된 파일만 복사)

rsync -avu source/ destination/
  • 대상 파일이 이미 최신 버전이라면 덮어쓰지 않음
  • 불필요한 덮어쓰기 방지로 성능 최적화 가능

6) 부분적으로 전송된 파일 유지: --partial

rsync -av --partial source/ destination/
  • 전송 중 중단된 파일을 다시 이어서 복사할 수 있도록 보존
  • 대용량 파일 전송 시 유용

7) 전송 속도 제한: --bwlimit=KBPS

rsync -av --bwlimit=5000 source/ destination/
  • 초당 전송 속도를 제한하여 네트워크 부담 완화
  • 원격 서버가 트래픽 제한이 있는 경우 유용

8) SSH를 통한 원격 전송: -e ssh

rsync -av -e ssh source/ user@remote:/destination/
  • SSH 프로토콜을 사용하여 보안이 강화된 파일 전송
  • SSH 기본 포트가 아닌 경우:
  • rsync -av -e "ssh -p 2222" source/ user@remote:/destination/

9) 특정 파일 제외: --exclude

rsync -av --exclude="*.log" source/ destination/
  • 특정 패턴의 파일을 동기화에서 제외
  • 여러 개 제외 가능:
  • rsync -av --exclude={"*.log","temp/"} source/ destination/

10) 동기화 중 변경된 파일 제외: --ignore-existing

rsync -av --ignore-existing source/ destination/
  • 대상 폴더에 이미 존재하는 파일은 건너뜀

4. rsync 실전 예제

✅ 로컬 폴더를 원격 서버로 백업

rsync -azv --delete /home/user/data user@remote:/backup/
  • 압축(-z), 아카이브(-a), 자세한 로그(-v) 활성화
  • 원본에서 삭제된 파일을 대상에서도 삭제(--delete)

✅ 여러 개의 폴더를 동기화하면서 특정 파일 제외

rsync -av --exclude={"*.log","node_modules/"} /project/ /backup/
  • .log 파일과 node_modules/ 디렉터리는 제외하고 복사

✅ 대역폭 제한을 걸고, 중단된 파일 이어서 복사

rsync -av --bwlimit=2000 --partial source/ destination/
  • 초당 2MB로 속도를 제한하고(--bwlimit=2000), 부분 전송 지원(--partial)