rsync --include-from не работает

rsync --include-from не работает

На страницах руководства нет примеров для этого. Мне сложно заставить rsync включать только некоторые файлы, где эти файлы. Я не понимаю, почему нужно исключать, чтобы включить, почему просто rsyncне включать то, что есть во включаемом файле, и что все остальное будет исключено.

Вот мой сценарий:

rsync -ruv --rsh=ssh --include-from=zz-rsync-test.prod.incl /usr2/subdir remoteSrv:/tmp/.

и это мой include-файл, который не работает: Он копирует слишком много: он копирует все в /usr2/subdir (включая каталог subdir, странно), что мне не нужно. Я хочу скопировать только файлы per, 42f и xml в каталоге data/text_forms.

+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*

и следующее не работает, ничего не копируется:

- *
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*

и следующее тоже не работает, ничего не копируется:

- *
+ data/
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*

и следующее тоже не работает, ничего не копируется:

- *
+ data/
+ data/text_forms/
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*

Следующее тоже не работает:

+ */
+ /data/text_forms/*.per
+ /data/text_forms/*.42f
+ /data/text_forms/*.xml
+ /data/text_forms/*.xml.*
- *

Ни один из следующих вариантов не работает:

+ /data/
+ /data/text_forms/
+ /data/text_forms/*.per
+ /data/text_forms/*.42f
+ /data/text_forms/*.xml
+ /data/text_forms/*.xml.*
- *

решение1

Я нашел решение. Мне потребовалось целых два дня, чтобы найти его. Надеюсь, это поможет вам не тратить так много времени.

Первая проблема заключалась в том, что подкаталог был subdirвключен /usr2/subdir, а я не хотел включать весь этот каталог, я просто хотел, чтобы он был базовым каталогом, поэтому в конце требуется слеш, как в /usr2/subdir/, поэтому моя новая команда выглядит так:

rsync -ruvv --rsh=ssh --include-from=zz-rsync-test.prod.incl /usr2/subdir/ remoteSrv:/tmp/.

Обратите внимание, что я добавил дополнительную vопцию в командной строке ( -ruvv), чтобы получить больше информации о том, что было исключено или включено в момент запуска команды. С фиксированным базовым каталогом и дополнительным vстало немного проще построить правильный включаемый файл:

+ data/
+ data/text_forms/
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*
- *

Все +строки должны быть размещены перед - *, особенно для каталогов, поскольку мне пришлось явно включить каждый каталог для сканирования, даже если я не хочу получать файлы непосредственно внутри этих каталогов. Я провел тест, добавив a data/anyTestFile1и a, data/text_forms/anyTestFile2потому что я не был уверен, будут ли они извлечены, но этого не произошло, так что это делает то, что я хочу.... наконец-то.

Связанный контент