LINUX.ORG.RU

Непонятки с unrar

 , ,


0

1

Народ подскажите пожалуйста как исправить такую проблему при распаковке архива содержащего в себе много файлов один из которых был очень длинным 172 символа без расширения unrar'ом получил следующее: unrar e myarchive.rar ...

Cannot create /tmp/test/My looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooonnnnnnnnnnnggggggggggffffffffffffffffffffffffffffffffffffiiiiiiiiiillllleeeename.mhtml File name too long Skipping My looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooonnnnnnnnnnnggggggggggffffffffffffffffffffffffffffffffffffiiiiiiiiiillllleeeename.mhtml

PS. многоточие это не вывод шелла а просто написал я сам поскольку файлов было много их имена были короткие и распаковались они корректно.

А при распаковке в Win 10 архиватором WinRAR все распаковалось нормально пропусков файлов и ошибок (несмотря на длинное имя файла) не было. Вопрос, мой заключается в следующем: как бы сделать так, чтобы unrar распаковывал все правильно и не ругался на длинные имена файлов, и не пропускал бы их при распаковке, если он такое не умеет, подскажите пожалуйста тот rar распаковщик, который это умеет делать?



Последнее исправление: xxoaea (всего исправлений: 1)
Ответ на: комментарий от monkdt

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

xxoaea
() автор топика
Ответ на: комментарий от vvn_black

…а потом лихорадочно вспоминает, а что это у меня там за файл под номером 50.html? И лишает себя возможности искать в случае необходимости нужный файл по его имени.

xxoaea
() автор топика
Последнее исправление: xxoaea (всего исправлений: 2)
Ответ на: комментарий от xxoaea

На самом деле он сохраняет сразу на целевой системе, а если такое (очень редко) случается, что нужно переносить между разными системами, на автомате имя файла ручками сокращается. Массово такими вещами не приходится заниматься, а если и приходится, то тут уже проще скрейпить и сохранять не в файлах с длинными именами.

Последний раз, когда с чем-то подобным сталкивался - это был архив «Модели для сборки», там они по-моему по полной программе разгулялись с длинными именами.

vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 1)
Ответ на: комментарий от vvn_black

до лампочки на возможности драйверов фс %)
256 байт на имя файла захардкорджено в параметре NAME_MAX
т.е. это системное ограничение VFS-службы, через которую идут все общения с драйверами конкретных фс.
https://github.com/torvalds/linux/blob/master/include/uapi/linux/limits.h

в ntfs писано «255 16-битовых слов» или 512 байт, в два раз больше чем NAME_MAX.

в раре под имя выделяется поле до 2^70 байт.
плюс предположу встроена обрезалка под размер имени файла в текущей системе.

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 6)
Ответ на: комментарий от pfg

т.е. это системное ограничение VFS-службы, через которую идут все общения с драйверами конкретных фс.

И не только её. Много файлообрабатывающего софта, подозреваю, приколочена к этому лимиту и будет работать некорректно (в особо тяжелых случаях - выход за границу 256-байтового массива и битьё памяти) если вдруг ОС ему подсунет имя файла длиннее при просмотре списке. Ломать совместимость с таким софтом линукс не будет.

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

…а потом лихорадочно вспоминает, а что это у меня там за файл под номером 50.html?

Сэр, «вы так мощно передергиваете, что кажется, будто вы дрочите» (с)

Необязательно утрировать и скатываться до двух байт в имени файла. Да, ограничение есть и иногда оно раздражает. Но если серьезно - описать кратко предназначение файла хватает. Это тебе не досовый 8.3 - вот где было весело!

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

Причем тут ограничение и моё передергивание у МЕНЯ РАЗМЕР ИМЕНИ 172 СИМВОЛА это меньше ограничения в 255 байт - странно что шапку так никто толком не прочитал - хотя читали все.

xxoaea
() автор топика
Ответ на: комментарий от pfg

ПРИЧЕМ тут это у меня размер файла меньше???? Просто видимо взял не тот распаковщик а никто не может подсказать правильный распаковщик и вот все при вязались к размеру имени который меньше предела!!!!

xxoaea
() автор топика
Ответ на: комментарий от xxoaea

Какой результат показывает команда ниже?

echo -n "<то-самое-имя-файла-которое-ты-не-называешь>" | wc -c

Вместо строки вставь то самое имя файла, которое ты не называешь.

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от xxoaea

угу, только хром, да и любая программа, это имя обрежет под требования системы.

предположу что у тебя аглицкие символы записаны в двухбайтной кодировке. по идее такого быть не должно. есть алгоритмы обрезания лишних нулей в utf8

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 1)
Ответ на: комментарий от dataman

longnamefs в таком случае выглядит более юзабельным вариантом

Альтернатива - написать скрипт, который получает от архиватора список имен файлов, дальше в цикле идти по нему и если имя длиннее 255 байт, то преобразовывать его по желаемому алгоритму, и распаковывать файлы по одному

UPD: а если файлы в архиве ссылаются друг на друга в своем содержимом, то скрипт может заодно и корректировать ссылки

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