변경된 파일만 옮기는 복사 도구
rsync는 로컬과 원격 경로 사이에서 달라진 파일만 전송해. 권한과 시각, 심볼릭 링크를 보존할 수 있고 중단된 전송을 이어 갈 수 있어 반복 백업과 배포에 잘 맞아.
자주 쓰는 플래그 묶음
rsync -avzP src/ dest/
-a: 재귀, 권한, 시각, 심볼릭 링크를 보존하는 archive 모드야.-v: 처리하는 파일을 보여 줘.-z: 네트워크 전송 중 압축해.-P: 부분 파일을 남기고 파일별 진행률을 보여 줘.
소스 끝의 슬래시가 복사 단위를 바꿔
rsync -av src/ dest/: src 안의 내용을 dest에 넣어.rsync -av src dest/: src 디렉터리 자체를 복사해dest/src/를 만들어.
원격 경로에서는 한 단계 중첩 차이가 큰 사고가 될 수 있으니 작은 샌드박스에서 먼저 확인해.
추가로 알아둘 옵션
--delete: 소스에 없는 대상 파일을 지워. 확인된 미러에만 써.--exclude='node_modules' --exclude='.git': 패턴을 제외해.--exclude-from=.rsyncignore: 파일에서 제외 규칙을 읽어.--dry-run또는-n: 실제로 바꾸지 않고 예정 작업을 보여 줘.-e ssh: 전송에 사용할 ssh 명령을 명시해.
실전 전송 예시
- 홈 백업:
rsync -avzP ~/ /Volumes/backup/home/ - 원격 미러:
rsync -avzP --delete ./site/ user@web:/srv/site/ - 원격에서 받기:
rsync -avzP user@server:/data/ ~/local-data/
방향과 삭제를 미리 검토하기
원격 전송이나 삭제가 포함된 작업 전에는 --dry-run --itemize-changes를 붙여 양쪽 경로와 각 변경 표시를 확인해. --delete는 대상이 다시 만들 수 있는 미러라는 사실을 확인한 뒤에만 추가해.
--delete는 삭제 권한을 줘
이 옵션은 단순한 전송 최적화가 아니라 대상에서 파일을 제거할 권한이야. 소스와 대상을 뒤집거나 제외 규칙을 잘못 쓰면 백업까지 잃을 수 있어. 스냅샷이나 별도 백업을 확보하고 dry run 결과를 검토한 뒤 사용해.