rsync 필터가 작동하지 않습니다. 모든 파일을 제외합니다.

rsync 필터가 작동하지 않습니다. 모든 파일을 제외합니다.

*/ls/bin 폴더의 패턴이 있는 파일을 test 폴더로 동기화 하려고 합니다 .

mkdir test
rsync -avv --exclude='*' --include=*/ls /bin/ test/
ls test

출력에 따르면 포함 필터가 작동하지 않습니다.

[sender] hiding file ls because of pattern *

무엇이 잘못되고 있는지 아는 사람이 있나요?

답변1

제외 및 포함 필터는 왼쪽에서 오른쪽으로 평가됩니다. 명령줄에서 이는 모든 것이 제외됨을 의미합니다. 제외 패턴은 이미 상상할 수 있는 모든 이름과 일치하므로 포함 필터는 효과가 없습니다.

ls대신, 호출 된 모든 파일 /bin이나 해당 하위 디렉터리를 복사하려면 다음을 사용하세요.

rsync -av -m --include='*/' --include='ls' --exclude='*' /bin/ test/

포함 패턴을 먼저 배치하고 명시적으로 포함되지 않은 항목은 마지막에 제외합니다. */(적어도 일반적인 경우에는) 하위 디렉터리로 이동하려고 하므로 포함 패턴을 일치시켜야 합니다 . 또한 -m대상에 파일이 없으면 디렉터리 생성을 방지한다고 덧붙였습니다.

재귀가 필요하지 않고 /bin/ls복사를 사용 하려면 rsync다음을 사용하십시오.

rsync -av /bin/ls test/

여기에 표시된 두 명령에서 대상 경로 이름 끝에 슬래시는 필요하지 않지만 test디렉토리가 아닌 경우 명령이 실패하게 됩니다. 어떤 면에서는 그것은 주장의 역할을 합니다.

관련 정보