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

rsync-exclude: 파일 동기화 시 특정 파일/디렉토리 제외

`rsync` 명령어는 로컬 및 원격 시스템 간에 파일을 효율적으로 동기화하는 데 사용되는 강력한 도구입니다. 특히, `--exclude` 및 `--exclude-from` 옵션을 통해 동기화 대상에서 특정 파일, 디렉토리 또는 패턴에 일치하는 항목을 제외할 수 있습니다. 이 가이드는 `rsync`의 제외 기능을 중심으로 설명하며, 불필요한 파일 전송을 방지하고 특정 데이터만 백업하거나 복사할 때 매우 유용합니다.

개요

`rsync`의 제외 기능은 복잡한 파일 동기화 시나리오에서 매우 중요합니다. 특정 로그 파일, 임시 파일, 버전 관리 시스템 메타데이터(.git, .svn) 등을 동기화 대상에서 제외하여 전송 시간을 단축하고, 대상 공간을 절약하며, 불필요한 데이터를 복사하지 않도록 합니다.

주요 특징

`rsync`의 제외 기능이 제공하는 핵심적인 특징들입니다.

  • **패턴 기반 제외**: 와일드카드(glob) 패턴을 사용하여 파일 이름이나 경로를 기준으로 제외할 수 있습니다.
  • **파일 목록 기반 제외**: 제외할 패턴들을 별도의 파일에 작성하여 관리할 수 있습니다.
  • **유연한 규칙 적용**: `--include` 옵션과 조합하여 복잡한 포함/제외 규칙을 정의할 수 있습니다.
  • **성능 최적화**: 불필요한 파일 전송을 줄여 동기화 속도를 향상시킵니다.

주요 옵션

`rsync` 명령어에서 파일 및 디렉토리를 제외하는 데 사용되는 핵심 옵션들입니다.

제외 규칙 지정

기타 유용한 옵션

생성된 명령어:

명령어를 조합해 보세요.

설명:

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

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

사용 예시

`rsync`의 제외 옵션을 활용한 실제 사용 예시들입니다.

특정 파일 확장자 제외

rsync -av --exclude='*.log' --exclude='*.tmp' /path/to/source/ /path/to/destination/

소스 디렉토리에서 `.log` 파일과 `.tmp` 파일을 제외하고 대상 디렉토리로 동기화합니다.

특정 디렉토리 제외

rsync -av --exclude='node_modules/' --exclude='.git/' /path/to/source/ /path/to/destination/

소스 디렉토리에서 `node_modules`와 `.git` 디렉토리를 제외하고 동기화합니다.

제외 목록 파일 사용

rsync -av --exclude-from=exclude_list.txt /path/to/source/ /path/to/destination/

`exclude_list.txt` 파일에 정의된 패턴들을 사용하여 동기화 대상에서 제외합니다. **exclude_list.txt 내용 예시:** ``` *.bak /temp_files/ logs/ ```

특정 파일만 포함하고 나머지는 제외

rsync -av --include='*.conf' --exclude='*' /path/to/source/ /path/to/destination/

모든 파일을 기본적으로 제외하고, `.conf` 확장자를 가진 파일만 포함하여 동기화합니다. `--include`와 `--exclude`의 순서가 중요합니다.

원격 서버로 동기화 시 특정 파일 제외

rsync -avz --exclude='.DS_Store' --exclude='cache/' /path/to/local/user@remote_host:/path/to/remote/

로컬 디렉토리의 내용을 원격 서버로 동기화하면서, `.DS_Store` 파일과 `cache/` 디렉토리를 제외합니다.

팁 & 주의사항

`rsync`의 제외 옵션을 효과적으로 사용하고 잠재적인 문제를 피하기 위한 팁과 주의사항입니다.

패턴 매칭 규칙 이해

제외 패턴은 `rsync`의 필터 규칙에 따라 작동합니다.

  • **와일드카드**: `*`는 어떤 문자열이든 일치하고, `?`는 단일 문자에 일치합니다. `**`는 디렉토리 경계를 넘어 일치합니다.
  • **경로**: 패턴이 `/`로 시작하면 소스 디렉토리의 루트에 상대적입니다. `/`로 끝나면 디렉토리만 일치합니다.
  • **상대 경로**: 패턴에 `/`가 없으면 모든 디렉토리 레벨에서 일치합니다. 예: `--exclude='temp'`는 `/path/to/source/temp`와 `/path/to/source/subdir/temp` 모두 제외합니다.

옵션 순서의 중요성

`--include`와 `--exclude` 옵션은 명령줄에 나타나는 순서대로 처리됩니다. 따라서 특정 파일을 포함하면서 나머지를 제외하려면 `--include`를 먼저 사용하고 `--exclude='*'`를 나중에 사용해야 합니다.

  • `--include='*.txt' --exclude='*'` (모든 `.txt` 파일 포함, 나머지 제외)
  • `--exclude='*' --include='*.txt'` (모든 파일 제외, `.txt` 파일도 제외됨 - 의도치 않은 결과)

테스트 실행 (`--dry-run`) 활용

실제로 중요한 데이터를 동기화하기 전에 항상 `-n` 또는 `--dry-run` 옵션을 사용하여 예상되는 동작을 확인하십시오. 이는 의도치 않은 파일 제외나 포함을 방지하는 데 매우 효과적입니다.

  • `rsync -avn --exclude='*.log' /path/to/source/ /path/to/destination/`

디버깅을 위한 `-vv` 옵션

제외 규칙이 예상대로 작동하지 않을 때 `-vv` (verbose) 옵션을 추가하면 `rsync`가 어떤 파일을 건너뛰고 어떤 규칙에 의해 제외되었는지 자세한 정보를 출력하여 디버깅에 도움이 됩니다.

  • `rsync -avv --exclude='*.bak' /path/to/source/ /path/to/destination/`

동일 카테고리 명령어