rsync: Come escludere Dotfiles solo nella directory più in alto?


8

Quando eseguo backup con Bash con rsync, sto cercando di escludere tutti i dotfile e le directory nascoste nella directory principale, ma non quelli in directory altrimenti targetizzate. Per esempio:

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

rsync -a --include=".includeme" --exclude=".*" . DESTnon riesce a copiare i dotfile desiderati nelle sottodirectory, ma anche varianti come --exclude="./.*"falliscono.

Suggerimenti? Ciò richiede una regola di filtro anziché la più semplice --exclude?

regex  bash  rsync 

Risposte:


12

Dovresti usare l'ancora, e in rsync il carattere dell'ancora è '/'.

Quindi nella tua stringa dovrebbe essere:

rsync -a --include="/.includeme" --exclude="/.*" ./ DEST

0

Di solito preferisco creare file .rsync-filter contenenti gli schemi:

- /.*

Quel modo,

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

è il comando di backup ideale. Il filtro viene eseguito dai flag -FF.

Nota che usando questo metodo, puoi avere vari file .rsync-filter in varie sottodirectory, applicandole ai loro rispettivi sottotitoli. Puoi ignorare le esclusioni anche nelle sottodirectory, usando questo metodo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.