Linux / 명령어 / rsync - 파일·디렉터리의 변경분 동기화
rsync는 로컬 또는 원격 위치 사이에서 파일을 복사하고 변경된 항목을 효율적으로 동기화합니다. 대량 자료의 반복 전송에 유용하지만 대상 경로와 삭제 옵션을 잘못 지정하면 자료가 손실될 수 있습니다.
rsync 명령어란?
기본적으로 크기와 수정 시각을 비교해 전송 대상을 고릅니다. -a는 재귀 복사와 주요 메타데이터 보존을 묶은 아카이브 모드입니다. source/는 디렉터리의 내용물을, source는 디렉터리 자체를 목적지에 복사한다는 차이가 중요합니다. SSH 방식 원격 경로는 사용자@호스트:경로로 씁니다.
기본 문법
rsync [옵션] 원본 대상
설치된 구현과 옵션은 배포판에 따라 다를 수 있습니다. man rsync으로 현재 시스템의 설명을 확인하세요.
사용 예제
실제 변경 전 미리 보기
출력 목록으로 대상 경로와 복사 범위를 확인합니다.
rsync -av --dry-run project/ backup/project/
로컬 디렉터리 동기화
원본 디렉터리 안의 내용을 대상으로 복사합니다.
rsync -av project/ backup/project/
SSH로 원격 전송
원격에도 rsync가 설치돼 있어야 하며 계정·경로를 실제 값으로 바꿉니다.
rsync -av project/ alice@server.example.com:/home/alice/project/
실제 복사 전 미리 보기
rsync --dry-run은 변경 예정 파일 목록을 보여주되 데이터를 실제로 복사하지 않습니다. 끝의 슬래시 유무에 따라 대상에 생성되는 디렉터리 구조가 달라집니다.
rsync -av --dry-run source/ backup/
source/ 안에 notes.txt가 있고 대상에 없을 때의 예시 출력:
sending incremental file list notes.txt
이 명령은 source 디렉터리 자체가 아니라 그 안의 내용을 backup/에 동기화할 예정임을 뜻합니다. --delete를 추가하면 대상에만 있는 파일이 삭제될 수 있으므로 반드시 --dry-run 결과를 검토하세요. 실제 실행 후에는 파일 수·크기나 체크섬으로 중요 파일을 확인합니다.
-a는 재귀 복사와 일부 메타데이터 보존을 묶지만 ACL·확장 속성·하드 링크 등 모든 속성을 항상 보존하는 완전한 백업 옵션은 아닙니다. 필요한 속성은 대상 파일시스템과 권한을 확인한 뒤 별도 옵션으로 지정하세요. 동기화 결과가 중요하면 대상에서 복원 시험도 수행해야 합니다.
주요 옵션과 형식
| 옵션·형식 | 설명 |
|---|---|
-a |
재귀 복사와 주요 속성 보존을 묶은 아카이브 모드입니다. |
-v |
처리 항목을 자세히 표시합니다. |
-n, --dry-run |
실제 변경 없이 작업 계획을 출력합니다. |
--delete |
원본에 없는 대상 파일을 삭제합니다. 반드시 사전 검토가 필요합니다. |
--exclude=패턴 |
지정한 패턴의 파일을 전송에서 제외합니다. |
-e 'ssh -p 포트' |
원격 셸 명령과 포트를 지정합니다. |
사용할 때 주의할 점
--delete는 대상 파일을 실제로 제거합니다. 원본·대상 경로의 끝 슬래시와 필터 규칙을 확인하고 --dry-run으로 삭제 목록을 검토하세요. rsync는 백업 자체가 아니며 원본의 실수·손상도 복제될 수 있습니다. 원격 전송은 보통 양쪽에 rsync가 필요하고, 아카이브 모드가 ACL·확장 속성까지 모두 보존하는 것은 아닙니다.
자주 묻는 질문
rsync에서 source와 source/는 어떻게 다른가요?
source/는 그 디렉터리의 내용물을 대상으로 옮기고, source는 디렉터리 자체가 목적지 아래에 생기도록 복사합니다.
공식 문서
옵션의 정확한 동작과 구현별 차이는 rsync 관련 공식 문서에서 확인할 수 있습니다.









