Format file ZIP adalah format kompresi dan pengarsipan yang banyak digunakan yang memungkinkan beberapa file dikemas bersama menjadi satu file terkompresi. Awalnya dibuat oleh Phil Katz pada tahun 1989 dan sejak itu menjadi standar yang ada di mana-mana untuk kompresi dan distribusi file. Format ZIP menggunakan kombinasi algoritma kompresi lossless untuk mengurangi ukuran file yang disertakan, sambil tetap memungkinkan file tersebut diekstrak satu per satu sesuai permintaan.
Arsip ZIP terdiri dari urutan catatan file, masing-masing mewakili file terkompresi, diikuti oleh direktori pusat di akhir arsip. Setiap catatan file menyertakan metadata tentang file, seperti nama, ukuran, dan stempel waktu, serta data file terkompresi itu sendiri. Direktori pusat berisi daftar semua catatan file dalam arsip, bersama dengan metadata tambahan.
Format ZIP mendukung beberapa metode kompresi, tetapi yang paling umum digunakan adalah DEFLATE, yang didasarkan pada algoritma LZ77 dan pengkodean Huffman. DEFLATE bekerja dengan menemukan urutan data yang berulang dan menggantinya dengan referensi ke kemunculan sebelumnya, dikombinasikan dengan pengkodean Huffman untuk merepresentasikan data terkompresi secara efisien. Hal ini memungkinkan pengurangan ukuran yang signifikan, terutama untuk file berbasis teks.
Untuk membuat arsip ZIP, file pertama-tama dikompresi satu per satu menggunakan metode kompresi yang dipilih. Setiap file terkompresi kemudian ditambahkan ke arsip sebagai catatan file, yang menyertakan header file lokal diikuti oleh data terkompresi. Header file lokal berisi metadata seperti nama file, metode kompresi, checksum CRC-32, ukuran terkompresi dan tidak terkompresi, dan stempel waktu.
Setelah semua catatan file ditambahkan, direktori pusat ditulis di akhir arsip. Direktori pusat dimulai dengan tanda tangan dan menyertakan header file untuk setiap catatan file, yang berisi metadata yang mirip dengan header file lokal. Selain itu, direktori pusat menyertakan informasi tentang arsip secara keseluruhan, seperti jumlah file dan ukuran direktori pusat.
Terakhir, arsip ZIP diakhiri dengan catatan akhir direktori pusat, yang menyertakan tanda tangan, jumlah disk tempat direktori pusat dimulai, jumlah catatan direktori pusat, ukuran direktori pusat, offset awal direktori pusat relatif terhadap awal arsip, dan bidang komentar.
Salah satu fitur utama format ZIP adalah kemampuannya untuk mendukung berbagai metode kompresi. Selain DEFLATE, ia juga mendukung metode STORE (tanpa kompresi), BZIP2, LZMA, PPMd, dan lainnya. Fleksibilitas ini memungkinkan keseimbangan antara rasio kompresi dan waktu pemrosesan, tergantung pada persyaratan spesifik dari kasus penggunaan.
Aspek penting lainnya dari format ZIP adalah dukungannya untuk enkripsi file dan direktori. Skema enkripsi ZIP tradisional menggunakan metode enkripsi berbasis kata sandi sederhana, tetapi ini telah banyak digantikan oleh enkripsi AES yang lebih aman di alat ZIP modern. Ketika sebuah file dienkripsi, data terkompresinya dienkripsi menggunakan metode enkripsi yang dipilih, dan metadata tambahan ditambahkan ke header file untuk menunjukkan status enkripsi.
Format ZIP juga menyertakan fitur untuk pemeriksaan integritas data dan deteksi kesalahan. Setiap catatan file menyertakan checksum CRC-32 dari data yang tidak dikompresi, yang memungkinkan integritas file diverifikasi setelah diekstrak. Selain itu, direktori pusat menyertakan checksum CRC-32 dari seluruh struktur direktori pusat, yang menyediakan lapisan tambahan pemeriksaan integritas untuk arsip secara keseluruhan.
Selama bertahun-tahun, beberapa ekstensi dan penyempurnaan telah dilakukan pada format ZIP untuk meningkatkan fungsionalitas dan efisiensinya. Salah satu ekstensi tersebut adalah format ZIP64, yang memungkinkan arsip dan file berukuran lebih besar dari 4 GB. Hal ini dicapai dengan menggunakan bidang 64-bit untuk nilai ukuran dan offset, bukan bidang 32-bit asli. Ekstensi lainnya adalah penggunaan pengkodean nama file dan komentar, yang memungkinkan penggunaan karakter Unicode dalam nama file dan komentar.
Format ZIP juga telah diadaptasi untuk digunakan dalam berbagai konteks khusus, seperti format OpenDocument yang digunakan oleh rangkaian produktivitas kantor, format JAR (Java Archive) yang digunakan untuk mendistribusikan aplikasi Java, dan format EPUB yang digunakan untuk e-book. Dalam kasus ini, format ZIP berfungsi sebagai wadah untuk jenis file dan metadata tertentu yang diperlukan oleh format masing-masing.
Meskipun usianya, format ZIP tetap banyak digunakan dan didukung di berbagai platform dan perangkat. Kesederhanaan, efisiensi, dan kompatibilitasnya telah menjadikannya pilihan utama untuk kompresi dan distribusi file. Namun, ada juga beberapa keterbatasan pada format ZIP, seperti kurangnya dukungan bawaan untuk arsip terpisah, kompresi solid, atau catatan pemulihan.
Untuk mengatasi beberapa keterbatasan ini, format pengarsipan alternatif telah dikembangkan, seperti RAR, 7z, dan TAR. Format ini menawarkan fitur tambahan dan rasio kompresi yang lebih baik dalam beberapa kasus, tetapi mungkin tidak memiliki tingkat dukungan universal yang sama seperti ZIP.
Sebagai kesimpulan, format file ZIP adalah format kompresi dan pengarsipan yang serbaguna dan efisien yang telah teruji oleh waktu. Kemampuannya untuk mengemas beberapa file bersama, mengompresnya secara efisien, dan menyediakan pemeriksaan integritas data telah menjadikannya alat penting untuk penyimpanan dan distribusi file. Meskipun ada beberapa keterbatasan, format ZIP terus digunakan dan didukung secara luas, berkat kesederhanaan dan kompatibilitasnya.
Kompresi file mengurangi redundansi sehingga informasi yang sama membutuhkan lebih sedikit bit. Batas atasnya ditentukan oleh teori informasi: untuk kompresi lossless, batasnya adalah entropi sumber (lihat teorema pengkodean sumber Shannon source coding theorem dan makalah aslinya tahun 1948 “A Mathematical Theory of Communication”). Untuk kompresi lossy, kompromi antara laju bit dan kualitas dijelaskan oleh teori rate–distortion.
Sebagian besar kompresor memiliki dua tahap. Pertama, sebuah model memprediksi atau mengekspos struktur dalam data. Kedua, sebuah coder mengubah prediksi tersebut menjadi pola bit yang hampir optimal. Keluarga pemodelan klasik adalah Lempel–Ziv LZ77 (1977) dan LZ78 (1978) mendeteksi substring berulang lalu memancarkan referensi alih-alih byte mentah. Di sisi pengodean, pengodean Huffman (lihat makalah aslinya 1952) memberikan kode lebih pendek untuk simbol yang lebih mungkin. Pengodean aritmetika dan range coding lebih halus lagi dan mendekati batas entropi, sementara Asymmetric Numeral Systems (ANS) modern mencapai rasio serupa dengan implementasi berbasis tabel yang cepat.
DEFLATE (dipakai oleh gzip, zlib, dan ZIP) menggabungkan LZ77 dengan pengodean Huffman. Spesifikasinya bersifat publik: DEFLATE RFC 1951, pembungkus zlib RFC 1950, dan format file gzip RFC 1952. Gzip dibingkai untuk streaming dan tidak menyediakan akses acak. Gambar PNG menstandarkan DEFLATE sebagai satu-satunya metode kompresi (maksimal jendela 32 KiB) menurut spesifikasi PNG “Compression method 0… deflate/inflate… at most 32768 bytes” dan W3C/ISO PNG 2nd Edition.
Zstandard (zstd): kompresor serbaguna modern yang dirancang untuk rasio tinggi dengan dekompresi sangat cepat. Formatnya didokumentasikan dalam RFC 8878 (serta cermin HTML-nya) dan spesifikasi referensi di GitHub. Seperti gzip, frame dasar tidak menargetkan akses acak. Salah satu keunggulan zstd adalah kamus: sampel kecil dari korpus Anda yang membuat banyak file kecil atau serupa terkompresi jauh lebih baik (lihat dokumentasi kamus python-zstandard dan contoh karya Nigel Tao). Implementasi menerima kamus “unstructured” maupun “structured” (diskusi).
Brotli: dioptimalkan untuk konten web (mis. font WOFF2, HTTP). Ia memadukan kamus statis dengan inti LZ+entropi mirip DEFLATE. Spesifikasinya adalah RFC 7932, yang juga menyebut jendela geser 2WBITS−16 dengan WBITS [10, 24] (1 KiB−16 B hingga 16 MiB−16 B) dan bahwa ia tidak memberikan akses acak. Brotli sering mengalahkan gzip pada teks web sambil tetap cepat saat decoding.
Kontainer ZIP: ZIP adalah arsip file yang dapat menyimpan entri dengan berbagai metode kompresi (deflate, store, zstd, dll.). Standar de facto-nya adalah APPNOTE PKWARE (lihat portal APPNOTE, salinan yang di-host, serta ringkasan LC ZIP File Format (PKWARE) / ZIP 6.3.3).
LZ4 menargetkan kecepatan mentah dengan rasio sedang. Lihat halaman proyeknya (“extremely fast compression”) dan format frame. Cocok untuk cache in-memory, telemetri, atau jalur panas yang memerlukan dekompresi hampir secepat RAM.
XZ / LZMA mengejar kerapatan tinggi dengan waktu kompres yang relatif lambat. XZ adalah kontainer; pekerjaan berat biasanya dilakukan LZMA/LZMA2 (pemodelan mirip LZ77 + range coding). Lihat format .xz, spesifikasi LZMA (Pavlov), dan catatan kernel Linux tentang XZ Embedded. XZ biasanya lebih kecil dari gzip dan sering bersaing dengan codec modern yang berorientasi rasio tinggi, walau waktu enkodenya lebih lama.
bzip2 menggunakan Transformasi Burrows–Wheeler (BWT), move-to-front, RLE, dan pengodean Huffman. Biasanya lebih kecil daripada gzip namun lebih lambat; lihat manual resminya dan halaman manual (Linux).
Ukuran “jendela” penting. Referensi DEFLATE hanya bisa melihat ke belakang 32 KiB (RFC 1951) serta batas 32 KiB di PNG yang disebutkan di sini. Brotli memiliki jendela sekitar 1 KiB hingga 16 MiB (RFC 7932). Zstd menyetel jendela dan kedalaman pencarian lewat level (RFC 8878). Stream dasar gzip/zstd/brotli didesain untuk decoding sekuensial; format dasarnya tidak menjanjikan akses acak, meskipun kontainer (mis. indeks tar, framing berchunk, atau indeks khusus format) bisa menambahkannya.
Format di atas bersifat lossless: Anda bisa merekonstruksi byte yang sama persis. Codec media sering lossy: mereka membuang detail yang tak terlihat untuk mencapai bitrate lebih rendah. Pada gambar, JPEG klasik (DCT, kuantisasi, pengodean entropi) distandardisasi dalam ITU-T T.81 / ISO/IEC 10918-1. Di audio, MP3 (MPEG-1 Layer III) dan AAC (MPEG-2/4) menggunakan model persepsi dan transformasi MDCT (lihat ISO/IEC 11172-3, ISO/IEC 13818-7, dan ringkasan MDCT di sini). Lossy dan lossless dapat berdampingan (mis. PNG untuk aset UI; codec web untuk gambar/video/audio).
Teori Shannon 1948 · Rate–distortion · Pengodean Huffman 1952 · Pengodean aritmetika · Range coding · ANS. Format DEFLATE · zlib · gzip · Zstandard · Brotli · LZ4 frame · Format XZ. Tumpukan BWT Burrows–Wheeler (1994) · manual bzip2. Media JPEG T.81 · MP3 ISO/IEC 11172-3 · AAC ISO/IEC 13818-7 · MDCT.
Intinya: pilih kompresor yang cocok dengan data dan batasan Anda, ukur pada input nyata, dan jangan lupakan keuntungan dari kamus dan framing yang cerdas. Dengan pasangan yang tepat Anda mendapat file lebih kecil, transfer lebih cepat, dan aplikasi lebih responsif tanpa mengorbankan kebenaran atau portabilitas.
Kompresi file adalah proses yang mengurangi ukuran file atau beberapa file, biasanya untuk menyimpan ruang penyimpanan atau mempercepat transmisi melalui jaringan.
Kompresi file berfungsi dengan mengidentifikasi dan menghilangkan redundansi dalam data. Ia menggunakan algoritma untuk mengkodekan data asli dalam ruang yang lebih kecil.
Dua jenis utama kompresi file adalah kompresi tanpa kehilangan (lossless) dan kompresi dengan kehilangan (lossy). Kompresi lossless memungkinkan file asli untuk dipulihkan dengan sempurna, sedangkan kompresi lossy memungkinkan pengurangan ukuran yang lebih signifikan dengan biaya beberapa kehilangan kualitas data.
Contoh populer dari alat kompresi file adalah WinZip, yang mendukung beberapa format kompresi termasuk ZIP dan RAR.
Dengan kompresi tanpa kehilangan, kualitas tetap tidak berubah. Namun, dengan kompresi dengan kehilangan, dapat terjadi penurunan kualitas yang cukup terlihat karena menghilangkan data yang kurang penting untuk mengurangi ukuran file lebih signifikan.
Ya, kompresi file aman dari segi integritas data, terutama dengan kompresi tanpa kehilangan. Namun, seperti file lainnya, file yang dikompresi bisa menjadi target malware atau virus, jadi selalu penting untuk memiliki perangkat lunak keamanan yang terpercaya.
Hampir semua jenis file dapat dikompresi, termasuk file teks, gambar, audio, video, dan file perangkat lunak. Namun, level kompresi yang dapat dicapai bisa sangat bervariasi di antara jenis file.
File ZIP adalah jenis format file yang menggunakan kompresi tanpa kehilangan untuk mengurangi ukuran satu atau lebih file. Beberapa file dalam sebuah file ZIP efektif digabungkan menjadi satu file, yang juga memudahkan berbagi.
Secara teknis, ya, meskipun pengurangan ukuran tambahan mungkin minimal atau bahkan kontraproduktif. Melakukan kompresi pada file yang sudah dikompresi terkadang bisa meningkatkan ukurannya karena metadata yang ditambahkan oleh algoritma kompresi.
Untuk melakukan dekompresi file, biasanya Anda memerlukan alat dekompresi atau unzipping, seperti WinZip atau 7-Zip. Alat-alat ini dapat mengekstrak file asli dari format yang dikompresi.