Rsync 명령어 마스터하기

단순 복사를 넘어, 지능적인 파일 동기화의 세계를 경험하세요. 이 대화형 가이드는 당신의 데이터 관리 작업을 혁신적으로 바꿔줄 것입니다.

🚀 Rsync, 왜 사용해야 할까요?

핵심은 변경된 부분만 전송하는 **델타 전송 알고리즘**에 있습니다.

일반 복사 (cp / scp)

10MB 파일에 1KB만 변경되어도
10MB 전체를 전송합니다.

0%

지능형 동기화 (rsync)

오직 변경된 1KB 데이터 조각만
지능적으로 찾아 전송합니다.

0%

🛠️ 대화형 Rsync 명령어 빌더

아래 옵션을 선택하여 필요한 rsync 명령어를 실시간으로 만들어보세요. 옵션에 마우스를 올리면 자세한 설명을 볼 수 있습니다.

기본 & 필수 옵션

권한, 소유자, 시간 등 모든 속성을 보존하며 재귀적으로 복사합니다. 백업 시 사실상 표준 옵션입니다.
파일 전송 과정을 자세히 보여주어 디버깅에 유용합니다.
데이터를 압축해서 전송합니다. 느린 네트워크에서 텍스트 파일 전송 시 유리합니다.
파일 크기 등 용량을 K, M, G 단위로 표시합니다.
파일별 전송 진행 상황을 퍼센트로 보여줍니다. 대용량 파일 전송에 유용합니다.

안전 & 동기화 옵션

경고: 원본에 없는 파일은 대상에서 삭제합니다. 미러링 시 사용하며, --dry-run과 함께 신중히 사용해야 합니다.
가장 중요한 안전장치! 실제 실행 없이 어떤 변경이 일어날지 미리 보여줍니다.
전송이 중단되어도 부분 전송된 파일을 남겨두어, 다음 실행 시 이어서 전송합니다.
특정 패턴의 파일을 전송에서 제외합니다. 예: *.log, node_modules/ 등

🖥️ 생성된 명령어

rsync -a [SOURCE] [DESTINATION]

💡 경로 끝 슬래시(/)의 중요성: source/는 내용물만 복사, source는 디렉토리 자체를 복사합니다.

🎯 실전 활용 시나리오

📁 시나리오 1: 로컬 디렉토리 백업

내 홈 디렉토리(~/documents)의 모든 데이터를 외장 하드(/mnt/backup)로 백업합니다. 모든 파일 속성을 유지하고 진행 상황을 확인합니다.

rsync -av --progress ~/documents/ /mnt/backup/documents_backup/

🌐 시나리오 2: 원격 서버로 백업 (SSH 활용)

로컬 프로젝트 폴더를 원격 서버(192.168.0.100)로 압축하여 전송합니다. SSH 포트가 2222번일 경우를 가정합니다.

rsync -avz -e 'ssh -p 2222' /var/www/my_project/ user@192.168.0.100:/home/user/backups/

🔄 시나리오 3: 운영 서버 미러링 (삭제 옵션)

운영 서버의 웹 콘텐츠를 백업 서버로 완벽하게 복제합니다. 운영 서버에서 삭제된 파일은 백업 서버에서도 삭제됩니다. --delete 옵션은 매우 주의해야 합니다.

# 1. 먼저 --dry-run (-n)으로 테스트하여 어떤 파일이 삭제될지 확인! rsync -avzn --delete user@source_server:/var/www/html/ user@backup_server:/var/www/html/ # 2. 확인 후 안전하다고 판단되면 -n 옵션을 빼고 실제 실행 rsync -avz --delete user@source_server:/var/www/html/ user@backup_server:/var/www/html/

🚫 시나리오 4: 특정 파일/디렉토리 제외하고 백업

프로젝트 폴더 백업 시, 용량이 큰 node_modules 폴더와 불필요한 로그 파일(*.log)은 제외합니다.

rsync -av --exclude 'node_modules/' --exclude '*.log' /path/to/project/ /path/to/backup/

💡 제외할 항목이 많다면 exclude-list.txt 파일을 만들고 --exclude-from='exclude-list.txt' 옵션을 사용하는 것이 더 깔끔합니다.

⏰ 시나리오 5: Cron으로 매일 새벽 자동 백업

매일 새벽 2시에 중요 데이터를 원격 서버로 자동 백업하도록 cron을 설정합니다. 실행 결과는 로그 파일에 기록하여 추적합니다.

# crontab -e 0 2 * * * rsync -a --delete ~/critical_data/ user@remote_server:/backup/ >> /var/log/rsync_backup.log 2>&1

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

이 도구 공유하기