Linux용 Rsync: 파일 동기화, 복사 및 백업

9분 소요 - 2025년 5월 24일

hero section cover
목차
  • 리눅스용 Rsync: 전문가처럼 파일을 동기화, 복사 및 백업하는 방법
  • rsync란 무엇인가요?
  • cp나 scp 대신 rsync를 사용하는 이유
  • 일반적인 rsync 옵션
  • rsync 예시
  • cron을 이용한 rsync 자동화
  • 마무리
공유

증분 전송, SSH를 통한 원격 동기화, cron을 사용한 예약 백업, 후행 슬래시 트랩을 피하기 위해 Linux에서 rsync를 사용하는 방법에 대해 설명합니다.

리눅스용 Rsync: 전문가처럼 파일을 동기화, 복사 및 백업하는 방법

Rsync는 리눅스 시스템 간에 파일을 복사하는 표준 도구입니다. 이는 cp 또는 scp 보다 빠르며, 네트워크 연결이 끊겼을 때 복구할 수 있고, 실제로 변경된 부분만 전송합니다. 이 글에서는 rsync의 기능, 알아두면 유용한 옵션, 가장 자주 사용할 예제, 그리고 cron을 사용하여 예약하는 방법을 다룹니다.


 

rsync란 무엇인가요?

rsync는 서로 다른 위치 간에 파일을 복사하고 동기화하는 명령줄 유틸리티입니다. 로컬 환경에서, SSH를 통해 원격 호스트에서, 또는 rsync 데몬을 통해 작동합니다. cp 또는 scp: rsync는 먼저 소스와 대상을 비교한 후, 차이점만 전송합니다. 100GB 디렉터리에서 200MB가 변경된 경우, rsync는 200MB만 전송합니다. cpscp 는 전체를 이동합니다.

rsync는 모든 최신 리눅스 배포판에 기본으로 포함되어 있습니다. 설치되어 있지 않다면: apt install rsync 또는 dnf install rsync.

cp나 scp 대신 rsync를 사용하는 이유

rsync가 일반적인 복사 작업보다 뛰어난 세 가지 이유:

  • 증분 방식입니다. 이후 실행 시에는 전체 파일이 아닌 변경된 바이트만 전송합니다. 백업 및 미러링의 경우, 이로 인해 밤새 걸리던 작업이 몇 분으로 단축됩니다.
  • 중단에도 강합니다. --partial, 전송이 절반 정도 진행된 50GB 파일은 처음부터 다시 시작하는 대신 중단된 지점부터 재개됩니다.
  • 메타데이터를 보존합니다. 아카이브 모드(-a)는 권한, 소유권, 심볼릭 링크, 타임스탬프를 유지합니다. 시스템 파일, 소스 트리, 그리고 속성이 중요한 모든 경우에 필수적입니다.

작은 파일을 한 번만 복사하는 경우에는 scp 를 사용해도 무방합니다. 반복적으로 수행해야 하거나, 대역폭을 많이 차지하거나, 중단을 이어서 재개해야 할 수 있는 작업에는 rsync를 사용하십시오.

일반적인 rsync 옵션

실제로 자주 사용하게 될 옵션:

옵션기능
-a아카이브 모드. 권한, 소유권, 심볼릭 링크, 타임스탬프를 보존합니다. 다음 옵션과 동일합니다. -rlptgoD.
-vVerbose와 동일합니다. 전송 중인 파일을 나열합니다.
-z전송 중 압축. 느리거나 비용이 많이 드는 연결에서 유용하며, LAN이나 이미 압축된 콘텐츠에는 덜 유용합니다.
-P결합 --partial--progress를 결합합니다. 중단된 전송을 재개하고 실시간 진행 상황을 표시합니다.
--delete소스에 존재하지 않는 파일을 대상에서 삭제합니다. 진정한 미러링을 위해서는 필수입니다.
--exclude패턴에 맞는 파일을 건너뜁니다.
--exclude-from=FILE파일에서 제외 패턴을 읽습니다. 여러 --exclude 플래그를 연결하는 것보다 깔끔합니다.
--dry-run아무것도 전송하지 않았을 때의 결과를 표시합니다.
--bwlimit=KBPS초당 킬로바이트 단위로 대역폭 사용량을 제한합니다. 업무 시간 중에 실행되는 백업에 유용합니다.
--checksum크기나 수정 시간 대신 체크섬을 기준으로 파일을 비교합니다. 속도는 느리지만 극단적인 경우를 포착할 수 있습니다.
-e ssh전송에 SSH를 사용합니다. 대부분의 최신 설치 환경에서는 기본적으로 적용됩니다.

기본 동작은 파일 크기와 수정 시간을 비교하는 것으로, 속도가 빠르고 거의 항상 정확합니다. 다음의 경우 --checksum 배포 과정에서 내용이 변경되지 않은 채 타임스탬프만 재기록되거나, 비트 단위의 손상이 의심되는 경우

rsync 예시

로컬에서 디렉터리 복사:

