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?

regex  bash  rsync 

Antworten:


12

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

Also in deinem String sollte sein:

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

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.