tar --to-command

May 13, 2014 18:41

streaming-обработка файлов упакованых в tar.gz, который лежит в интернете:
curl example.net/some.tar.gz | tar -xzf - '--to-command=my_script $TAR_FILENAME $TAR_SIZE'tar.gz - ужасный формат. Оптимизирован под бэкапы на магнитную ленту, в остальном всё плохо ( Read more... )

shell

Leave a comment

Comments 7

archaicos May 13 2014, 19:48:23 UTC
А что lseek/fseek до http еще не дошел? Может, там надо чинить?

Reply

jakobz May 13 2014, 20:05:35 UTC
Есть такое в http. Но это не отменяет того, что tar/gzip - говно мамонта. Все равно придется дергать по запросу на файл, вместо того чтобы сразу считать весь заголовок со всеми файлами, из размерами, и смещениями.

Reply

salas May 13 2014, 20:31:21 UTC
По запросу на файл? Именно не с tar, а с tar.gz?

Reply

_winnie May 13 2014, 20:46:12 UTC
Чтобы прочитать 5-й файл - надо скачать (прочитать с диска) и распаковать первые четыре. Потому что gzip не знает что он пакует, а на входе у него конкатенированые файлы.

Можно случайно сделать "квадратичное" время распаковки, если распаковывать отдельными tar-процессами 1-й, 3-й, 5-й, ... n-й файл из архива.

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

Reply


jakobz May 13 2014, 20:06:29 UTC
Вспоминаю синклер. Пииииии.... Тщщщщ. Блин, не то, мотаем дальше. Пииииии.... Тщщщщщ. Блин, проскочил. :)

Reply

jakobz May 13 2014, 20:09:01 UTC
И да, там хотя-бы на обложке кассеты был список что на ней - можно было хоть как-то ориентироваться. Для tar наверное тоже печатали на бумажке. Короче tar оптимизирован для накопителей на ленте с ручной перемоткой. И без счётчика :)

Reply


Leave a comment

Up