LINUX.ORG.RU
ФорумAdmin

Максимальная длина имени файла

 


0

1

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

Если кодировка в системе русская однобайтная то можно делать русские имена 255 символов длиной но при этом все символы которых нет в этой кодировке вызывают ошибку слишком длинное имя.

Может есть такая utf кодировка в которой русские буквы 1 байт занимают

★★

Я не в курсе технических ограничений samba, но из твоего текста я так понимаю там есть какое-то ограничение в 256 байт на имя файла.

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

anonymous
()

Может лайфхак какой есть для обхода ограничений?

Нет. /thread (потому что других вопросов я не увидел, а на этот ответ однозначный).

gremlin_the_red ★★★★★
()
Ответ на: комментарий от anonymous

А в utf16 всегда 2 байта.

Всегда два байта в UCS-2. В UTF-16 может быть два или четыре байта на символ (а может уже и больше, тут не уверен).

Я бы использовал utf16 и получил константные 128 символов на имя для любых языков.

В линуксе имя файла может содержать любые байты, кроме '/' и '\0'. Так что работать твоё предложение совершенно точно не будет. Пример:

$ echo "hello" | iconv -t utf-16 | xxd
00000000: fffe 6800 6500 6c00 6c00 6f00 0a00       ..h.e.l.l.o...
im-0
()

русские буквы 1 байт занимают

Это однобайтные кодировки. Например, KOI8-R и cp866.

saahriktu ★★★★★
()

эти ограничения не самбы а файловых систем, вам нужна общая по файловым системам.

https://ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D1%8B%D1%85_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC

NTFS - 255 символов! например ставим устаревшую ReserFS и наслаждаемся теми же 255 символами…

anonymous2 ★★★★★
()
Последнее исправление: anonymous2 (всего исправлений: 1)

Имена файлов перегони в хеши. Таблицу хеш-название храни в индексном файле или бд.

slowpony ★★★★★
()

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

нету, проблема пользователя

https://community.synology.com/enu/forum/1/post/122320

fornlr ★★★★★
()
Ответ на: комментарий от anonymous2

например ставим устаревшую ReserFS и наслаждаемся теми же 255 символами…

Нет, там прибили в байтах, когда в ядро включили. Надо тоже патчить в ядре #define.

boowai ★★★★
()
Последнее исправление: boowai (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.