rsync — 파일 동기화

단방향 파일 동기화 도구. 첫 실행은 전체 복사, 이후엔 바뀐 파일만 전송.
대규모 프로젝트에 강하고, LAN에서 Pi ↔ 노트북 공유에 적합.

기본 옵션

옵션의미
-a권한·타임스탬프·심볼릭링크 등 속성 전부 보존 (archive)
-v어떤 파일 전송됐는지 출력 (verbose)
-z전송 중 압축. LAN이면 큰 차이 없음
--progress파일별 진행률 표시 (대규모일 때 유용)

기본 사용법

# 노트북 → Pi
rsync -avz ./프로젝트/ galesky@192.168.0.37:~/프로젝트/

# Pi → 노트북
rsync -avz galesky@192.168.0.37:~/프로젝트/ ./프로젝트/
끝에 / 주의 — src/는 폴더 내용을, src는 폴더 자체를 복사.

.gitignore 자동 제외

rsync -avz --filter=':- .gitignore' --exclude='.git/' \
  ./프로젝트/ galesky@192.168.0.37:~/프로젝트/

:- .gitignore — 각 디렉토리의 .gitignore를 읽어서 해당 항목을 자동 제외.

git이 추적하는 파일만 정확히 보내기

git ls-files | rsync -avz --files-from=- . galesky@192.168.0.37:~/프로젝트/

수동 제외

rsync -avz \
  --exclude='node_modules/' \
  --exclude='.next/' \
  --exclude='__pycache__/' \
  ./프로젝트/ galesky@192.168.0.37:~/프로젝트/

도구 비교

rsync

단방향, 수동 실행
명령어 칠 때만 동작
충돌 처리 없음 (덮어씀)
→ 배포, 백업에 적합

Syncthing

양방향, 자동 실행
백그라운드 상시 동작
충돌 처리 있음
→ 실시간 공유에 적합
코딩 작업 공유 → Git (이미 버전관리 됨)
단순 파일 공유 → Syncthing
백업 / 배포 → rsync