7z adalah format file arsip terkompresi yang mendukung beberapa kompresi data, enkripsi, dan algoritme pra-pemrosesan yang berbeda. Format 7z awalnya muncul seperti yang diterapkan oleh pengarsipan 7-Zip. Program 7-Zip tersedia untuk umum di bawah ketentuan GNU Lesser General Public License. LZMA SDK 4.62 ditempatkan di domain publik pada Desember 2008. Versi stabil terbaru dari 7-Zip dan LZMA SDK adalah versi 22.01.
Spesifikasi format file 7z resmi dan informal didistribusikan dengan kode sumber 7-Zip sejak 2015. Spesifikasi dapat ditemukan dalam format teks biasa di sub-direktori ‘doc’ dari distribusi kode sumber. Ada upaya pihak ketiga tambahan saat menulis dokumentasi yang lebih konkret berdasarkan kode yang dirilis.
Fitur dan penyempurnaan
Format 7z menyediakan fitur utama berikut:
Arsitektur modular terbuka yang memungkinkan metode kompresi, konversi, atau enkripsi apa pun untuk ditumpuk.
Rasio kompresi tinggi (tergantung pada metode kompresi yang digunakan).
Enkripsi AES-256 bit.
Enkripsi Zip 2.0 (Legacy).
Dukungan file besar (hingga sekitar 16 exbibytes, atau 264 byte).
Nama file Unicode.
Dukungan untuk kompresi solid, di mana banyak file dengan tipe serupa dikompresi dalam satu aliran, untuk mengeksploitasi redundansi gabungan yang melekat pada file serupa.
Kompresi dan enkripsi header arsip.
Dukungan untuk arsip multi-bagian : mis. xxx.7z.001, xxx.7z.002, … (lihat item menu konteks Split File… untuk membuatnya dan Combine Files… untuk menyusun kembali arsip dari sekumpulan file komponen multi-bagian).
Dukungan untuk DLL plugin codec khusus.
Arsitektur terbuka format memungkinkan metode kompresi tambahan di masa mendatang untuk ditambahkan ke standar.
Metode kompresi
Metode kompresi berikut saat ini didefinisikan:
LZMA – Sebuah variasi dari algoritma LZ77, menggunakan kamus geser dengan panjang hingga 4 GB untuk menghilangkan string duplikat. Tahap LZ diikuti oleh pengkodean entropi menggunakan range coder berbasis rantai Markov dan pohon biner.
LZMA2 – versi LZMA yang dimodifikasi memberikan dukungan multithreading yang lebih baik dan lebih sedikit perluasan data yang tidak dapat dimampatkan.
Bzip2 – Algoritma transformasi Burrows–Wheeler standar. Bzip2 menggunakan dua transformasi reversibel; BWT, lalu Pindah ke depan dengan pengkodean Huffman untuk pengurangan simbol (elemen kompresi sebenarnya).
PPMd – PPMdH 2002 Dmitry Shkarin (PPMII (Prediction by Partial matching with Information Inheritance) dan cPPMII (PPMII rumit)) dengan perubahan kecil: PPMII adalah versi perbaikan dari algoritma kompresi PPM 1984 (prediksi dengan pencocokan sebagian).
DEFLATE – Algoritme standar berdasarkan 32 kB LZ77 dan pengkodean Huffman. Deflate ditemukan dalam beberapa format file termasuk ZIP, gzip, PNG dan PDF. 7-Zip berisi encoder DEFLATE dari awal yang sering mengalahkan versi zlib standar de facto dalam ukuran kompresi, tetapi dengan mengorbankan penggunaan CPU.
Serangkaian alat rekompresi yang disebut AdvanceCOMP berisi salinan encoder DEFLATE dari implementasi 7-Zip; utilitas ini sering dapat digunakan untuk mengompresi lebih jauh ukuran file gzip, ZIP, PNG, atau MNG yang ada.
Filter pra-pemrosesan
LZMA SDK hadir dengan preprosesor BCJ dan BCJ2 disertakan, sehingga tahap selanjutnya dapat mencapai kompresi yang lebih besar: Untuk prosesor x86, ARM, PowerPC (PPC), IA-64 Itanium, dan ARM Thumb, target lompatan ‘dinormalisasi’ [ 5] sebelum kompresi dengan mengubah posisi relatif menjadi nilai absolut. Untuk x86, ini berarti bahwa lompatan dekat, panggilan, dan lompatan bersyarat (tetapi bukan lompatan pendek dan lompatan bersyarat) dikonversi dari notasi gaya bahasa mesin “lompat 1655 byte mundur” menjadi notasi gaya “lompat ke alamat 5554” yang dinormalisasi; semua lompatan ke 5554, mungkin subrutin umum, dengan demikian dikodekan secara identik, membuatnya lebih dapat dimampatkan.
BCJ – Konverter untuk executable x86 32-bit. Normalisasikan alamat target dari lompatan dekat dan panggilan dari jarak relatif ke tujuan absolut.
BCJ2– Pra-prosesor untuk executable x86 32-bit. BCJ2 adalah peningkatan pada BCJ, menambahkan pemrosesan instruksi lompat/panggilan x86 tambahan. Near jump, near call, target near jump bersyarat dipisahkan dan dikompresi secara terpisah di aliran lain.
Pengkodean delta – filter delta, preprosesor dasar untuk data multimedia.
Teknologi pra-pemrosesan yang dapat dieksekusi serupa disertakan dalam perangkat lunak lain; kompresor RAR menampilkan kompresi perpindahan untuk executable x86 32-bit dan executable IA-64, dan kompresor file executable runtime UPX mencakup dukungan untuk bekerja dengan nilai 16-bit dalam file biner DOS.
Enkripsi
Format 7z mendukung enkripsi dengan algoritme AES dengan kunci 256-bit. Kunci dihasilkan dari frasa sandi yang disediakan pengguna menggunakan algoritme berdasarkan fungsi hash SHA-256. SHA-256 dijalankan 218 (262144) kali, yang menyebabkan penundaan signifikan pada PC lambat sebelum kompresi atau ekstraksi dimulai. Teknik ini disebut peregangan kunci dan digunakan untuk mempersulit pencarian kata sandi secara paksa. Serangan perangkat keras khusus dan berbasis GPU saat ini membatasi keefektifan metode peregangan kunci khusus ini, jadi tetap penting untuk memilih kata sandi yang kuat. Format 7z menyediakan opsi untuk mengenkripsi nama file arsip 7z.
Keterbatasan
Format 7z tidak menyimpan izin sistem file (seperti izin pemilik/grup UNIX atau ACL NTFS), dan karenanya tidak sesuai untuk tujuan pencadangan/arsip. Solusi pada sistem mirip UNIX untuk ini adalah mengonversi data ke bitstream tar sebelum mengompresi dengan 7z. Tetapi perlu dicatat bahwa tar GNU (umum di banyak lingkungan UNIX) juga dapat dikompresi dengan algoritme LZMA2 (“xz”) secara asli, tanpa menggunakan 7z, menggunakan sakelar “-J”. Ekstensi file yang dihasilkan adalah “.tar.xz” atau “.txz” dan bukan “.tar.7z”. Metode kompresi ini telah diadopsi oleh banyak distribusi untuk pengemasan, seperti Arch, Debian (deb), Fedora (rpm), dan Slackware. (Format “lzma” yang lama kurang efisien.). Di sisi lain, penting untuk dicatat, bahwa tar tidak menyimpan pengkodean sistem file, yang berarti bahwa nama file terkompresi tar dapat menjadi tidak dapat dibaca jika didekompresi pada komputer lain.
Format 7z tidak mengizinkan ekstraksi beberapa “file rusak”—yaitu (misalnya) jika seseorang memiliki segmen pertama dari rangkaian file 7z, 7z tidak dapat memberikan permulaan file dalam arsip—harus menunggu sampai semua segmen diunduh. Format 7z juga tidak memiliki catatan pemulihan, membuatnya rentan terhadap degradasi data kecuali digunakan bersama dengan solusi eksternal, seperti parchive, atau di dalam sistem file dengan koreksi kesalahan yang kuat. Sebagai perbandingan, file zip juga tidak memiliki fitur pemulihan sedangkan format rar memilikinya.