Обычно Windows игнорирует регистр, но сохраняет его. Если ваши имена файлов меняют регистр, это должно быть связано с какой-то программой, отличной от rsync, которая скопировала файлы и исказила регистр во время копирования. Эта программа, вероятно, неправильно настроена. Или, если вы используете сервер Samba, возможно, он неправильно настроен. По умолчанию Samba также сохраняет регистр имен файлов.
Так что, возможно, вы сможете решить проблему с именами файлов, неожиданно изменив их регистр.
Тогда вам остается « только » проблема чувствительности к регистру фильтров. Если это заканчивается вашим случаем, и вы не хотите применять патч, предложенный Wim, вы можете использовать классы символов в фильтрах.
Это уродливо и раздражает, но работает
--exclude="[Tt][Ee][Mm][Pp]/"
или в файле фильтра:
- Temp/
- temp/
- TEMP/
или более общий, но нечитаемый:
- [Tt][Ee][Mm][Pp]/
Если вы хотите автоматизировать преобразование файлов фильтра в этот синтаксис, вы можете использовать эту команду perl:
perl -i.bak -pe 's/([a-z])/[\U$1\E$1]/g' your_rsync-filter.txt
И преобразовать его обратно в удобочитаемую форму с
perl -i.bak -pe 's/ \[ [A-Z] ([a-z]) \] /$1/xg' your_rsync-filter.txt
(Опция -i.bak
создает резервную копию и преобразует файл на месте, а не в стандартный вывод)
По крайней мере, для фильтров и опций include/exclude было бы неплохо иметь в rsync флаг без учета регистра. До тех пор, кажется, единственными вариантами являются либо патч, либо извилистый синтаксис, похожий на регулярные выражения.