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?

Bogaty
źródło

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 .

Gilles „SO- przestań być zły”
źródło
@ 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,