rsync는 여전히 제외 항목에 폴더를 복사합니다.

rsync는 여전히 제외 항목에 폴더를 복사합니다.

폴더를 복사하고 두 개의 하위 디렉터리를 제외하려고 하는데 rsync가 제외 항목 내의 디렉터리를 계속 복사합니다.

rsync -savzPh -e "ssh -p 237"  --include '*/' --include '*.pdf' --include '*.PDF' --exclude '*' --exclude 'a1' --exclude 'my archive2' user@ip:"/home/path/my folder" .

소스는 다음과 같습니다.

  • /홈/경로/내 폴더/폴더1
  • /홈/경로/내 폴더/folder2
  • /홈/경로/내 폴더/a1
  • /홈/경로/내 폴더/a2
  • /홈/경로/내 폴더/내 아카이브
  • /홈/경로/내 폴더/내 아카이브2

제외 매개변수의 폴더에 있는 PDF 파일은 계속 복사됩니다.

내가 뭘 잘못했는지 알아?

답변1

Rsync는 첫 번째 일치 항목을 기반으로 포함/제외 규칙을 해결합니다. 귀하의 경우 포함 규칙은 "제외" 규칙을 구문 분석하기 전에 "제외" 폴더("a1" 및 "MyArchive2")와 일치합니다.

따라서 이 경우에는 포함/제외 플래그의 순서를 다르게 지정해야 합니다.

"My Folder"("a1" 및 "My Archive 2" 하위 디렉터리 제외)의 전체 내용을 복사하려면 다음 명령을 실행해야 합니다.

rsync -savzPh -e "ssh -p 237" --exclude 'a1' --exclude 'my archive2' user@ip:"/home/path/my folder" .

해당 디렉토리 구조("a1" 및 "my archive2" 제외)에 PDF 파일만 필요한 경우 다음 구조를 시도해 보십시오.

rsync -savzPh -e "ssh -p 237"  --exclude 'a1' --exclude 'my archive2' --include '*.pdf' --include '*.PDF' --include '*/' --exclude '*' user@ip:"/home/path/my folder" .

두 번째 버전에서는 먼저 폴더를 제외하여 해당 폴더를 건너뛴 다음 PDF 확장자와 하위 디렉터리를 포함하고(그렇지 않으면 마지막 규칙으로 인해 모든 하위 디렉터리를 건너뜁니다) 마지막으로 모든 콘텐츠를 제외합니다(기타).

"포함" 규칙을 "제외되지 않는 것"으로 생각하되 반대 순서로 생각해보세요.

rsync 3.2.3을 사용하여 테스트

관련 정보