LINUX.ORG.RU

Метаданные в файле

 ,


0

1

Просветите меня. Вот есть такая тема, EXIF. Но она только для изображений. Может ли описание того что размещено в файле, для чего он и прочее, размещаться в самом файле? Из такого я знаю только атрибуты (права) и расширение файла (но это архаика). Или это можно организовать только средствами FS?

★★★

Так в самом файле или средствами FS? Выбери, что хочешь, это противоречащие хотелки.

В самом файле — зависит от формата. Да, если EXIF, есть ID3 и Vorbis Tags для аудиофайлов. Есть метаданные в видеофайлах (практически во всех, и точно во всех популярных конетйнерах). В каких-нибудь HTML или FB2 тоже метаданные в начале в пишутся, а в MarkDown это не предусмотрено изначально, но есть «дополнение» к формату, позволяющее это. И т.д.

Средствами ФС тоже можно черех xattr.

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

Ну тут 3 подхода есть.

Первый - в самом файле, EXIF для картинок, теги для аудио, метаинформация о видеофайлах в контейнеах вроде mkv и так далее, вплоть до тегов в xml-ях/html-ях которые иногда могут так быть (например формат электронных книг fb2) а могут быть запакованы в архивы (тот же odt это zip архив с кучей xml-ей внутри где есть и информация о самом файле). Это надёжно и не теряется, например, при копировании в разные ОС.

Можно чисто средствами ФС данные хранить, но они потеряются при копировании (например когда ты на флешку скопируешь у которой нет EA)/передачи по сети, это xattr и Extended Attributes (EA) в случае ntfs и оффтопика. Это второй вариант.

Есть третий вариант, это хранить данные отдельно от файла, но не полагаясь на не надёжные средства ФС/ОС. Тут опять есть 2 подхода. Первый - БД в которой хранятся данные о файле. Так делают когда у тебя передача не юзером, а скажем через какие-то автоматизированные программы и ты вместе с файлом передаёшь ещё и метаданные, например при передаче файла с сервера в клиентское приложение, которое тоже работает с какой-то БД, обычно Sqlite. На сервере же может крутиться и что-то более грозное, вроде Oracle или PostgreSQL. Вторая вариация этого же варианта больше заточена под юзеров, чем под софт. Ты хранишь рядом с файлом ещё файл с метаинформацией и таким же названием но другим расширением (обычно это json или xml), а юзер при передаче передаёт их оба. Зачастую такие файлы специально кладут в архив чтоб юзер их не терял.

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

расширение файла (но это архаика).

Архаика — это файл descript.ion. Сделай прицепную коляску (sidecar) в любом формате по своему вкусу.

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

Не, я правда не знаю.

Факт - в файле ни куда ничего дописать не возможно (если это не специальный метод), это его сломает. Это может быть функционалом ФС или реализовано в ОС. Sqlite - прям для этого заточена, как кажется. Можно привязываться к контрольной сумме файла, имени. Это сочетание как правило уникально.

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