rsync: Como excluir Dotfiles apenas no diretório superior?

8

Ao executar backups no Bash com rsync, estou tentando excluir todos os arquivos de ponto e diretórios ocultos no diretório superior, mas não os existentes nos diretórios de destino . Por exemplo:

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

rsync -a --include=".includeme" --exclude=".*" . DESTfalha ao copiar os arquivos de ponto desejados nos subdiretórios, mas variações como --exclude="./.*"também falham.

Sugestões? Isso requer uma regra de filtro em oposição à mais simples --exclude?


fonte

Respostas:

12

Você deve usar anchor e, no rsync, o caractere anchor é '/'.

Portanto, na sua string deve estar:

rsync -a --include="/.includeme" --exclude="/.*" ./ DEST
Alexander Pogrebnyak
fonte
0

Normalmente, prefiro criar arquivos .rsync-filter contendo os padrões:

- /.*

Dessa maneira,

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

é o comando de backup ideal. A filtragem é feita pelos sinalizadores -FF.

Observe que, usando esse método, você pode ter vários arquivos de filtro .rsync em vários subdiretórios, aplicando-os às respectivas subárvores. Você também pode substituir exclusões em subdiretórios, usando este método.

ver
fonte