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