C.W.K.
Stream
Lesson 03 of 08 · published

rsync — 똑똑한 파일 동기화

~13 min · rsync, sync, backup

Level 0창 구경꾼
0 XP0/95 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

거의 모든 복사의 정답

rsync 가 두 위치 간 (local-local, local-remote, remote-remote) 복사하지만 바뀐 부분만 전송. 권한 보존, symlink 처리, 네트워크 끊김 후 재개, 무슨 일 했는지 정확히 보고.

항상 치는 flag 세트

rsync -avzP src/ dest/

  • -a — archive (재귀 + 권한 + 시간 + symlink).
  • -v — verbose, 파일 나열.
  • -z — 와이어 압축.
  • -P — partial + progress (재개 가능 + 파일별 진행도).

마지막 슬래시 룰

  • rsync -av src/ dest/ — src 의 내용 을 dest 로.
  • rsync -av src dest/ — src 자체 를 dest 로 → dest/src/ 생성.

source 의 마지막 슬래시가 매번 rsync 전에 내리는 결정.

유용한 추가

  • --delete — src 에 없는 dest 파일 제거. mirror 모드. 신중.
  • --exclude='node_modules' --exclude='.git' — 패턴 제외.
  • --exclude-from=.rsyncignore — 파일에서 패턴 읽기.
  • --dry-run (또는 -n) — 실제 동작 없이 시뮬레이션. 항상 -n 먼저.
  • -e ssh — 명시적 전송 (요즘 default 가 이미 ssh).

실전 패턴

  • 홈 백업: rsync -avzP ~/ /Volumes/backup/home/
  • 원격 mirror: rsync -avzP --delete ./site/ user@web:/srv/site/
  • 원격에서 pull: rsync -avzP user@server:/data/ ~/local-data/

Code

mirror 는 항상 dry-run 먼저·bash
rsync -avzP --delete -n \
  --exclude='.DS_Store' --exclude='node_modules' \
  ./site/ user@web:/srv/site/
# Looks right? Drop the -n
rsync -avzP --delete \
  --exclude='.DS_Store' --exclude='node_modules' \
  ./site/ user@web:/srv/site/

External links

Exercise

샌드박스: mkdir -p /tmp/src/sub; touch /tmp/src/{a,b,c}.txt. rsync -avP -n /tmp/src/ /tmp/dst/ dry-run 출력 읽기. -n 빼고 다시. /tmp/dst 에 파일 추가 후 --delete -n 으로 제거 대상 확인.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.