> 파일 및 디렉토리 관리 > rsync

rsync: 파일 및 디렉토리 동기화

rsync는 로컬 또는 원격 시스템 간에 파일과 디렉토리를 효율적으로 동기화하는 강력한 유틸리티입니다. 변경된 부분만 전송하는 델타 전송 알고리즘을 사용하여 네트워크 대역폭을 절약하고 전송 속도를 최적화합니다. 백업, 미러링, 파일 배포 등 다양한 용도로 활용됩니다.

개요

rsync는 파일의 변경된 부분만 전송하는 '델타 전송' 방식을 사용하여 대용량 파일이나 많은 수의 파일을 동기화할 때 매우 효율적입니다. 로컬 파일 시스템 간, 로컬에서 원격으로, 원격에서 로컬로 파일을 전송할 수 있습니다.

주요 특징

  • 델타 전송 (변경 부분만 전송)
  • 로컬 및 원격 동기화 지원
  • 권한, 소유자, 타임스탬프 등 메타데이터 유지
  • 압축 전송 및 대역폭 제어
  • 파일 제외/포함 패턴 지정

주요 옵션

rsync는 매우 다양한 옵션을 제공하지만, 다음은 가장 일반적으로 사용되는 옵션들입니다.

기본 동작 및 아카이브

전송 제어

네트워크

생성된 명령어:

명령어를 조합해 보세요.

설명:

`rsync` 명령어를 실행합니다.

위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.

사용 예시

rsync의 다양한 사용 시나리오를 보여주는 예시입니다.

로컬 디렉토리 동기화 (가장 일반적)

rsync -avz /path/to/source/ /path/to/destination/

source 디렉토리의 내용을 destination 디렉토리로 복사/동기화합니다. -a (아카이브), -v (자세히), -z (압축) 옵션 조합은 가장 흔하게 사용됩니다.

원격 서버로 파일 푸시 (Push)

rsync -avz /path/to/local_source/ user@remote_host:/path/to/remote_destination/

로컬의 source 디렉토리를 원격 서버의 destination 디렉토리로 동기화합니다.

원격 서버에서 파일 풀 (Pull)

rsync -avz user@remote_host:/path/to/remote_source/ /path/to/local_destination/

원격 서버의 source 디렉토리를 로컬의 destination 디렉토리로 동기화합니다.

원본과 대상 미러링 (--delete 옵션)

rsync -avz --delete /path/to/source/ /path/to/destination/

원본 디렉토리와 대상을 정확히 일치시킵니다. 원본에 없는 파일은 대상에서 삭제됩니다. `--dry-run`으로 먼저 테스트하는 것을 강력히 권장합니다.

특정 파일/디렉토리 제외

rsync -avz --exclude='*.log' --exclude='temp/' /path/to/source/ /path/to/destination/

로그 파일과 'temp' 디렉토리를 동기화에서 제외합니다.

실행 전 시뮬레이션 (--dry-run)

rsync -avz --delete --dry-run /path/to/source/ /path/to/destination/

실제로 파일을 변경하지 않고, rsync가 어떤 작업을 수행할지 미리 보여줍니다. 특히 `--delete` 옵션 사용 전에 필수적입니다.

설치

rsync는 대부분의 Linux 배포판에 기본적으로 설치되어 있지만, 만약 설치되어 있지 않다면 다음 명령어를 사용하여 설치할 수 있습니다.

Debian/Ubuntu

sudo apt update
sudo apt install rsync

CentOS/RHEL/Fedora

sudo yum install rsync

Arch Linux

sudo pacman -S rsync

팁 & 주의사항

rsync를 더욱 효과적이고 안전하게 사용하기 위한 팁과 주의사항입니다.

경로의 마지막 슬래시 (/) 중요성

원본 경로의 마지막 슬래시 유무에 따라 동작이 달라집니다.

  • `/path/to/source/` (슬래시 있음): `source` 디렉토리 '내용물'을 대상에 복사합니다.
  • `/path/to/source` (슬래시 없음): `source` 디렉토리 '자체'를 대상에 복사합니다. (대상 디렉토리 안에 source 디렉토리가 생성됨)

--dry-run 옵션 활용

특히 `--delete`와 같은 파괴적인 옵션을 사용할 때는 반드시 `--dry-run`으로 먼저 테스트하여 예상치 못한 데이터 손실을 방지하세요.

권한 및 소유자 문제

`--archive` 옵션은 권한과 소유자를 보존하려고 시도하지만, 대상 시스템에서 해당 사용자/그룹이 존재하지 않거나 권한이 없는 경우 문제가 발생할 수 있습니다. 이 경우 `sudo`를 사용하거나 `--no-p` (권한 보존 안 함), `--no-o` (소유자 보존 안 함), `--no-g` (그룹 보존 안 함) 등의 옵션을 고려할 수 있습니다.

대역폭 제한

네트워크 대역폭을 너무 많이 사용하지 않도록 `--bwlimit=KBPS` 옵션을 사용하여 전송 속도를 제한할 수 있습니다. (예: `--bwlimit=1000`은 1MB/s로 제한)


동일 카테고리 명령어