나는 다음과 같은 것을 실행하고 있는데 rsync -av -e "ssh" --include="dir1/***" --include="file1.txt" --exclude="*" superuser@remote-server:/var/www/ /var/
, 내가 얻는 것은 다음과 같은 메시지뿐입니다:
receiving incremental file list
sent 276 bytes received 10 bytes 21.19 bytes/sec
total size is 0 speedup is 0.00
파일이 전송되지 않습니다.
답변1
dir1의 하위 디렉터리를 포함하지만 dir1 자체는 제외됩니다. 그래서 아이들은 그것을 보지 못했습니다.
rsync
매뉴얼 페이지 에서 :
경로 제외 개념은 후행 "*" 규칙을 사용할 때 특히 중요합니다. 예를 들어 다음은 작동하지 않습니다.
+ /some/path/this-file-will-not-be-found + /file-is-included - *
상위 디렉터리 "some"은 "*" 규칙에 의해 제외되므로 rsync는 "some" 또는 "some/path" 디렉터리의 어떤 파일에도 액세스하지 않기 때문에 실패합니다. 한 가지 해결책은 계층 구조의 모든 디렉터리를 포함하는 단일 규칙("+ */" ("- *" 규칙 앞 어딘가에 배치))을 요구하고 해당
--prune-empty-dirs
옵션을 사용하는 것입니다. 또 다른 해결책은 액세스가 필요한 모든 상위 디렉터리에 대해 특정 포함 규칙을 추가하는 것입니다. 예를 들어, 다음 규칙 세트는 제대로 작동합니다.+ /some/ + /some/path/ + /some/path/this-file-is-found + /file-also-included - *