LINUX.ORG.RU

Сохранять файлы с именами в 346 знаков

 , ,


1

1

Требуется сохранить из браузера в автоматическом режиме большое число файлов длиной ~346 знаков ASCII. Ext4 такую длину не поддерживает — разве что пересобирать драйвер в ядре. И другие файловые системы тоже, вроде, не больше 255. Поэтому вопрос: как обойти ограничение?

Можно ли сделать драйвер FUSE, который работал бы подобно fuse-posixovl: создавал файлы с короткими именами, сохранял короткие и длинные в специальный файл, а всем программам, обращающимся к файловой системе «fuse-longname», показывал бы длинные имена? Есть ли готовые примеры драйверов fuse, из которых можно быстро сделать подобное?

Ответ: https://github.com/i-rinat/longnamefs делает именно это. ./longnamefs --backend сохранять_файлы_и_имена_сюда/ монтировать_сюда/ Правда, ограничение для FUSE 1024 байта.

★★★★★

Последнее исправление: question4 (всего исправлений: 5)

Ответ на: комментарий от Vsevolod-linuxoid

ReiserFS

Википедия пишет «4032 bytes, limited to 255 by Linux VFS». Что это значит?

И заодно вопрос: если cмонтировать файл и создать в нём ReiserFS, можно ли сделать его динамически растущим? Или только заранее создать фиксированный размер?

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

NTFS кстати действительно поддерживает имена длиннее чем 255. Но сама Винда тоже ограничивает искусственно в 255, видимо для каких то целей совместимости и унификации с каким-нибудь легаси, ровно так же как это делается и в Linux VFS.

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

Не, я не знаю готового решения, это было только направление. Которое, насколько я понимаю, по твоей ссылке и реализуется.

Вообще, на мой взгляд, хранить информацию в названиях файлов не следует. Это низкий уровень, не для людей (хотя на текущий момент – увы…).

sin_a ★★★★★
()

А откуда вообще возникла задача хранить файл с таким длинным именем? Мб твою задачу можно решить как-то иначе? Например сделать sqlite базу с полными именами файлов, а на диск складывать их как <file_id>.<твое расширение>

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

А откуда вообще возникла задача хранить файл с таким длинным именем?

Задачи хранить не было. Есть задача сохранить файл из браузера. Средства аддонов и самого браузера берут имя из URL или заголовка. И выдают ошибку, если оно слишком длинное. Если на странице десяток картинок — сохранить вручную не проблема. С сотней уже муторно.

Дальше скрипт переименует файлы, и их можно копировать на обычные ФС.

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

Дальше скрипт переименует файлы, и их можно копировать на обычные ФС.

если это хеш какой смысл его хранить как plain? делай дерево епт… но по факту ты изобретаешь какой то cornucopia

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

Проблема была в том, что браузер автоматически подставляет слишком длинные имена. Есть идеи, как автоматически заменять их на более короткие?

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

Проблема была в том, что браузер автоматически подставляет слишком длинные имена. Есть идеи, как автоматически заменять их на более короткие?

можно пнуть удаленную сторону чтобы переписали javascript или что там «content-disposition: file; filename=»
можно переписать плагин для браузера
можно переписать модуль ядра ФС, они слишком экономят на 255 символах, потом распиарить свой EXT1024 на РФ рынке и продать
можно накостылять FUSE proxy и сделать длинное имя на хеш с деревом подкаталогов EF/DC/4F/3E..

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

Хех. Когда-то столкнувшись с той же проблемой, что и ТС, взял я и настроил minio - и обнаружил, что он (по умолчанию, но я не стал углублялся) именно что создаёт по одному файлу на один объект, с таким же именем.

(В итоге плюнул, т.к. на стороне создававшей файлы с длинющими именами всё равно нельзя создать их в локальной ФС - вот такой вот парадокс костылей поверх NTFS, которые майкрософт наворотил в UWP.)

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