PAX (Pre-Allocate eXtension) adalah format arsip terkompresi sumber terbuka yang dikembangkan oleh Microsoft sebagai alternatif modern untuk format yang sudah ada seperti ZIP, RAR, dan tar. Format ini dirancang untuk mengatasi keterbatasan dan meningkatkan kompresi, performa, keamanan, dan fungsionalitas penanganan arsip pada sistem dan perangkat modern.
Fitur pembeda utama dari format PAX mencakup kompresi yang ditingkatkan menggunakan algoritme modern, akses acak yang efisien ke file dalam arsip, dukungan multi-threading asli, metadata yang dapat diperluas, enkripsi bawaan dan pemeriksaan integritas, serta spesifikasi terbuka yang terdokumentasi untuk mendorong adopsi dan interoperabilitas yang luas.
Arsip PAX menggunakan ekstensi file .pax dan memiliki struktur internal multi-bagian yang terdiri dari header, direktori pusat, blok data terkompresi, dan footer. Hal ini memungkinkan informasi penting seperti konten arsip, parameter kompresi, dan hash integritas untuk disimpan secara terpisah dari data file terkompresi yang sebenarnya.
Header PAX dimulai dengan nomor ajaib 4-byte (50 41 58 00 dalam hex) untuk identifikasi. Kemudian berisi bidang untuk versi PAX, metode kompresi, metode enkripsi, metode hash, ukuran blok, jumlah utas kompresi paralel, dan berbagai flag. Header diakhiri dengan metadata XML yang dapat diperluas yang memberikan detail tentang arsip.
Setelah header adalah direktori pusat PAX. Ini berisi entri untuk setiap file/folder terkompresi dalam arsip, menyimpan jalur lengkap, atribut, ukuran, offset blok, dan hash. Memiliki ini di satu tempat memungkinkan daftar isi arsip secara efisien dan akses acak ke file individual tanpa memindai data terkompresi.
Sebagian besar arsip PAX adalah serangkaian blok data terkompresi. Setiap blok memiliki header kecil yang menunjukkan ukuran yang tidak terkompresi dan terkompresi, diikuti oleh potongan data file yang dikompresi dengan algoritme yang dikonfigurasi. Blok default berukuran 1 MB tetapi ini dapat disesuaikan di header arsip.
Blok data terkompresi dienkripsi secara opsional jika metode enkripsi ditentukan. PAX mendukung skema enkripsi modern seperti AES-256. Kata sandi arsip digunakan untuk memperoleh kunci yang mengenkripsi setiap blok secara independen, memungkinkan akses acak yang efisien. Untuk otentikasi, PAX melakukan hash kata sandi dengan KDF yang aman.
Untuk kompresi, PAX mendukung berbagai codec tujuan umum modern yang dioptimalkan untuk dekompresi cepat: LZMA, LZ4, Brotli, Zstandard, dll. Ini juga memungkinkan praprosesor untuk pengurangan ukuran lebih lanjut pada jenis file tertentu (misalnya pengkodean Delta pada EXE/DLL, pengkodean E8E9 pada kode x86). Codec dan praprosesor diterapkan dalam sebuah alur.
Untuk mengaktifkan kompresi multi-utas yang efisien, file dipartisi menjadi blok terkompresi independen yang dapat diproses oleh instans codec paralel. Kompresor PAX menskalakan secara otomatis untuk menggunakan semua inti CPU yang tersedia. Partisi serupa memungkinkan dekompresi paralel untuk ekstraksi yang lebih cepat.
PAX menyediakan integritas data dan deteksi gangguan dengan menyimpan hash dari data asli dan terkompresi. Arsip membawa hash header untuk mendeteksi pemotongan. Direktori pusat juga di-hash untuk mencegah gangguan pada metadata file. Bit rot dalam data terkompresi ditangkap dengan melakukan hash pada setiap blok.
Di akhir arsip PAX adalah footer. Ini berisi salinan bidang header, offset/ukuran direktori pusat, dan hash seluruh arsip. Footer memiliki ukuran tetap dan selalu di akhir file, memungkinkan lokasi dan verifikasi arsip PAX dengan mudah.
Arsip PAX dapat diperbarui secara efisien dengan memodifikasi direktori pusat dan menambahkan blok data yang diubah, dibandingkan dengan menulis ulang seluruh arsip seperti ZIP. Seluruh file dapat disisipkan, dihapus, atau diganti dengan memperbarui metadata dan menambahkan/menghapus blok yang relevan. Arsip juga dapat ditambahkan dengan cepat.
Untuk mengurangi kerentanan zip-slip, PAX memerlukan jalur eksplisit (tidak ada traversal ../) dan mencegah penulisan di luar root ekstraksi. Bidang metadata ZIP yang panjang yang memungkinkan penolakan layanan dibatasi. Bom kompresi dikurangi melalui batasan pada rasio kompresi dan penggunaan memori.
Stempel waktu file dalam arsip PAX menggunakan format 64-bit standar yang mencakup berbagai tanggal dengan presisi 1 detik. Atribut untuk izin POSIX dan ACL Windows didukung. PAX dapat menyimpan aliran data alternatif NTFS dan fork sumber daya. Symlink dan hardlink juga dapat direpresentasikan.
SDK PAX sumber terbuka menyediakan API sederhana untuk membuat, mengekstrak, memperbarui, dan memverifikasi arsip PAX secara terprogram. Ini menangani semua detail tingkat rendah dari format PAX. SDK tersedia dalam berbagai bahasa termasuk C, C++, C#, Java, Python, JavaScript, Go, dan Rust.
Singkatnya, format arsip PAX dibangun di atas fondasi format yang telah terbukti seperti ZIP sambil memperkenalkan fitur dan pengoptimalan modern - kompresi yang efisien, multi-threading, akses acak, keamanan, dan spesifikasi terbuka. Hal ini menjadikan PAX ideal untuk berbagai skenario pengarsipan pada sistem saat ini.
Kompresi file adalah proses yang mengurangi ukuran file data untuk penyimpanan atau transmisi yang efisien. Ini menggunakan berbagai algoritma untuk mengkondensasi data dengan mengidentifikasi dan menghilangkan redundansi, yang seringkali dapat secara substansial mengurangi ukuran data tanpa kehilangan informasi asli.
Ada dua jenis utama kompresi file: lossless dan lossy. Kompresi lossless memungkinkan data asli untuk direkonstruksi dengan sempurna dari data yang dikompresi, yang ideal untuk file di mana setiap bit data penting, seperti teks atau file database. Contoh umum meliputi format file ZIP dan RAR. Di sisi lain, kompresi lossy menghilangkan data yang kurang penting untuk mengurangi ukuran file secara lebih signifikan, sering digunakan dalam file audio, video, dan gambar. JPEG dan MP3 adalah contoh di mana kehilangan data tidak signifikan menurunkan kualitas persepsi konten.
Kompresi file bermanfaat dalam banyak cara. Ini menghemat ruang penyimpanan pada perangkat dan server, menurunkan biaya dan meningkatkan efisiensi. Ini juga mempercepat waktu transfer file di jaringan, termasuk internet, yang sangat berharga untuk file besar. Selain itu, file yang dikompresi dapat digabungkan menjadi satu file arsip, yang membantu dalam organisasi dan pengangkutan beberapa file dengan lebih mudah.
Namun, kompresi file memiliki beberapa kekurangan. Proses kompresi dan dekompresi memerlukan sumber daya komputasi, yang dapat memperlambat kinerja sistem, terutama untuk file yang lebih besar. Juga, dalam hal kompresi lossy, beberapa data asli hilang selama kompresi, dan kualitas hasil mungkin tidak dapat diterima untuk semua penggunaan, terutama aplikasi profesional yang menuntut kualitas tinggi.
Kompresi file adalah alat penting di dunia digital saat ini. Ini meningkatkan efisiensi, menghemat ruang penyimpanan dan mengurangi waktu unduh dan unggah. Namun, ini datang dengan seperangkat drawback tersendiri dalam hal kinerja sistem dan risiko degradasi kualitas. Oleh karena itu, penting untuk memperhatikan faktor-faktor ini untuk memilih teknik kompresi yang tepat untuk kebutuhan data spesifik.
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.