Меню Рубрики

Длинные имена файлов в linux

Длинные имена файлов

Всем привет переношу файлопомойку с винды на линукс. Столкнулся с проблемой «очень длинных имён файлов». Похоже, счёт идет не на символы, а на байты (гугление это подтверждает). Внимание, вопрос: мне таки придётся использовать винду или есть какое-то решение этой проблемы? (усекновение имени — не решение в данной ситуации)

ext2/3/4,reiser,xfs,jfs — все поддерживают 255 символов в имени файла (или 127 в UTF8) — куда вам больше??

Поправочка: 127 русских букв, закодированных в UTF8.

UTF8 — однобайтовая кодировка, так что ASCII в UTF8 = ASCII 🙂

ФС те, которые поддерживаются CentOS 5.4 — то есть ext2/3, ext4 без mkfs.ext4, xfs на положении ext4.

127 букв — внезапно оказалось мало. Есть у пользователей такие имена файлов:

«Котов АН Моделирование дорожного движения на многополосной магистрали при помощи двумерного вероятностного клеточного автомата с тремя состояниями, 2008 (диссертация)»

Усекновение — не вариант. На винде такое имя файла обрабатвается корректно

$ echo «Котов АН Моделирование дорожного движения на многополосной магистрали при помощи двумерного вероятностного клеточного автомата с тремя состояниями, 2008 (диссертация)» | wc -c

$ touch «Котов АН Моделирование дорожного движения на многополосной магистрали при помощи двумерного вероятностного клеточного автомата с тремя состояниями, 2008 (диссертация)»

$ ls Котов*
Котов АН Моделирование дорожного движения на многополосной магистрали при помощи двумерного вероятностного клеточного автомата с тремя состояниями, 2008 (диссертация)

Вроде создался файл. ext3.

Если очень нужно, то можно поставить однобайтную локаль. Хотя да, не решение.

Источник

Длинные имена

Укоротить длинные имена до размера K символов, а те имена, которые короче K символов дополнить восклицательными знаками
Дан список из N имён. Необходимо укоротить длинные имена до размера K символов, а те имена, которые.

Длинные имена файлов
вот например есть файл с длинным именем

150 знаков если попробовать скопировать его в другую папку.

Длинные имена файлов
Здравствуйте. Подскажите, можно ли решить проблему. Решил систематизировать все файлы на рабочем.

Длинные имена исходных файлов
Доброго времени суток. Опишу суть проблемы: поймал в систему какую-то гадость. Перед тем, как.

Dmitry, да он подключен и смонтирован в /mnt

Добавлено через 1 час 25 минут
Dmitry, ваш способо не робит, заменил /media/SAMSUNG на /mnt, а результата ноль. Также пробывал в /home монтировать, тоже не к чему не привело, ошибка осталось. Неужели под 12.04 нет поддержки длинных имён

Dmitry, Я так понимаю, что у чела проблема в длинных именах каталогов и вложенных каталогов: Абсолютное имя файла (включая имена путей) получается слишком длинным.
Где-то давненько читал, что в NTFS максимальная длина имени равна 1024. Похоже, что это проявление данного ограничения — в общую длину имени файла вписываются и пути до него (не зря же нельзя использовать, например, символ «/» в имени файла!).
Ещё раз повторюсь: урежьте длину имён каталогов и собственно файла: совсем не обязательно в название пихать половину содержимого. И да, краткость — сестра таланта.

Чёт вспомнилось: «Сказка о царе Салтане, о сыне его славном и могучем богатыре князе Гвидоне и о прекрасной царевне-лебеди» (с) Пушкин, А.С.

Источник

Transmission: Невозможно скачать файл — слишком длинное имя

Unable to save resume file: File name too long

Пытаюсь скачать вот эту книжку:

Имя файла действительно очень длинное.

У меня убунта 12.04. Файловая система ext4.

Понятно, что можно поискать другие источники, другие торрент-клиенты или даже другие ОС.

Но хотелось бы понять, почему так. Ведь «в именах файлов можно даже делать абзацы»!

UPD Есть кто-нибудь с Убунтой 12.04? Потому что, как выясняется, такие проблемы только у меня.

wikipedia:
ext4:
Max. filename length 255 bytes (characters)
reiserfs:
Max. filename length 4032 bytes, limited to 255 by Linux VFS

