у меня есть rsync
команда для копирования моих файлов из разработчика в продакшн. Я не хочу копировать файл .htaccess, который находится в корне каталога HTML, но я хочу скопировать несколько файлов .htaccess, которые находятся в его подкаталогах.
Я использую аргумент --exclude .htaccess
что предотвращает копирование всех файлов. Другие аргументы, которые я включаю, -a --recursive --times --perms
. Можно ли настроить rsync
сделать это?
Редактировать: Вот моя полная команда:
rsync -a --recursive --times --perms \
--exclude prop_images --exclude tracking --exclude vtours \
--exclude .htaccess --exclude .htaccess_backup --exclude "*~" \
/home/user/dev_html/* /home/user/public_html/
Когда вы указываете --exclude .htaccess
, вы исключаете любой путь, заканчивающийся на .htaccess
.
Чтобы исключить только .htaccess в корне источника передачи, вам необходимо --exclude /.htaccess
Из справочной страницы rsync, некоторые дополнительные сведения и ссылка на дополнительное чтение:
- если шаблон начинается с /, то он привязывается к определенному месту в иерархии файлов, в противном случае он сопоставляется с концом имени пути. Это похоже на знак ^ в регулярных выражениях. Таким образом, «/ foo» будет соответствовать файлу с именем «foo» либо в «корне передачи» (для глобального правила), либо в каталоге файла слияния (для правила для каждого каталога). Неквалифицированный «foo» будет соответствовать любому файлу или каталогу с именем «foo» в любом месте дерева, потому что алгоритм применяется рекурсивно сверху вниз; он ведет себя так, как будто каждый компонент пути становится концом имени файла. Даже незакрепленный «sub / foo» будет соответствовать в любой точке иерархии, где «foo» был найден в каталоге с именем «sub». См. Раздел ПРИСОЕДИНЕНИЕ ШАБЛОНОВ ВКЛЮЧЕНИЯ / ИСКЛЮЧЕНИЯ, чтобы получить полное описание того, как указать шаблон, который соответствует корню передачи.
Попробуйте такой вариант:
--exclude 'some/parts/of/path/.htaccess'
Также разрешены глобусы:
--exclude 'some/*/of/*/.htaccess'