절대 경로를 사용한 rsync 및 하위 경로 제외

절대 경로를 사용한 rsync 및 하위 경로 제외

내 경로에 다음과 같은 구조가 있다고 가정해 보겠습니다.origin_path

origin_path/X=1/A/...
origin_path/X=1/B/...
origin_path/X=1/C/...
...
origin_path/X=2/A/...
origin_path/X=2/B/...
origin_path/X=2/C/...
...
...

위의 구조를 이라는 다른 경로에 복사하고 destination_path싶지만오직디렉터리에 해당하는 경로를 포함합니다.두번째이상.

즉, 다음과 같은 정보를 얻고 싶습니다.destination_path

destination_path/X=1/B/...
destination_path/X=2/B/...
destination_path/X=3/B/...
...

명확히 하기 위해 대상 경로의 일부 구조가 이미 존재할 수 있습니다(예: 폴더 destination_path/X=*).

내가 이해한 바로는 @Gilles의 의견 덕분에 rsync필터가 이에 적합할 수 있습니다. 그러나 이전에 사용해 본 적이 없으며 제공된 예제에서 추론하는 데 어려움을 겪고 있습니다.Rsync 필터: 하나의 패턴만 복사나의 경우에는.

내 경우에는 어떤 순서로 항목을 포함하거나 제외해야 합니까? rsync에게 origin_pathdestination_path전역 경로를 사용하도록 어떻게 지시합니까 ? (상대 경로로 콘텐츠를 복사하는 대신)

답변1

다음은 원하는 작업을 수행해야 합니다.

rsync --recursive --prune-empty-dirs --include '*/' --include '*/B/**' --exclude '**' origin_path/ destination_path/

첫 번째 규칙에는 모든 디렉터리가 포함됩니다(그렇지 않으면 rsync가 최상위 디렉터리로 드롭다운되지 않습니다). 두 번째 규칙에는 "B" 하위 디렉터리의 모든 항목이 포함됩니다. 세 번째 규칙은 다른 모든 것을 제외합니다. 이 --prune-empty-dirs옵션은 빈 디렉터리를 무시합니다(모든 디렉터리를 포함하기 위해 첫 번째 규칙을 사용했기 때문).

관련 정보