Т.е. ограничение не FS, а VFS, т.е. другие операционные системы может быть спасут демократию в Нигерии.

edit: нет, не спасут. Вообще странная фигня какая-то: в NTFS ограничение те же 255 байт и как этот файл на винде работае не понятно.
Раздачу не смотрел, буду дома гляну.

На ubuntu 12.10 Transmission качает.

в NTFS ограничение те же 255 байт

Не байт, а символов в UTF-16.

qbittorrent скачал на ext3 debian6

в NTFS ограничение те же 255 байт

Nope. 255 двубайтных символов UTF16.

Вполне может быть, что ограничение не имени файла, а общей длины пути до файла. Попробуй качать поближе к корню.
Хотя это совсем странно будет.

Debain Wheezy AMD64 ext4, 2 Tb

оно же даже меньше 255 символов, в чем проблема?

Я это знаю. Качал вообще в корень — тоже самое.

Трансмишн скачал успешно в раздел NTFS, но (!) опять написал ошибку о «длинном» имени и невозможности сохранить файл, хотя сохранил всё прекрасно.

Ktorrent — тоже самое.

а если просто создать такой файл, например через текстовый редактор?

Копирую файл из NTFS раздела в корень — ошибка, имя файла слишком длинное.
Просто создаю тектовый файл с таким именем, без расширения — такая же ошибка.

Но если сократить имя до

Т.е. убрать вот это: ов — 2010

Файл создается и копируется.

Все правильно — в UTF16 получается что длинная имени 318 байт.

Убираем немного байтов и всё работает.

Вопрос: у тех, у кого работает — другая кодировка файловой системы что ли?

Максимальная длина имени файла 255 символов (255 UTF-16 encoding units, normalized to Apple-modified variant of Unicode Normalization Format D)

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

У тебя путь какой, куда тащишь? Имя файла нормальное. Тоже трансмишн, тоже ext4, всё качается нормально.

Я сталкивался с точно такой проблемой. И тоже при загрузке книг (да на рутрекере очень странная политика на счет именования файлов).

Дело тут не в убунте. Суть такова: на NTFS длина имени 255 символов, а в линуксе — 255 байт, т.е. для utf-8 будет 127 русских букв. Причем просто качать на NTFS в линуксе видимо не выход, т.к. ограничение действует на уровне VFS, т.е. в ядре. Как вариант можно качать на ФС примонтированную с koi8-r или другой однобайтовой кодировкой.

deluge справится. Она кажется переименовывает файл с длинным именем и качает.

Про кодировку тебе рассказали, ещё transmission делает копию торрент файла и создает .resume файл с информацией раздаче. Их имена зависят от содержимого торрент файла + 16 символов на хэш.
Можешь использовать FUSE для папки transmission и раздач, там ограничение немного повыше.
Переименование в transmission пока только в git ветке.
Тем кто думает что 255 байт хватит всем — позавчера хотел скачать серию , а там название + название серии уже 188 байт(на русском было бы 347 байт), скачал другой рип.

Ты выбрал «шифровать диск» при установке? Это уменьшает максимальную длину имени с 255 байт до примерно 140-146.

Debian, ext4, кодировка пути по умолчанию. Файл нормально скачался с помощью Tixati. И открывается тоже нормально.

Названия файлов на русском и ограничения на длину имени файла в Linux (VFS) http://rutracker.org/forum/viewtopic.php?t=2655530

Спасибо. Разгадали.

Ты выбрал «шифровать диск» при установке? Это уменьшает максимальную длину имени с 255 байт до примерно 140-146.

Решение.

Та же проблема была вот сейчас.

Решил тем, что сохранил книгу на флешку, сформатированную в NTFS.

Re: Решение.

reiserfs лучше, и нифига ты не решил. Transmission скачает, но не сможет сохранить состояние раздачи и будет выкидывать ошибку.

Re: Решение.

Если, конечно, у тебя не зашифрован только каталог загрузки и проблема ещё и в этом.

Не UTF-16, а UCS-2. В UTF-16 символ может быть в 4 байта.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Дистрибутивы операционной системы linux
  • Дистрибутивы на базе ubuntu linux
  • Дистрибутивы linux с rpm пакетами
  • Дистрибутивы linux похожие на windows
  • Дистрибутивы linux похожие на mac os