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

rsync --delete: 원본과 동기화하여 대상 파일 삭제

`rsync` 명령어의 `--delete` 옵션은 원본 디렉토리와 대상 디렉토리를 동기화할 때, 원본에 없는 파일을 대상 디렉토리에서 삭제하는 기능을 제공합니다. 이는 백업 또는 미러링 시 대상 디렉토리를 원본과 정확히 일치시키고자 할 때 유용합니다. 강력한 기능인 만큼 사용에 각별한 주의가 필요합니다.

개요

`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` 디렉토리와 이름이 같은 다른 파일이 있다면 삭제될 수 있습니다.

동일 카테고리 명령어