Ответы:
Применяется первое правило соответствия, поэтому включите .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 .
--includeпервый, но «./» перед «./.htaccess» был тем, что убивало его.
.htaccessфайл, вам придется --include='.*/'(я думаю) до финала --exclude, см. Также здесь