개요
rsync는 리눅스 환경에서 파일과 디렉터리를 빠르고 효율적으로 동기화하고 백업할 수 있는 강력한 도구입니다. 기본 사용법부터 슬래시(/) 유무에 따른 동작 차이, 변경사항만 안전하게 맞추는 실무 핵심 옵션까지 터미널 실습을 통해 살펴봅니다.
rsync 설치 및 기본 로컬 디렉터리 동기화 (-av)
rsync 파일 백업 및 동기화 실습을 진행하기 위해 패키지 목록을 갱신하고 rsync 패키지를 설치합니다.

동기화 실습에 사용할 원본 디렉터리와 대상 디렉터리를 준비하기 위해 mkdir -p /tmp/rsync_test/src /tmp/rsync_test/dest 명령어를 실행합니다.

동기화 테스트에 사용할 첫 번째 예제 파일을 생성하기 위해 echo 'data 1' > /tmp/rsync_test/src/file1.txt 명령어를 실행합니다.

동기화 테스트에 사용할 두 번째 예제 파일을 생성하기 위해 echo 'data 2' > /tmp/rsync_test/src/file2.txt 명령어를 실행합니다.

rsync 명령어는 파일과 디렉터리를 로컬 또는 원격 시스템 간에 효율적으로 백업하고 동기화합니다.
원본 디렉터리 경로 끝에 슬래시(/)를 붙여 디렉터리 내부 파일들을 대상 디렉터리로 속성을 유지한 채 복사합니다.
⚙️ [주요 옵션]
-a : 아카이브 모드로 동작하여 파일 권한, 소유자, 수정 시간, 심볼릭 링크 등의 메타데이터를 유지하며 재귀적으로 동기화합니다.-v : 전송되는 파일 목록과 진행 요약 정보를 상세히 출력합니다.-z : 데이터 전송 중 압축을 적용하여 네트워크 사용량을 줄입니다.-u : 대상 위치의 파일이 원본보다 최신인 경우 덮어쓰지 않고 건너뜁니다.--delete : 원본 디렉터리에서 삭제된 파일을 대상 디렉터리에서도 삭제하여 두 디렉터리를 동일한 상태로 유지합니다.-P : 전송 진행률 표시(--progress)와 중단된 전송 이어받기(--partial) 기능을 동시에 활성화합니다.-n : 실제 파일 변경 없이 동기화 작업이 어떻게 수행될지 미리 시뮬레이션(Dry-run)합니다.

대상 디렉터리에 원본 파일들이 지정된 권한과 파일 속성을 유지한 채 정상적으로 복사되었는지 확인하기 위해 ls -l /tmp/rsync_test/dest 명령어를 실행합니다.

경로 끝 슬래시(/) 유무 차이와 증분 동기화 이해
증분 동기화 테스트를 위해 기존 파일에 내용을 추가하여 수정하기 위해 echo 'data 1 updated' >> /tmp/rsync_test/src/file1.txt 명령어를 실행합니다.

새롭게 추가된 파일이 정상적으로 동기화되는지 확인하기 위해 touch /tmp/rsync_test/src/file3.txt 명령어를 실행하여 새로운 예제 파일을 생성합니다.

rsync -av /tmp/rsync_test/src/ /tmp/rsync_test/dest/ 명령어를 실행하여 원본 디렉터리의 변경 사항을 대상 디렉터리에 동기화합니다.
원본 경로 끝에 슬래시(/)를 명시하여 디렉터리 자체가 아닌 내부 파일들을 복사하며, 변경이 없는 file2.txt는 건너뛰고 수정된 file1.txt와 새로 생성된 file3.txt만 선별하여 증분 전송합니다.

완전 동기화를 위한 –delete 옵션과 안전한 시뮬레이션 (–dry-run)
삭제 동기화 동작을 테스트하기 위해 원본 디렉터리의 예제 파일을 제거하는 rm /tmp/rsync_test/src/file2.txt 명령어를 실행합니다.

rsync -av --delete --dry-run /tmp/rsync_test/src/ /tmp/rsync_test/dest/ 명령어를 실행하여 실제 파일 변경 없이 동기화 작업을 시뮬레이션합니다.--dry-run 옵션을 적용하면 원본에 없는 file2.txt가 대상 디렉터리에서 삭제 대상(deleting file2.txt)으로 지정되는 과정을 안전하게 미리 검증할 수 있습니다.

rsync -av --delete /tmp/rsync_test/src/ /tmp/rsync_test/dest/ 명령어를 실행하여 원본 디렉터리의 상태를 대상 디렉터리에 완전 동기화합니다.--delete 옵션이 실제로 동작하여 원본 디렉터리에서 제거된 file2.txt를 대상 디렉터리에서도 동일하게 삭제합니다.

대상 디렉터리에서 file2.txt가 정상적으로 삭제되고 최신 파일들만 남아 있는지 확인하기 위해 ls -l /tmp/rsync_test/dest 명령어를 실행합니다.

대용량 파일 전송을 위한 압축 및 진행률 확인 (-avzP)
대용량 파일 전송 및 압축 동기화 실습을 위해 10MB 크기의 예제 파일을 생성하는 dd if=/dev/urandom of=/tmp/rsync_test/src/sample_large.dat bs=1M count=10 명령어를 실행합니다.

rsync -avzP /tmp/rsync_test/src/ /tmp/rsync_test/dest/ 명령어를 실행하여 데이터 압축과 실시간 진행률 표시 기능을 활성화한 상태로 동기화합니다.-z 옵션으로 네트워크 대역폭을 절약하며 데이터를 압축 전송하고, -P 옵션을 통해 대용량 파일의 전송률(100%)과 실시간 전송 속도 등의 진행 상태를 확인하며 안전하게 전송합니다.

지금까지 리눅스 환경에서 효율적인 파일 백업과 동기화를 지원하는 rsync 명령어의 핵심 옵션과 실습 예제를 살펴보았습니다.
상황에 맞는 적절한 옵션을 활용해 안전하고 빠른 데이터 동기화 환경을 구축해 보시기 바랍니다.