Как включить файлы, которые исключены в 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, см. Также здесь
Тобиас Кинцлер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.