rsync — 증분 동기화와 백업
Linux / 파일 및 디스크 관리 / rsync.html
💬 "rsync 명령어"
rsync는 달라진 부분만 전송합니다. 서버 간 백업, 이전, 배포 모두에 쓰이는 표준 도구입니다.
옵션 조합이 중요합니다. -a(속성 유지), -v(출력), -z(전송 압축)을 기본으로 씁니다.
- 개념: 원본과 대상의 차이만 주고받는 파일 동기화 도구입니다.
- 왼쪽 인자: 원본 경로입니다. 끝에 슬래시가 있으면 내용물을, 없으면 디렉터리 자체를 복사합니다.
- 오른쪽 인자: 대상 경로입니다. 원격이면
user@host:/path형식입니다. - 삭제:
--delete를 쓰면 원본에 없는 파일을 대상에서도 지웁니다.
자주 쓰는 옵션
| 옵션 | 설명 |
|---|---|
-a | 권한·시각·소유자 등 속성을 보존(아카이브 모드) |
-v | 전송 파일을 출력합니다 |
-z | 전송 중 압축합니다(원격 전송에 유용) |
--delete | 원본에 없는 파일을 대상에서 제거해 완전 미러로 만듭니다 |
-n / --dry-run | 실제로 하지 않고 무엇이 바뀔지만 미리 보여줍니다 |
필수 명령어 조합 3가지
rsync -avz /var/www/html/ deploy@10.0.0.2:/var/www/html/— 웹 루트를 원격 서버로 증분 동기화rsync -avn --delete /data/ /backup/data/— 삭제 동작까지 미리 확인(dry-run)rsync -av --exclude '*.log' /srv/app/ /backup/app/— 로그 제외하고 백업
💬 "이걸로 비용(리소스) 절감하는 예시 알려줘"
실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다.
1단계 · 미리 보기(dry-run)
무엇이 전송·삭제될지 먼저 확인합니다. --delete는 특히 미리 봐야 합니다.
rsync -avn --delete /srv/app/ /backup/app/
2단계 · 실제 동기화
문제가 없으면 -n을 빼고 실행합니다.
rsync -av --delete /srv/app/ /backup/app/
3단계 · 검증
파일 수와 용량, 대표 파일을 비교합니다.
rsync -avn --delete /srv/app/ /backup/app/ | tail -3
실무에서는 이렇게 씁니다
1. 서버 이전
상황 — 구 서버의 /srv/app 을 신 서버로 그대로 옮겨야 합니다.
rsync -avz --exclude 'cache/' /srv/app/ root@10.0.0.9:/srv/app/
결과 — 대용량도 변경분만 전송되어 이전 시간이 크게 줄어듭니다.
포인트 — 이전 전에 한 번 돌려 전송 후, 서비스 중단 시점에 한 번 더 돌리면 중단 시간이 최소화됩니다.
2. 로그 아카이브 백업
상황 — 지난달 로그를 백업 저장소로 옮겨 보관해야 합니다.
rsync -av --remove-source-files /var/log/nginx/2026-09-* /backup/logs/
결과 — 전송이 끝난 원본 파일은 삭제되어 로컬 디스크를 확보합니다.
포인트 — --remove-source-files는 검증 후에만 씁니다. 실패 시 원본이 남아 있도록 성공 확인이 필수입니다.
주의할 점
- 원본 경로 끝의 슬래시 유무로 결과가 완전히 달라집니다. 디렉터리를 통째로 원할 때와 내용만 원할 때를 구분합니다.
- --delete는 대상에서 파일을 지웁니다. 반드시 -n으로 미리 확인합니다.
- 운영 중인 DB 파일 동기화는 일관성이 깨집니다. DB는 덤프 후 전송합니다.
- --remove-source-files는 전송 실패 시 데이터 손실 위험이 있어 자동화에 넣을 때 주의합니다.
실제 실행 화면
dry-run으로 전송·삭제 대상만 확인한 결과입니다(실제 변경 없음).

실제 운영 중인 서버
이 문서는 화면 표시용 가상 디렉터리의 항목입니다. 실제 서버 파일시스템과 연결되지 않으며, 파일 실행이나 시스템 명령을 수행하지 않습니다.