В rsync я пытаюсь исключить подкаталоги, которые соответствуют шаблону. Но я не могу заставить его работать. Я следовал за несколькими примерами, найденными здесь и в Google. Но я не получаю правильных результатов. Вот бит опции моей команды:
-avh --exclude 'branch*' --stats --delete --link-dest=$LNK
Моя исходная структура каталогов
/root
/branch1
/branch2
/branch3
/other
/stillAnother
/etc
Это часть резервного скрипта. $ LNK - это ссылка на пункт назначения rsync предыдущего дня.
Я не хочу / root / branch1, / root / branch2, / root / branch3. или их содержимое для синхронизации. Но они.
Вот биты исключения, которые я уже пробовал:
--exclude=branch*
--exclude='branch*'
--exclude '/branch*'
--exclude /branch*
Спасибо за любую помощь / совет.
РЕДАКТИРОВАТЬ - для устранения флажка «возможный дубликат»
Этот вопрос касается известного списка каталогов. Мне нужно исключить любые каталоги, которые следуют шаблону, даже если эти каталоги еще не существуют. т.е. из моего примера /branch*
могут быть добавлены другие названные каталоги . Мне нужно сделать свой сценарий перспективным и избегать редактирования сценария при добавлении каталога, соответствующего шаблону, поскольку эти каталоги могут быть временными.
*branch*
или/root/branch*
нет, короткаяbranch*
форма не найдена и, следовательно, не исключена.--exclude '*branch*
)Ответы:
Вы исключаете, что правило является правильным. Однако rsync не удалит исключенные файлы в месте назначения без дополнительного параметра
--delete-excluded
:Пример:
источник
-avh --exclude 'branch*' --stats --delete --delete-excluded --link-dest=$LNK
резервное копирование прошлой ночью все еще копировало каталоги / branch *.Версия rsync 3.1.3 (возможно, ранее, не проверенная) правильно исключает подкаталоги, использующие этот синтаксис (очевидно, заменяя
exclude_dirname
шаблоном, который вы хотите исключить):Это также работает с подстановочными знаками. Оригинальный вопрос использует
'branch*'
, так что это работает:Надеюсь это поможет.
источник