나는 rsync를 처음 접했고 다음과 같이 상당히 깊은 디렉토리를 가지고 있습니다.
source
|
+--foo
| |
| +--bar1
| | |
| | +--bla (more dirs down the line)
| +--bar2
| | |
| | +--...
| +--bar3
| |
| +--bla (more dirs down the line)
...
이제 전체 경로를 탐색/검색하고 bla 디렉터리 내부/뒤(즉, bla의 하위 디렉터리)에 있는 모든 csv 파일을 재귀적으로 복사하려고 합니다. 여기에서 일부 문서와 게시물을 읽은 후 다음과 같은 생각이 들었습니다.
rsync -ravm --include='/**/bla/' --include='*.csv' --exclude='*' source/ .
트릭을 수행해야 하지만 어떤 포함 및 제외 조합을 시도하더라도 모든 곳에서 모든 CSV를 복사하거나 아무것도 복사하지 않습니다.
여기서 내가 보지 못하는 것은 무엇입니까? 어떤 도움이라도 대단히 감사하겠습니다.
저는 bash 4.3.48과 rsync 3.1.1을 사용하고 있습니다.
답변1
이것은 트릭을 수행하는 것 같습니다
rsync -avm --include='*/' --include='foo/*/bla/**.csv' --exclude='*' source/ .
또는
rsync -avm --include={'*/','foo/*/bla/**.csv'} --exclude='*' source/ .
--exclude='*'
모든 파일 제외--include='*/'
디렉토리 포함--include='foo/*/bla/**.csv'
bla
디렉터리 내부 또는 아래에 *.csv 파일 포함(항상 디렉터리 아래에 있는 경우
상대 파일--include='bla/**.csv'
도 작동함)bla
foo/barX
-r
이 옵션 은 이미 에 포함되어 있었고 -a
이 옵션은 -m
우리가 찾을 수 있는 빈 디렉터리를 삭제하기 때문에 제거했습니다 .