Максимальная длина имени файла
Как на линуксе делают nas для виндоус клиентов если с utf8 длинна русского имени файла не может быть больше 130 символов а японского 80. Может лайфхак какой есть для обхода ограничений?
Если кодировка в системе русская однобайтная то можно делать русские имена 255 символов длиной но при этом все символы которых нет в этой кодировке вызывают ошибку слишком длинное имя.
Может есть такая utf кодировка в которой русские буквы 1 байт занимают

Я не в курсе технических ограничений samba, но из твоего текста я так понимаю там есть какое-то ограничение в 256 байт на имя файла.
В utf8 символы могут занимать от 1 до 4 байт. А в utf16 всегда 2 байта. Я бы использовал utf16 и получил константные 128 символов на имя для любых языков.

Может лайфхак какой есть для обхода ограничений?
Нет. /thread (потому что других вопросов я не увидел, а на этот ответ однозначный).
Всегда два байта в UCS-2. В UTF-16 может быть два или четыре байта на символ (а может уже и больше, тут не уверен).
Я бы использовал utf16 и получил константные 128 символов на имя для любых языков.
В линуксе имя файла может содержать любые байты, кроме ‘/’ и ‘\0’ . Так что работать твоё предложение совершенно точно не будет. Пример:
Ограничения длины имени файла на Linux?
Есть ли какие-либо ограничения на длину файла или пути в Linux?
См. Страницу Википедии о сравнении файловых систем , особенно в столбце Максимальная длина имени файла .
Вот некоторые ограничения длины имени файла в популярных файловых системах:
Я читал здесь, что ограничение длины пути в системных заголовках. Ограничение длины имени файла тоже там. В моей системе это файл:
и C-lang определяет:
Я имею в виду другие ответы, пожалуйста, проголосуйте за них.
Есть ли какие-либо ограничения на длину файла или пути в Linux?
Да, длина имени файла и пути ограничена:
-
указанные WerkkreW ;
- константы, определенные linux/limits.h как указано sfp .
Чтобы динамически получить эти свойства:
- Используйте функции pathconf и fpathconf как предложено Майклом Аароном Сафяном
- Создайте имя файла (или путь к файлу ) длиннее и длиннее, как объяснено dogbane
Используйте команду, getconf предложенную Тимом, которая также доступна в Linux:
И ради экономии времени (и привязки его к памяти):
ext2, ext3, ext4, zfs: без ограничений пути; Ограничение имени файла 255 байт.
Это длины имен файловых систем. У самого «linux» тоже есть. Например, из бит / stdio_lim.h:
Там нет никакого способа , чтобы определить максимальную длину путей на Linux переносимым способом. В моей системе:
Но я могу легко создавать пути намного длиннее, чем 4096 символов. Вместо этого смотрите PATH_MAX как нижнюю границу. Вы гарантированно сможете создавать пути так долго, но вы также можете создавать гораздо более длинные.
Максимальный размер имени файла в Linux сколько знаков?
Для EXT:
1.максимальная длина имени файла или директории составляет 255 байт (англ. символы)
каждый символ английского алфавита занимает 1 байт. То есть длина в 255 байт эквивалентна 255 символам английского алфавита
2.кириллическая буква занимает 2 байта, соответственно в два раза меньше 127 символов
3.Используйте команды, в ОС Linux:
getconf NAME_MAX /mnt/sdXn/
255
getconf PATH_MAX /mnt/sdXn/
4096
где sdXn – sda1, sda2, sdb1 и тд.
некоторые ограничения длины имени файла в популярных файловых системах:
BTRFS 255 bytes
exFAT 255 UTF-16 characters
ext2 255 bytes
ext3 255 bytes
ext3cow 255 bytes
ext4 255 bytes
FAT32 8.3 (255 UCS-2 code units with VFAT LFNs)
NTFS 255 characters
XFS 255 bytes