Я пытаюсь настроить rsync, который исключает все .*
файлы, кроме, .htaccess
но, к сожалению, это не работает:
rsync -avP --exclude=".*" --include="./.htaccess" ./. user@server:/dir
Можно ли как-то исключить общие правила исключения?
Применяется первое правило соответствия, поэтому включите .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
, см. Также здесь