Frage rsync: Wie man Dotfiles nur im obersten Verzeichnis ausschließt?


Beim Durchführen von Backups unter Bash mit rsync, Ich versuche, alle dotfiles und versteckte Verzeichnisse im obersten Verzeichnis auszuschließen, aber nicht die in anderen Zielverzeichnissen. Zum Beispiel:

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

rsync -a --include=".includeme" --exclude=".*" . DEST Fehler beim Kopieren der gewünschten dotfiles in Unterverzeichnissen, aber Variationen wie --exclude="./.*" scheitern auch.

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


8
2017-09-09 16:38


Ursprung




Antworten:


Sie sollten Anker verwenden, und in Rsync ist das Ankerzeichen "/".

Also in Ihrer Zeichenfolge sollte sein:

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

12
2017-09-09 21:50





Normalerweise bevorzuge ich das Erstellen von .rsync-filter-Dateien, die die Muster enthalten:

- /.*

Dieser Weg,

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

ist der ideale Backup-Befehl. Die Filterung erfolgt über die Flags -FF.

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


0
2017-09-09 21:53