Назад | Перейти на главную страницу

rsync: Как исключить файлы Dotfiles только в самом верхнем каталоге?

При выполнении резервного копирования в 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 в различных подкаталогах, применяемые к их соответствующим поддеревьям. Вы также можете переопределить исключения в подкаталогах, используя этот метод.