TGViewer
Bite the Byte Bite the Byte @bitethebyte · 3.38K subscribers
Post #342 6.76K
zip та gzip обидва використовують алгоритм Deflate для стиснення файлів. Уявіть моє здивування, коли я сьогодні отримав .tgz на 165 кілобайт і .zip на 1.5 мегабайта. Подумав над причинами, знайшов що у поставці Мака є zipinfo, і зацініть що мені каже zipinfo -v dump.zip:

> The central directory is 376417 (000000000005BE61h) bytes long

Точно! Чим .tar менш зручний, аніж .zip - в нього немає центрального списку файлів, і тому для пошуку одного файлу треба перебирати архів повністю. Але коли в твоєму архіві 3 тисячі файлів — це грає на руку, немає оцих окремих 376 кб списку файлів. Ну добре, а куди ще мегабайт подівся?

Це вже очевидно — заради того, щоб можна було швиденько один файл у .zip знайти, кожен з цих файлів стиснений окремо. А .tgz, очевидно, спочатку зібраний таром, а потім вже стиснений гзіпом — і коли ці файли дуже схожі (наприклад, це купа yaml-файлів, де ключі між собою дуже схожі), то це прям капець яку різницю дає. Я навіть перевірив, зробив .tar.zip, і все зійшлося:

> ls -l --no-user --no-time --no-permissions dump.*
89k dump.tar.bz2
100k dump.tar.xz
165k dump.tar.zip
165k dump.tgz
1.5M dump.zip


Мораль: підстава приходить звідки не чекаєш.
  • 🔥 76
  • 👍 29
  • ❤ 5
More from @bitethebyte
  1. Aug 31, 2026‍Лагідна українізація дісталася до алібаби 😁
  2. Aug 24, 2026Вітаю всіх з днем відновлення незалежності! З цього приводу в ДОУ вийшов спецвипуск подкас…
  3. Aug 23, 2026А ви йдете на пікнік ДОУ? Я от нарешті йду. 😁 Дуже прикольно, що є івент, який якби конфе…
  4. Aug 13, 2026Щось зранку задумався над IBAN’ами, і випадково усвідомив, що вони — це ж така сама адреса…
  5. Jul 16, 2026Ну й відстойні ж новини. :( Нажаль, внутрішня політика знов перемогла здоровий глузд, але…
  6. Jun 10, 2026photo post
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →