리눅스 rsync 명령어 완벽 가이드: 파일 백업 및 동기화 실습

개요

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

rsync 설치 및 기본 로컬 디렉터리 동기화 (-av)

rsync 파일 백업 및 동기화 실습을 진행하기 위해 패키지 목록을 갱신하고 rsync 패키지를 설치합니다.

apt-get update -qq && apt-get install -y rsync

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

mkdir -p /tmp/rsync_test/src /tmp/rsync_test/dest

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

echo ‘data 1’ > /tmp/rsync_test/src/file1.txt

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

echo ‘data 2’ > /tmp/rsync_test/src/file2.txt

rsync 명령어는 파일과 디렉터리를 로컬 또는 원격 시스템 간에 효율적으로 백업하고 동기화합니다.
원본 디렉터리 경로 끝에 슬래시(/)를 붙여 디렉터리 내부 파일들을 대상 디렉터리로 속성을 유지한 채 복사합니다.
⚙️ [주요 옵션]

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

rsync -av /tmp/rsync_test/src/ /tmp/rsync_test/dest/

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

ls -l /tmp/rsync_test/dest

경로 끝 슬래시(/) 유무 차이와 증분 동기화 이해

증분 동기화 테스트를 위해 기존 파일에 내용을 추가하여 수정하기 위해 echo 'data 1 updated' >> /tmp/rsync_test/src/file1.txt 명령어를 실행합니다.

echo ‘data 1 updated’ » /tmp/rsync_test/src/file1.txt

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

touch /tmp/rsync_test/src/file3.txt

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

rsync -av /tmp/rsync_test/src/ /tmp/rsync_test/dest/

완전 동기화를 위한 –delete 옵션과 안전한 시뮬레이션 (–dry-run)

삭제 동기화 동작을 테스트하기 위해 원본 디렉터리의 예제 파일을 제거하는 rm /tmp/rsync_test/src/file2.txt 명령어를 실행합니다.

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 –dry-run /tmp/rsync_test/src/ /tmp/rsync_test/dest/

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

rsync -av –delete /tmp/rsync_test/src/ /tmp/rsync_test/dest/

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

ls -l /tmp/rsync_test/dest

대용량 파일 전송을 위한 압축 및 진행률 확인 (-avzP)

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

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 -avzP /tmp/rsync_test/src/ /tmp/rsync_test/dest/

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