rsync -av /source/path/ /destination/path/

SSH를 통해 원격 서버와 동기화:

rsync -avz /local/dir/ user@remote:/remote/dir/

파일이나 디렉터리를 삭제하는 등 데이터 손실이 발생할 수 있는 작업을 수행하기 전에 테스트 실행:

rsync -avz --dry-run /local/dir/ user@remote:/dir/

두 디렉터리를 미러링하고, 대상 측의 삭제된 파일도 포함:

rsync -av --delete /source/ /destination/

로그 파일과 임시 디렉터리를 제외하기:

rsync -av --exclude='*.log' --exclude='tmp/' /src/ /dest/

중단될 수 있는 대용량 전송 재개:

rsync -avP user@remote:/backups/big.img /local/

SSH 세션이 끊어지면 동일한 명령을 다시 실행하십시오. -Prsync는 처음부터 다시 시작하는 대신 중단된 지점부터 이어서 진행합니다.

비수기 백업 시 업링크가 포화 상태가 되지 않도록 대역폭을 50 MB/s로 제한합니다:

rsync -avz --bwlimit=50000 /local/dir/ user@remote:/dir/

끝에 붙는 슬래시의 함정

rsync에서 가장 흔한 실수:

rsync -av /source  /destination/    # copies the 'source' directory INTO /destination
rsync -av /source/ /destination/    # copies the CONTENTS of /source into /destination

소스 경로의 끝에 슬래시가 있으면 "이 디렉터리 내의 모든 파일"을 의미합니다. 끝에 슬래시가 없으면 "이 디렉터리 자체"를 의미합니다. 확실하지 않다면, 특히 --dry-run 를 먼저 실행하세요. 특히 다음 명령과 결합된 경우 --delete.

cron을 이용한 rsync 자동화

정기 백업을 위해서는 다음 세 가지가 필요합니다:

  1. 대상 시스템에 대한 비밀번호 없는 SSH 접속. cron 작업은 비밀번호를 입력할 수 없습니다. 키를 생성하여 백업 호스트에 복사하십시오:

    ssh-keygen -t ed25519
    ssh-copy-id user@backup-host
  2. crontab의 한 줄 명령어가 아닌 스크립트. 테스트와 로깅이 더 용이합니다:

    #!/bin/bash
    LOG=/var/log/rsync-backup.log
    rsync -az --delete /etc/ user@backup:/backups/$(hostname)/etc/ >> "$LOG" 2>&1

    다음 명령어로 실행 권한을 부여하십시오 chmod +x.

  3. 스크립트를 실행할 cron 항목. 다음 명령어로 편집하세요: crontab -e:

    0 2 * * * /usr/local/bin/rsync-backup.sh

    이렇게 하면 매일 밤 02:00에 스크립트가 실행됩니다.

실제 운영 환경에서 적용할 만한 두 가지 개선 사항: 스크립트를 flock 로 감싸서 장시간 실행되는 작업이 다음 날 밤 실행과 겹치지 않도록 하고, 출력을 logger 를 통해 출력을 파이프하여, 오류가 시스템 저널에 기록되도록 하여 모니터링에서 이를 포착할 수 있게 하세요.

마무리

rsync는 플래그를 익히는 데 투자한 시간이 거의 즉시 보상을 가져다주는 몇 안 되는 리눅스 도구 중 하나입니다. 주요 내용은 다음과 같습니다:

  • 증분 전송 및 재개 지원 기능 덕분에 rsync는 한 번 이상 실행하는 모든 작업에 적합한 선택입니다
  • -a 아카이브 모드의 경우, -z 압축을 위해, -P 전송 재개 및 진행 상황 확인, --delete 진정한 미러링을 위한 경우
  • 소스 경로의 마지막 슬래시에 주의하세요, 특히 --delete
  • cron 및 SSH 키와 함께 사용하여 자동화된 예약 백업을 설정하십시오

시설 간에 데이터를 이동하는 대규모 백업 작업의 경우, 무제한 대역폭을 제공하는 VPS에서 rsync를 실행하면 전송 용량 제한으로 인해 백업 시간이 제약받지 않습니다.

블로그

이번 주 추천

더 많은 기사
강력하고 계량되지 않는 VPS가 중요한 이유

강력하고 계량되지 않는 VPS가 중요한 이유

미터링되지 않은 VPS는 고정된 포트 속도로 정액제 대역폭을 제공합니다. 계량형 요금제와 어떻게 다른지, 언제 요금이 부과되는지, 구매 전에 확인해야 할 사항은 무엇인지 알아보세요.

7분 소요 - 2025년 5월 9일

Linux 메모리 관리: 스왑, OOM 킬러 및 C그룹

12분 소요 - 2026년 5월 31일

더 많은 기사
background image

질문이 있거나 맞춤형 솔루션이 필요하신가요?

icon

유연한 옵션

icon

글로벌 도달 범위

icon

즉시 배포

icon

유연한 옵션

icon

글로벌 도달 범위

icon

즉시 배포