rsync: Wie schließe ich Dotfiles nur im obersten Verzeichnis aus?

8

Bei der Durchführung von Sicherungen unter Bash with rsyncversuche ich, alle Punktedateien und versteckten Verzeichnisse im obersten Verzeichnis auszuschließen, nicht jedoch diejenigen in ansonsten anvisierten Verzeichnissen. Zum Beispiel:

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

rsync -a --include=".includeme" --exclude=".*" . DESTKopieren der gewünschten Punktedateien in Unterverzeichnisse schlägt fehl, Variationen wie z. B. schlagen --exclude="./.*"ebenfalls fehl.

Vorschläge? Benötigt dies eine Filterregel im Gegensatz zur einfacheren --exclude?


quelle

Antworten:

12

Sie sollten anchor verwenden, und in rsync lautet das Ankerzeichen '/'.

Also in deinem String sollte sein:

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

Normalerweise ziehe ich es vor, .rsync-Filterdateien zu erstellen, die die Muster enthalten:

- /.*

Dieser Weg,

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

ist der ideale Sicherungsbefehl. Die Filterung erfolgt durch die -FF-Flags.

Beachten Sie, dass Sie mit dieser Methode verschiedene .rsync-Filterdateien in verschiedenen Unterverzeichnissen haben können, die auf ihre jeweiligen Teilbäume angewendet werden. Mit dieser Methode können Sie auch Ausschlüsse in Unterverzeichnissen überschreiben.

sehe sehen
quelle