rsync 디렉토리 트리 구조는 깊이가 제한되어 있으며 특정 폴더를 제외합니다.

rsync 디렉토리 트리 구조는 깊이가 제한되어 있으며 특정 폴더를 제외합니다.

파일은 없지만 최대 깊이가 3(/folder1/folder2/folder3)인 내 폴더 및 하위 폴더 트리 구조를 rysnc하고 특정 폴더(예: 캐시/)를 제외하고 싶습니다.

나는 다음 명령을 시도했습니다.

$ rsync -azv --include=*/ --exclude=* --exclude=cache/ --exclude=/*/*/*/ source/ destination/

하지만 작동하지 않습니다. 모든 폴더와 하위 폴더를 복사하고 있으며 최대 깊이를 존중하지 않으며 캐시 폴더를 제외하지 않습니다.

rsyc의 최대 깊이를 제한하려면 다른 매개변수를 사용해야 합니까? 기존 매개변수에 어떤 문제가 있습니까?

p.s. 지난번에 이 질문을 올렸는데 중복으로 표시되었습니다. Rsync 필터: 하나의 패턴만 복사

최대 깊이를 처리하지 않고 rsync 디렉터리 트리 구조만 처리하지 않기 때문에 그렇지 않습니다. 감사해요

답변1

다중 레벨 패턴을 포함하기 전에 먼저 제외해야 합니다. */후자는 "모든 디렉터리 포함"을 의미하고 이후 제외 항목을 재정의하기 때문입니다. 또한 */디렉터리를 나타내기 위해 추가 수준을 추가해야 합니다 . /*/*/*/즉, "세 개 이상의 수준을 제외합니다.

명령은 다음과 같습니다.

rsync -azv --exclude='/*/*/*/*/' --include='*/' --exclude='*' --exclude=cache/ source/ destination/

(와일드카드가 이미 주석 처리되어 있으므로 쉘 메타 문자는 항상 인용하거나 이스케이프해야 합니다.)

답변2

세 하위 디렉터리의 최대 깊이 제한을 준수하면서 두 디렉터리 트리를 동기화하려면 다음을 사용합니다.

rsync -avz /source/ /destination --exclude "/**/**/**/*" --exclude=cache

그러면 다음과 같은 디렉터리도 제외됩니다.은닉처소스 경로의 어느 곳에서나.

관련 정보