rsync
선행 /
으로 시작하는 글로벌 필터 규칙 은 전송 루트에 고정 됩니다. 매뉴얼 페이지의 "INCLUDE / EXCLUDE PATTERN RULES"섹션에서 인용 :
패턴이 /로 시작하면 파일 계층 구조의 특정 지점에 고정되고, 그렇지 않으면 경로 이름의 끝과 일치합니다. 이것은 정규 표현식에서 ^와 비슷합니다. 따라서 "/ foo"는 "전송의 루트"(글로벌 규칙의 경우) 또는 병합 파일의 디렉토리 (디렉토리 별 규칙의 경우)에서 "foo"의 이름과 일치합니다.
명령 ( rsync ... -arv /home/ben home-ben/
)에서 파일 /home/ben/foo
이 (으 ) 로 전송됩니다 home-ben/ben/foo
. 전송 루트는 home-ben
이고 올바른 필터 경로는 /ben/foo
입니다. 그러므로,
- 일치
/home/ben/.ccache
하려면 필터 경로가 필요합니다./ben/.ccache
- 일치
/home/ben/build/
하려면 필터 경로가 필요합니다./ben/build/
보다 자세한 설명은 rsync(1)
매뉴얼 페이지 의 "ANCHORING INCLUDE / EXCLUDE PATTERNS"섹션에서 확인할 수 있습니다 .
단순히 선두를 떠나는 /
것이 반드시 원하는 것은 아닙니다. 동일한 매뉴얼 페이지 섹션에서 다시 인용 :
규정되지 않은 "foo"는 알고리즘이 위에서 아래로 재귀 적으로 적용되기 때문에 트리의 어느 곳에서나 "foo"라는 이름과 일치합니다. 마치 각 경로 구성 요소가 파일 이름의 끝이되는 것처럼 작동합니다. 고정되지 않은 "sub / foo"조차 "sub"라는 디렉토리에서 "foo"가 발견 된 계층 구조의 어느 시점에서나 일치합니다. 전송 루트에서 일치하는 패턴을 지정하는 방법에 대한 자세한 내용은 ANCHORING INCLUDE / EXCLUDE PATTERNS 섹션을 참조하십시오.
따라서의 필터 패턴 build/
의 빌드 디렉토리 어디서나 일치 것 /home/ben
조차 /home/ben/many/sub/directories/build/
.