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)
Ответ на: комментарий от CrX

Вообще хочу в файле. Но файлы самые разные. В заголовке любого файла есть место куда можно записать метаданные?

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

В общем случае нет. Если ты лепишь что-то самопальное, иногда можно дописывать в конец файла что-то своё, но бывает, что это ломает файл.

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

Совершенно же очевидно почему нельзя данные хранить в атрибутах фс - это переносимость. Какие-то нтфсопроблемы

anonymous
()
Ответ на: комментарий от baaba

В заголовке любого файла

У файла нет заголовка. Сложно поверить, что регистрант с 2007-го это говорит серьезно а не троллит.

urxvt ★★★★★
()

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

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

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

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

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

baaba ★★★
() автор топика
Последнее исправление: baaba (всего исправлений: 2)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.