При выполнении резервного копирования в Bash с rsync
, Я пытаюсь исключить все точечные файлы и скрытые каталоги в верхнем каталоге, но не те, которые находятся в других целевых каталогах. Например:
/copyme.c
/.dontcopythisfile
/.dontcopythisdirectory/or_its_contents
/directory/.butcopymetoo
rsync -a --include=".includeme" --exclude=".*" . DEST
не может скопировать нужные точечные файлы в подкаталоги, но такие варианты, как --exclude="./.*"
тоже не получится.
Предложения? Требуется ли для этого правило фильтра в отличие от более простого --exclude
?
Вы должны использовать привязку, а в rsync символ привязки - '/'.
Итак, в вашей строке должно быть:
rsync -a --include="/.includeme" --exclude="/.*" ./ DEST
Обычно я предпочитаю создавать файлы .rsync-filter, содержащие шаблоны:
- /.*
Туда,
rsync -hxDPavilyzHFF --stats --delete ./ remote:/backup/
это идеальная команда резервного копирования. Фильтрация осуществляется флагами -FF.
Обратите внимание, что с помощью этого метода вы можете иметь различные файлы .rsync-filter в различных подкаталогах, применяемые к их соответствующим поддеревьям. Вы также можете переопределить исключения в подкаталогах, используя этот метод.