*.php 파일만 스캔하는 동안 rsync 제외 디렉터리가 작동하지 않습니다.

*.php 파일만 스캔하는 동안 rsync 제외 디렉터리가 작동하지 않습니다.

/home/ 내의 모든 디렉토리에 있는 모든 .PHP 및 .HTML 파일을 동기화하려고 합니다. 하지만 /home/site2/public_html/cache_old/에는 동기화에 포함하고 싶지 않은 일부 .html 파일이 있습니다. 따라서 해당 디렉터리와 해당 하위 디렉터리를 제외하고 싶습니다.

다음은 제가 생각할 수 있는 최고의 rsync 명령입니다(많은 테스트와 실패 이후).

rsync -avv /home/ /ssd/rsyncPHPsFORmtree/ --include '*/' --include '*.html' --include '*.php' --exclude /site2/public_html/cache_old/* --exclude '*'

rsync가 실행될 때의 출력에 따르면 내 rsync 명령의 형식이 잘못되었다고 확신합니다.

[sender] showing file site2/public_html/cache_old/total_pages/s/e/a/r/c/page99.html because of pattern *.html

[sender] showing file site2/public_html/cache_old/total_pages/s/e/a/r/c/Page4.html because of pattern *.html

[sender] showing file site2/public_html/cache_old/total_pages/s/e/a/r/c/searchHe107.html because of pattern *.html

[sender] showing file site2/public_html/cache_old/total_pages/s/e/a/r/c/page18.html because of pattern *.html

감사해요

답변1

rsync -avv /home/ /ssd/rsyncPHPsFORmtree/ --exclude '/site2/public_html/cache_old/' --include '*.html' --include '*.php' --include '*/' --exclude '*'  

이것은 트릭을 수행해야합니다.
파일러의 순서가 중요합니다. 첫 번째 일치 규칙이 적용됩니다. 따라서 먼저 폴더를 제외하고 필요한 파일을 포함시킨 다음 이전에 제외되지 않은 디렉터리를 포함하고 다른 모든 항목을 제외합니다.

관련 정보