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

8

При выполнении резервного копирования в Bash с помощью rsyncя пытаюсь исключить все точечные файлы и скрытые каталоги в верхнем каталоге, но не те, которые находятся в каталогах, предназначенных для других целей. Например:

/copyme.c  
/.dontcopythisfile  
/.dontcopythisdirectory/or_its_contents  
/directory/.butcopymetoo

rsync -a --include=".includeme" --exclude=".*" . DESTне удается скопировать нужные точечные файлы в подкаталогах, но такие варианты, как, --exclude="./.*"также не удаются.

Предложения? Требуется ли для этого правило фильтрации, а не простое --exclude?


источник

Ответы:

12

Вы должны использовать anchor, а в rsync якорным символом является '/'.

Так что в вашей строке должно быть:

rsync -a --include="/.includeme" --exclude="/.*" ./ DEST
Александр Погребняк
источник
0

Я обычно предпочитаю создавать файлы .rsync-фильтра, содержащие шаблоны:

- /.*

Сюда,

rsync -hxDPavilyzHFF --stats --delete ./ remote:/backup/

это идеальная команда резервного копирования. Фильтрация осуществляется с помощью флагов -FF.

Обратите внимание, что используя этот метод, вы можете иметь различные файлы .rsync-фильтра в разных подкаталогах, применяя их к соответствующим поддеревьям. С помощью этого метода вы также можете переопределить исключения в подкаталогах.

sehe
источник