Rsync: 특정 하위 디렉터리만 포함(외부 포함 파일 사용)

Rsync: 특정 하위 디렉터리만 포함(외부 포함 파일 사용)

rsync 옵션을 사용하고 있습니다 include-from="external file". 그 외에는 내 질문이 거의 같습니다.이것.

매우 특정한 하위 폴더를 백업하고 싶지만 일반적으로 숨겨진 폴더는 백업하지 않으려고 합니다. 내가 이 작업을 수행할 수 있었던 유일한 방법은 다음과 같습니다.

+ home/*/.config/libreoffice/
+ home/*/.config/libreoffice/4/
+ home/*/.config/libreoffice/4/user/
+ home/*/.config/libreoffice/4/user/registrymodifications.xcu

# hide the rest ( .local, .wine, most of .config ...)
- home/*/.*/

처음 3줄이 없으면 registrymodifications.xcu상위 수준 디렉터리가 마지막 줄에 "적중"될 때까지 일치하지 않기 때문에 제외됩니다. 따라서 내 경험상 해당 항목을 넣어야 합니다. 모두 화이트리스트에 있습니다.

이보다 더 고통스러운 방법이 있나요?(여전히 모든 백업 규칙을 외부 파일에 저장하고 싶습니다...)

답변1

명령줄에서 다음을 수행합니다.

rsync -ai \
    --prune-empty-dirs \
    --include='*/' \
    --include='home/*/.config/libreoffice/4/user/registrymodifications.xcu/***'
    --exclude='*' \
    "$source" "$destination"

여기에는 모든 디렉터리, registrymodifications.xcu하위 디렉터리 및 그 아래의 모든 파일이 반복적으로 포함되지만 다른 규칙에 명시적으로 포함되지 않은 항목은 제외됩니다. 또한 --prune-empty-dirs( -m)를 사용하는데, 이는 대상에 빈 디렉터리가 생성되지 않음을 의미합니다.

그 결과 두 번째 포함 규칙과 일치하는 파일 및 디렉터리만 실제로 전송됩니다.

또는 필터 파일로:

+ */
+ home/*/.config/libreoffice/4/user/registrymodifications.xcu/***
- *

...당신은 사용할 것입니다

rsync -ai \
    --prune-empty-dirs \
    --include-from=patterns \
    "$source" "$destination"

이에 대해 주목해야 할 점은 규칙을 포함하는 두 번째 빈 디렉터리를 일치시키는 것은아니요이 옵션 덕분에 --prune-empty-dirs대상에서 생성이 가능합니다.

관련 정보