Большинство наших компьютеров запускает Ubuntu, но два из них двойная загрузка в Windows, и когда у нас есть гости, они обычно также, выполняют компьютеры Windows. Таким образом, в дополнение к использованию NFS, наш файловый сервер (сервер Ubuntu) также выполняет Samba.
И так как мы используем Ubuntu главным образом, нам нравится использовать в своих интересах ее преимущества перед Windows, такие как способность использовать символы \:*?"<>|
в имени файла. Проблема, конечно, состоит в том, что Windows не принимает те символы в именах файлов, и таким образом, Samba должен перевести имя файла во что-то более приемлемое. Путем это делает это, однако, я нахожу, чтобы быть неприятным.
Имя файла Episode 182 - Exorcist 2: The Heretic.mp4
например, превращается E4Q82R~Y.MP4
. Это - ужасное "исправление". Существует ли способ сделать искажение Samba немного более дружественным по отношению к людям? Возможно "исправить" его к чему-то как Episode 182 - Exorcist 2_ The Heretic.mp4
вместо этого, где запрещенными символами просто заменяют?
В этой ссылке Вы видите опции искажения. Я думаю сначала, что необходимо отключить опцию:
mangled names
После этого я предполагаю, что имена должны выглядеть лучше...
Заменять двоеточие, например, использовать эту строку:
mangled map =(: _)
Можно добавить больше правил замены как это:
mangled map =(: _) (foo bar)
(также замены любое происшествие нечто панелью)
Для тех, которые приезжают здесь через Google и задаются вопросом, что сделать с тех пор mangled map
удерживается от использования, можно использовать vfs_catia для решения проблемы. В моем случае мне просто были нужны двоеточия, таким образом, я поместил следующее в свой smb.conf:
vfs objects = catia
catia:mappings = 0x22:0xa8
Я поместил его под [global]
, но это может повлиять на производительность, таким образом, я рекомендовал бы подвергнуть ее другому [share]
раздел.
Новые POSIX-клиенты (по крайней мере, Linux и macOS) не нуждаются в ручном сопоставлении символов и вместо этого могут взаимно взаимодействовать с сервером, поэтому имена файлов с зарезервированными символами NTFS работают нормально. Согласно документам Samba и справочным страницам:
На сервере (см. man vfs_fruit
):
vfs objects = catia fruit
fruit:encoding = native
На клиенте может потребоваться монтирование с mapposix
* (см. man mount.cifs
).
*Похоже, что mapchars
должен быть правильным вариантом, но при тестировании работает mapposix
.