[하위 디렉토리가 존재한다는 것을 분명히 하기 위해 예제를 변경해야 했습니다. ]
계층 구조의 하위 집합을 다시 만들고 싶다고 가정해 보겠습니다. 논의를 위해 filelist.conf의 파일을 백업하고 싶다고 가정해 보겠습니다.
# cat rsync-list
ab*
bb*
그리고
# find .
.
./abc
./abc/file-in-abc
./abd
./abd/file-in-abd
./aca
./bba
./bbc
./bca
./rsync-list
나는 바랐다
rsync -arv --include-from=rsync-list --exclude='*' . /somewhere-else
abc, abd, bba 및 bbc가 다시 생성됩니다. 문제는 ab* 디렉터리로 드롭다운되지 않아 abc/file-in-abc 및 abd/file-in-abd를 실행하지 않는다는 것입니다. 따라서 그런 의미에서 ab*는 실제로 abc, abd, rsync로 확장되는 와일드카드가 아닙니다.
답변1
이것맨페이지다음과 같은 5가지 옵션이 나열됩니다.
--exclude=PATTERN exclude files matching PATTERN
--exclude-from=FILE read exclude patterns from FILE
--include=PATTERN don't exclude files matching PATTERN
--include-from=FILE read include patterns from FILE
--files-from=FILE read list of source-file names from FILE
--files-from
정확한 파일 이름이나 --include-from
패턴을 알고 싶다면 그렇게 해보세요.
를 사용하세요 include-from
. 그렇지 않습니다.필요지정했지만 +
다른 모든 항목은 제외해야 합니다. 예를 들어, 다음과 같습니다.
$ ls -v1 source
image1.tiff
...
image700.tiff
$ cat includes
image7*.tiff
그런 다음 다음을 통해서만 동기화할 수 있습니다 image7*.tiff
.
rsync -aP --include-from=includes --exclude='*' source/ target
매뉴얼 페이지에도 이 INCLUDE/EXCLUDE PATTERN RULES
섹션이 언급되어 있습니다:
- '*'는 모든 경로 구성 요소와 일치하지만 슬래시에서 중지됩니다.
- 슬래시를 포함하여 무엇이든 일치시키려면 "**"를 사용하세요.
답변2
와일드카드를 사용하려면 --include-from
대신 사용할 수 있습니다. 다음과 같아야 합니다.--files-from
filelist.conf
+ /usr/lib/ld-*
+ /usr/bin/gcc*
+ /etc/passwd
+ /etc/nonexisting
- *
파일에 지정 +
하거나 포함 또는 제외 해야 합니다. 모든 것이 기본적으로 포함되므로 포함 규칙이 작동하려면 마지막 규칙이 필요합니다 -
. - *
먼저 넣지 마십시오. 그렇지 않으면 포함 규칙이 무시됩니다.