개요
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로 제한)