패턴을 사용하여 원격 시스템에서 N 개의 파일을 전송하려고합니다.
ssh remote ls target/
2013-08-01.mjson.gz
2014-07-04.mjson.gz
2014-07-09.mjson.gz
2014-08-12.mjson.gz
...
나는 단지 2014-07*
파일. 지금까지 내 시도 :
rsync -a --dry-run --verbose --include="2014-07-*" remote:target .
# transfers everything
rsync -a --dry-run --verbose --include="2014-07-*" --exclude="*" remote:target .
# transfers nothing
rsync -a --dry-run --verbose --exclude="*" --include="2014-07-*" remote:target .
# transfers nothing
rsync -a --dry-run --verbose --include="*/2014-07-*" --exclude="*" remote:target .
# transfers nothing
rsync -a --dry-run --verbose --include="***/2014-07-*" --exclude="*" remote:target .
# transfers nothing
나는 내가 원하는 파일을 나타 내기 위해 --files-from을 사용할 수 있다는 것을 알고 있지만,해야 할 고통이있다.
나는 내가 원하는 것을 include / exclude를 올바르게 사용하는 방법을 결코 이해하지 못했다. man 페이지는 다음과 같이 말합니다 :
첫 번째 일치 패턴이 적용됩니다. 제외 패턴 인 경우 해당 파일은 건너 뜁니다. include 패턴 인 경우 해당 파일 이름은 건너 뛰지 않습니다. 일치하는 패턴이 없으면 파일 이름은 건너 뛰지 않습니다.
이것을 읽으면, include가 첫 번째이고 파일 이름이 일치하면 "파일 이름을 건너 뛰지 않습니다."라는 부분이 추정됩니다. 분명히, 나는 틀렸어.
맨 페이지의 아래쪽에 다음과 같이 표시됩니다.
-recursive (-r) 옵션 (-a가 암시 함)을 사용할 때 모든 경로의 모든 하위 구성 요소는 위에서 아래로 방문하므로 include / exclude 패턴은 각 하위 구성 요소의 전체 이름에 반복적으로 적용됩니다
내가 사용한 이후로 --recursive
, 그 원인 .
전역 제외 때문에 건너 뛸 수 있습니까?
포함 및 제외 패턴을 사용하여 파일의 하위 세트를 전송하려면 어떻게해야합니까?