Homepage » hogyan kell » Miért képes a Zip az egyes fájlokat jobban tömöríteni, mint az azonos tartalmú több fájlokat?

    Miért képes a Zip az egyes fájlokat jobban tömöríteni, mint az azonos tartalmú több fájlokat?

    Lehetővé teszi, hogy tömörítsük fájljainkat, hogy könnyebben megoszthassuk és / vagy továbbíthassuk az elektronikus életünket, de néha páratlan vagy váratlan méretezési eredményeket láthatunk, miután tömörítjük őket. Miért van az, hogy? A mai SuperUser Q&A postai válaszok egy zavaros olvasó kérdéseire vonatkoznak.

    A mai Kérdések és válaszok munkamenet a Jóvagyon - a Stack Exchange alosztályának, a közösség által vezérelt Q&A webhelyek csoportjának köszönhetően..

    Fénykép jóvoltából Jean-Etienne Minh-Duy Poirrier (Flickr).

    A kérdés

    A SuperUser olvasó az sixtyfootersdude tudni akarja, hogy a zip hogyan tudja tömöríteni az egyes fájlokat, mint az azonos típusú tartalmú több fájl:

    Tegyük fel, hogy 10 000 XML fájlom van, és szeretném elküldeni őket egy barátnak. Küldésük előtt szeretném tömöríteni őket.

    1. módszer: Ne tömörítse őket

    Eredmények:

    2. módszer: Minden fájl külön-külön rögzíthető és elküldje neki 10.000 csatolt XML-fájlt

    Parancs:

    Eredmények:

    3. módszer: Egyetlen zip fájl létrehozása, amely az összes 10 000 XML fájlt tartalmazza

    Parancs:

    Eredmények:

    4. módszer: A fájlok összekapcsolása egyetlen fájlba és a Zip It

    Parancs:

    Eredmények:

    Kérdések

    • Miért kapok ilyen drámai jobb eredményt, ha csak egyetlen fájlt használok?
    • Azt vártam, hogy drasztikusan jobb eredményeket kapok a 3. módszer helyett a 2. módszer mellett, de nem. Miért ez?
    • Ez a viselkedés a zipre jellemző? Ha megpróbálom a Gzipet használni, más eredményeket kapnék?

    További információ

    Meta adatok

    A kapott válaszok egyike arra utal, hogy a különbség a zip fájlban tárolt rendszer metaadatok. Nem hiszem, hogy ez így lenne. A teszteléshez a következőket tettem:

    A kapott zip fájl 1,4 MB. Ez azt jelenti, hogy még mindig körülbelül tíz MB megmagyarázhatatlan tér van.

    Miért képes a zip jobban tömöríteni az egyes fájlokat, mint az azonos típusú tartalmú több fájl?

    A válasz

    A SuperUser közreműködői Alan Shutko és Aganju válaszolnak számunkra. Először fel, Alan Shutko:

    A zip tömörítés a tömörítendő adatok ismétlődő mintáin alapul, és a tömörítés jobb lesz, minél hosszabb a fájl, mivel egyre hosszabb mintákat talál és használhat.

    Egyszerűsített, ha tömörít egy fájlt, a (rövid) kódokat (hosszabb) mintákat tartalmazó térképeket minden egyes zip fájl tartalmazza; ha egy hosszú fájlt csatol, a szótár újrafelhasználásra kerül, és még hatékonyabbá válik az összes tartalomban.

    Ha a fájlok még egy kicsit hasonlóak (mint a szöveg mindig), a „szótár” újrafelhasználása nagyon hatékony lesz, és az eredmény sokkal kisebb teljes zip-fájl..

    Az Aganju válaszát követi:

    A zipben minden fájl külön tömörítve van. Az ellenkezője szilárd tömörítés, vagyis a fájlok tömörítve vannak. A 7-zip és a Rar alapértelmezés szerint szilárd tömörítést használ. A Gzip és a Bzip2 nem képes több fájlt tömöríteni, így a Tar először használ, ugyanolyan hatással, mint a tömörítés.

    Ahogy az xml fájlok hasonló szerkezetűek (és valószínűleg hasonló tartalmak), akkor a fájlok tömörítése esetén a tömörítés magasabb lesz.

    Például, ha egy fájl tartalmazza a „”És a kompresszor már megtalálta ezt a karakterláncot egy másik fájlban, és kicseréli azt az előző mérkőzésre mutató kis mutatóval. Ha a kompresszor nem használ tömör tömörítést, akkor a karakterlánc első előfordulása a fájlban a szó szerinti, ami nagyobb.


    Van valami, amit hozzá kell adni a magyarázathoz? Kikapcsolja a megjegyzéseket. Szeretne további válaszokat olvasni más tech-savvy Stack Exchange felhasználóktól? Nézze meg a teljes beszélgetés szálát itt.