L'altra soluzione non funziona qui.
modo affidabile
Non hai scelta, ma a scendere manualmente per ogni livello del vostro sub-directory. Non vi è alcun rischio di includere file indesiderati, dato che rsync non include i file delle directory incluse.
1) Creare un include file di filtro, per esempio "include_filter.txt":
+ /specs/
+ /specs/install/
+ /specs/install/project1/***
- /specs/**
2) eseguirlo:
rsync -avz --delete --include-from=include_filter.txt \
/srv/http/projects/project/ \
[email protected]:~/projects/project
- Non dimenticare la barra di partenza "/ ", altrimenti potresti abbinare le sottodirectory" **/specs/install/project1/".
- Scegliendo un filtro del tipo di inclusione (--include-from = FILE), i segni "+" iniziali sono in realtà opzionali, poiché si tratta dell'azione predefinita senza segno. (Puoi avere l'opposto "-" di default con --exclude-from = FILE.)
- Le stelle doppie "**" significa "qualsiasi percorso"
- Le stelle triple "***" significa "qualsiasi percorso, tra cui questo molto directory"
Modo semplice
È possibile avviare i filtri "* /", che consente di scendere rsync tutti i sotto-livelli. Questo è conveniente ma:
- Tutte le directory saranno incluse, anche se vuote. Questo può essere risolto con l'opzione rysnc -m, ma tutte le directory vuote verranno saltate.
1) Creare un file di filtro di includere, per esempio "include_filter.txt":
+ /**/
+ /specs/install/project1/***
- /specs/**
2) eseguirlo:
rsync -avzm --delete --include-from=include_filter.txt \
/srv/http/projects/project/ \
[email protected]:~/projects/project
Nota l'opzione -m aggiunto.
Ho appena trovato una domanda simile su linuxquestions.org che può aiutare: http://www.linuxquestions.org/questions/linux-software-2/rsync-include-exclude-problems-636504/ – Chris
Grazie, che ha risolto esso! A volte Rsync ha una strana logica. – user1036651
duplicati http://stackoverflow.com/questions/7960669/with-rsync-how-do-includes-and-excludes-combine/7961687#7961687 –