홈/엔지니어/Linux / Shell/rsync로 안전한 파일 동기화 및 백업…
Linux / Shell중급UbuntuDebianCentOSmacOSrsync백업동기화

rsync로 안전한 파일 동기화 및 백업

rsync의 핵심 옵션부터 원격 서버 동기화, 증분 백업 자동화까지 실무 중심으로 설명합니다.

목차
  1. rsync 기본 구조
  2. 필수 옵션
  3. 로컬 동기화
  4. 원격 서버 동기화
  5. 증분 백업 스크립트
  6. 성능 튜닝

rsync 기본 구조

Bash
rsync [옵션] [출발지] [목적지]

필수 옵션

옵션의미
-aarchive 모드 (권한, 소유자, 타임스탬프, 심볼릭링크 보존)
-vverbose (진행상황 출력)
-z압축 전송 (원격 전송 시 유용)
-P진행률 표시 + 부분 전송 재개
--delete목적지에만 있는 파일 삭제 (미러링)
--dry-run실제 실행 없이 미리보기
--exclude특정 파일/디렉터리 제외

로컬 동기화

Bash
# 기본 복사 (trailing slash 주의)
rsync -av /src/dir/ /dst/dir/

# trailing slash 없으면 디렉터리 자체가 복사됨
rsync -av /src/dir  /dst/       # → /dst/dir/
rsync -av /src/dir/ /dst/dir/   # → /dst/dir/ 내용만

# 미러링 (목적지에서 사라진 파일도 삭제)
rsync -av --delete /src/dir/ /dst/dir/

원격 서버 동기화

Bash
# 로컬 → 원격 업로드
rsync -avz -P /local/app/ user@server:/opt/app/

# 원격 → 로컬 다운로드 (백업)
rsync -avz user@server:/var/log/ /backup/logs/

# SSH 포트 지정
rsync -avz -e "ssh -p 2222" /local/ user@server:/remote/

# 특정 파일 제외
rsync -av --exclude="*.log" --exclude=".git" /src/ /dst/

증분 백업 스크립트

Bash
#!/bin/bash
BACKUP_ROOT="/mnt/backup"
SOURCE="/var/www"
DATE=$(date +%Y-%m-%d)
LATEST="$BACKUP_ROOT/latest"
DEST="$BACKUP_ROOT/$DATE"

rsync -av --delete \
  --link-dest="$LATEST" \
  --exclude="*.tmp" \
  --exclude="node_modules" \
  "$SOURCE/" "$DEST/"

rm -f "$LATEST"
ln -s "$DEST" "$LATEST"
echo "Backup complete: $DEST"

--link-dest는 하드링크를 이용한 증분 백업 — 변경되지 않은 파일은 공간을 추가로 차지하지 않습니다.


성능 튜닝

Bash
# 압축 레벨 조정 (0~9, 기본 6)
rsync -av --compress-level=1 /src/ user@server:/dst/

# 체크섬 기반 비교 (타임스탬프 대신)
rsync -avc /src/ /dst/
#rsync#백업#동기화#파일전송#linux
편집 안내 · Editorial Note

AI 도구가 초안 작성에 사용될 수 있습니다. 명령어의 실행 여부와 검증 환경은 각 가이드에 기재된 근거를 확인하세요. 적용 전 사용 중인 버전의 공식 문서를 확인하고, 오류는 이메일로 알려주세요. 이메일로 제보

주제 관련 공식 문서(자동 연결 · 문장별 근거 아님)GNU/Linux man 페이지 ↗

질문 & 답변 (Q&A)

이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.