특정 번호로 시작하는 모든 디렉토리를 rsync

특정 번호로 시작하는 모든 디렉토리를 rsync

내 디렉터리는 수천 개의 하위 디렉터리를 로드합니다.

/home/tmp/
          1
          12
          123
          1234
          2345
          234
          3456
          345
          34

각 하위 디렉터리에는 수백 개의 하위 디렉터리가 있으며, 첫 번째 수준 하위 디렉터리가 일치하면 rsync를 수행하고 싶습니다.

나에게 필요한 것은 주어진 숫자 [1-9]로 시작하는 /rsync 디렉토리만 복사하는 방법입니다...

제가 원하는 것은 기본적으로 와일드카드를 사용하여 일치시킬 수 있는 것입니다.

rsync -rzvvhP remotehost:/home/tmp/1* /home/tmp/

rsync 동기화를 원합니다

/home/tmp/1/
/home/tmp/12/
/home/tmp/123/
/home/tmp/1234/

디렉터리 및 디렉터리에 포함된 모든 하위 디렉터리(다른 번호로 시작하는 첫 번째 수준 디렉터리 제외)

/home/tmp/234/
/home/tmp/2345/
........./3*/
........./4*/ etc..

내가 시도한 것:

rsync -rzvvhP --exclude='*' --include-from=1.txt remotehost:/home/tmp/ /home/tmp/

그중 1.txt에는 다음이 포함됩니다.

1
12
123
1234

2.txt로 이 작업을 수행할 때 rsync는 여전히 1과 3 등으로 시작하는 모든 디렉터리에 대해 실행되는 것 같습니다.

하나의 명령을 사용하여 주어진 숫자로 시작하는 디렉토리만 동기화할 수 있도록 하려면 어떻게 해야 합니까?

답변1

당신이 제안한 것이 실제로 작동해야합니다.

rsync -rzvvhP remotehost:/home/tmp/1\* /home/tmp/

*(대부분의 경우 패턴이 어떤 파일과도 일치하지 않을 가능성이 높기 때문에 따옴표 없이 그대로 둘 수 있으므로 remotehost:/home/tmp/1\*대부분의 쉘 설정에서는 이를 그대로 둡니다.)

--exclude='*'첫 번째 일치 항목이 적용되고 첫 번째 일치 항목( )은 제외를 의미하므로 시도가 실패합니다 *.

바라보다이 가이드rsync 필터에 대한 몇 가지 일반 원칙. 여기서는 1최상위 수준부터 시작하는 디렉터리만 포함하고 포함된 하위 디렉터리의 모든 내용을 복사하려면 먼저 include를 적용한 /1다음 제외합니다 /*.

rsync -rzvvhP --include='/1' --exclude='/*' remotehost:/home/tmp/ /home/tmp/

관련 정보