Jak dołączyć pliki wykluczone do rsync


16

Próbuję skonfigurować rsync, który wyklucza wszystkie .*pliki oprócz, .htaccessale niestety to nie działa:

rsync -avP --exclude=".*" --include="./.htaccess" ./. user@server:/dir

Czy można w jakiś sposób wykluczyć ogólne reguły wykluczania?

Odpowiedzi:


24

Obowiązuje pierwsza reguła dopasowania, więc dołącz .htaccessprzed wykluczeniem .*.

rsync -avP --include=".htaccess" --exclude=".*" . user@server:/dir

To kopiuje .htaccessna każdym poziomie. Nie wiem z czym zamierzałeś ./.htaccess; jeśli chcesz dopasować plik tylko w katalogu głównym kopii, rozpocznij wzór od /. Jeśli chcesz tylko rootowania .htaccess, nie możesz po prostu go użyć --include='/.htaccess' --exclude='.*', ponieważ reguła niezrootowana ma tutaj pierwszeństwo, musisz zrobić coś bardziej skomplikowanego:

rsync -avP --exclude='/*/**/.htaccess' --include='.htaccess' --exclude=".*" . user@server:/dir

Dalsza lektura: podstawowe zasady dotyczące filtrów rsync .


@ fred.bear: To była prawdziwa literówka i nieprzyjemna. Dzięki za wykrycie tego!
Gilles 'SO - przestań być zły'

Dzięki, próbowałem postawić --includepierwszy, ale „./” przed „./.htaccess” było tym, co go zabijało.
Bogaty

1
@Rich pamiętaj, że jeśli są ukryte katalogi zawierające .htaccessplik, musisz --include='.*/'(myślę) przed finałem --exclude, patrz także tutaj
Tobias Kienzler,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.