Как включить файлы, которые исключены в rsync

16

Я пытаюсь настроить rsync, который исключает все .*файлы, кроме, .htaccessно, к сожалению, это не работает:

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

Можно ли как-то исключить общие правила исключения?

Богатый
источник

Ответы:

24

Применяется первое правило соответствия, поэтому включите .htaccessперед исключением .*.

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

Это копии .htaccessна каждом уровне. Я не знаю, что вы намеревались ./.htaccess; если вы хотите сопоставить файл только в корне копии, начните шаблон с /. Если вам нужен только рут .htaccess, вы не можете просто использовать его --include='/.htaccess' --exclude='.*', потому что правило без рутов здесь имеет приоритет, вам нужно сделать что-то более сложное:

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

Дальнейшее чтение: основные принципы для фильтров rsync .

Жиль "ТАК - прекрати быть злым"
источник
@ fred.bear: Это была настоящая и неприятная опечатка. Спасибо, что заметили это!
Жиль "ТАК - перестань быть злым"
Спасибо, я пытался поставить --includeпервый, но «./» перед «./.htaccess» был тем, что убивало его.
Рич
1
@Rich обратите внимание, что если есть скрытые каталоги, содержащие .htaccessфайл, вам придется --include='.*/'(я думаю) до финала --exclude, см. Также здесь
Тобиас Кинцлер