Мне нужно придумать формат файла для нового приложения, которое я пишу.
Этот файл должен содержать кучу других текстовых файлов, которые в основном являются текстовыми, но также могут быть и в других форматах.
Естественно, сжатый tar-файл, кажется, отвечает всем требованиям.
Проблема в том, что я хочу иметь возможность очень быстро получить некоторые данные из файла, а получение только определенного файла из файла tar.gz, похоже, занимает больше времени, чем следовало бы. Я предполагаю, что это потому, что он должен распаковать весь файл, хотя я просто хочу один. Когда у меня есть обычный несжатый tar-файл, я могу получить эти данные очень быстро.
Допустим, файл, который мне нужен, быстро называется data.dat
Например, команда ...
tar -x data.dat -zf myfile.tar.gz
... это намного дольше, чем хотелось бы.
MP3-файлы содержат данные id3, а jpeg-файлы - exif-данные, которые можно быстро прочитать, не открывая весь файл.
Я бы хотел, чтобы мой файл data.dat был доступен аналогичным образом.
Я думал, что могу оставить его несжатым и отделенным от остальных файлов в myfile.tar.gz
Затем я мог бы создать tar-файл data.dat и myfile.tar.gz, а затем надеяться, что данные смогут быть извлечены быстрее, поскольку он находится во главе внешнего tar-файла и не сжат.
Это звучит правильно? ... помещать сжатый tar-файл в tar-файл?
По сути, мне нужно иметь архивный тип файла с быстрым доступом к одному конкретному файлу.
Tar делает это просто отлично, но я также хотел бы сжать эти данные, и как только я это сделаю, у меня больше не будет быстрого доступа.
Существуют ли другие форматы архивов, которые обеспечат мне такой быстрый доступ?
Как примечание, это приложение будет написано на Python. Если решение требует переизобретения колеса с моим собственным двоичным форматом, я знаком с C и без проблем написал бы модуль Python на C. В идеале я бы просто использовал tar, dd, cat, gzip и т. Д. .
Спасибо,
~ Eric