개요
`rsync --delete`는 원본 디렉토리의 내용을 대상 디렉토리로 복사하면서, 대상 디렉토리에만 존재하는 파일이나 디렉토리를 삭제하여 두 위치를 완벽하게 동기화합니다. 주로 백업 동기화, 웹 서버 배포, 개발 환경 동기화 등에서 사용됩니다.
주요 특징
- 원본과 대상 디렉토리의 완벽한 동기화
- 대상에만 있는 파일/디렉토리 삭제
- 증분 전송으로 효율적인 동기화
- 네트워크를 통한 원격 동기화 지원
주요 옵션
`rsync --delete` 사용 시 함께 활용되는 주요 옵션들입니다. 특히 `--dry-run` 옵션은 치명적인 실수를 방지하기 위해 반드시 먼저 사용해야 합니다.
동기화 제어
생성된 명령어:
명령어를 조합해 보세요.
설명:
`rsync-delete` 명령어를 실행합니다.
위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.
사용 예시
`rsync --delete`는 강력한 기능이므로, 항상 `--dry-run` 옵션을 사용하여 먼저 결과를 확인하는 것이 중요합니다.
삭제 작업 미리보기 (필수)
rsync -avn --delete /path/to/source/ /path/to/destination/
원본 디렉토리 (`/path/to/source`)와 대상 디렉토리 (`/path/to/destination`)를 동기화할 때, 어떤 파일이 삭제될지 미리 확인합니다. 실제 변경은 일어나지 않습니다.
실제 동기화 및 삭제
rsync -av --delete /path/to/source/ /path/to/destination/
미리보기로 안전을 확인한 후, 실제로 원본과 대상을 동기화하고 대상에만 있는 파일을 삭제합니다. `-a`는 아카이브 모드, `-v`는 자세한 출력을 의미합니다.
특정 파일/디렉토리 제외하고 동기화 및 삭제
rsync -av --delete --exclude='logs/' --exclude='*.tmp' /path/to/source/ /path/to/destination/
원본에 없는 파일을 대상에서 삭제하되, 특정 파일이나 디렉토리(예: `logs/` 디렉토리와 `*.tmp` 파일)는 삭제 대상에서 제외하고 동기화합니다.
원격 서버와 동기화 및 삭제
rsync -av --delete /path/to/local/source/ user@remote_host:/path/to/remote/destination/
로컬 디렉토리의 내용을 원격 서버의 디렉토리와 동기화하고, 원격 서버에만 있는 파일을 삭제합니다. SSH를 통해 안전하게 전송됩니다.
팁 & 주의사항
`rsync --delete`는 매우 강력하고 파괴적인 명령이 될 수 있으므로, 사용 시 다음 사항들을 반드시 숙지해야 합니다.
가장 중요한 주의사항
- **항상 `--dry-run` (-n) 먼저 사용**: 실제 실행 전에 어떤 파일이 삭제될지 반드시 확인하세요.
- **원본(Source)과 대상(Destination) 경로 확인**: 경로를 잘못 지정하면 의도치 않은 데이터 손실이 발생할 수 있습니다.
- **백업 필수**: 중요한 데이터를 다룰 때는 항상 사전에 백업을 수행하세요.
- **슬래시 (/)의 중요성**: 원본 경로 끝에 슬래시가 있으면 디렉토리 '내용물'을, 없으면 '디렉토리 자체'를 복사합니다. `--delete`와 함께 사용할 때는 이 차이가 중요합니다.
경로 슬래시 (/)의 차이
원본 경로의 마지막 슬래시 유무에 따라 동작 방식이 달라집니다.
- `rsync -av --delete source/ dest/`: `source` 디렉토리의 *내용물*을 `dest`로 복사하고, `dest`에만 있는 파일을 삭제합니다. `source` 디렉토리 자체는 `dest`에 생성되지 않습니다.
- `rsync -av --delete source dest/`: `source` 디렉토리 *자체*를 `dest` 디렉토리 안에 복사합니다. 즉, `dest/source/` 경로가 생성됩니다. `dest`에 `source` 디렉토리와 이름이 같은 다른 파일이 있다면 삭제될 수 있습니다.