*/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
디렉토리가 아닌 경우 명령이 실패하게 됩니다. 어떤 면에서는 그것은 주장의 역할을 합니다.