Можно ли на уровне файловой системы обеспечить, чтобы все созданные записи файлов имели допустимые имена UTF-8? Я использую Btrfs.
Нет. Вам придется либо изменить Linux или реализацию файловой системы, либо использовать файловую систему сквозного фильтра (возможно, реализованную с помощью fuse), которая обеспечивает соблюдение ограничения.
Это хорошая идея, но, вероятно, очень сложно прийти к единому мнению:
zfs имеет utf8only
вариант крепления что будет обеспечивать это.
Eсть патч, чтобы добавить это в ext4 но, похоже, не получил особого отклика.
Сама файловая система (и, соответственно, уровень файловой системы Linux) допускает любой символ в имени файла, отличный от нуля и /
. Изменение драйвера для удаления поддержки таких имен теоретически возможно, но может вызвать нежелательные побочные эффекты: например, что происходит, когда вы монтируете файловую систему, в которой уже есть такие файлы? Они невидимы? У вас паника ядра? Вы избегаете этих выставленных имен? И если вы избегаете имен, нарушает ли это какие-либо инструменты пользовательского пространства или делает определенные файлы недоступными? [см. «руткит»]. Кроме того, форк ОС означает, что вам придется вручную перестраивать для каждого обновления ядра и соответствующим образом применять патч - это немного раздражает.
Однако если вы все же хотите продолжить, самый простой способ сделать это - создать ПРЕДОХРАНИТЕЛЬ слой. Это отрицательно сказывается на производительности, но, безусловно, это самый простой способ начать работу и проверить свою идею. Вы можете прочитать документацию и написать такую программу всего за несколько часов.