Кіріспе

Файлдарды сығыстыру бағдарламалық жасақтамасы

bzip2 – бұл Burrows–Wheeler алгоритмін қолданатын тегін және ашық кодты файлдарды сығыстыру бағдарламасы. Ол тек жеке файлдарды ғана сығымдайды және файлдық архивтеуші емес. Бірнеше файлды өңдеу, шифрлау және архивті бөлу сияқты міндеттер үшін ол бөлек сыртқы құралдарға тәуелді. bzip2 алғаш рет 1996 жылы Джулиан Сьюард жасаған. Ол көптеген файлдарды ескі LZW және Deflate сығыстыру алгоритмдерінен тиімдірек сығымдайды, бірақ өте баяу. bzip2 мәтіндік деректер үшін ерекше тиімді, ал сығылған деректерді ашу салыстырмалы түрде жылдам. Алгоритм бірнеше қабатты сығыстыру әдістерін қолданады, мысалы, жүгіру ұзындығын кодтау (RLE), Burrows–Wheeler түрлендіруі (BWT), алға жылжыту түрлендіруі (MTF) және Хаффман кодтау. bzip2 деректерді 100 және 900 кБ арасындағы блоктарда сығымдайды және жиі қайталанатын символдар тізбегін бірдей әріптер қатарына айналдыру үшін Burrows–Wheeler түрлендіруін пайдаланады. Содан кейін алға жылжыту түрлендіруі және Хаффман кодтау қолданылады. Сығылу өнімділігі асимметриялық, сығылған деректерді ашу сығылудан жылдам. Алгоритм алғашқы шығарылымынан бері бірнеше жасаушыны алмастырды, ал 2021 жылдың маусымынан бастап Миха Снайдер оны күтіп бағдарлайды. Алгоритмге бірнеше өзгерістер енгізілді, мысалы, pbzip2, ол көп процессорлы және көп ядролы компьютерлерде сығылу жылдамдығын арттыру үшін көп жіптерді пайдаланады. bzip2 Hadoop және Apache Spark сияқты кластерлік есептеу жүйелерімен үлкен деректер қолданбаларында пайдалануға қолайлы, себебі сығылған блок бұрынғы блоктарды өңдеуді қажет етпей-ақ ашылуы мүмкін.

Тарих

Сьюард bzip2 бағдарламасының 0.15 нұсқасын алғаш рет 1996 жылдың шілде айында жариялады. Компрессордың тұрақтылығы мен танымалдылығы келесі бірнеше жылда артты, ал Сьюард 2000 жылдың соңында 1.0 нұсқасын шығарды. 2010 жылдан бері жобаға тоғыз жыл бойы жаңартулар енгізілмегеннен кейін, 2019 жылдың 4 маусымында Федерико Мена bzip2 жобасын күтуге міндеттенді. 2021 жылдың маусым айынан бастап Мика Снайдер жобаны күтуші болып тағайындалды.

Тиімділік

bzip2 ескі LZW (.Z) және Deflate (.zip және gz) қысу алгоритмдерінен көптеген файлдарды тиімдірек қысады, бірақ айтарлықтай баяу. LZMA әдетте bzip2-ге қарағанда жадты тиімдірек пайдаланады, бірақ қысу жылдамдығы одан да баяулайды, ал декомпрессиясы әлдеқайда жылдам. bzip2 деректерді 100 кБ мен 900 кБ арасындағы блоктарға қысып, жиі қайталанатын символдар тізбегін бірдей әріптер тізбегіне айналдыру үшін Burrows–Wheeler түрлендіруін қолданады. Содан кейін ол move-to-front түрлендіруі мен Хаффман кодтауын қолданады. bzip2-нің алдағысы bzip Хаффманның орнына арифметикалық кодтауды қолданған. Бұл өзгеріс бағдарламалық қамтамасыз ету патентіне байланысты шектеулер болғандықтан жасалды. bzip3, bzip2-мен ортақ ата-тегі мен алгоритмдер жиынтығын бөлісетін заманауи компрессор, керісінше арифметикалық кодтауға қайта көшті. bzip2 өнімділігі асимметриялық, себебі декомпрессия салыстырмалы түрде жылдам. Қысуға кететін ұзақ уақытқа байланысты 2003 жылы pbzip2 деп аталатын модификацияланған нұсқасы құрылды, ол файлды бірнеше бөліктерге кодтау үшін көп жіпті қолданды, бұл көп процессорлы және көп ядролы компьютерлерде шамамен сызықтық жылдамдыққа қол жеткізді. 2010 жылға дейін бұл мүмкіндік негізгі жобаға енгізілген жоқ. gzip сияқты, bzip2 – тек деректерді қысатын құрал. Бұл tar немесе ZIP сияқты архивтеуші емес; bzip2 файл форматы бірнеше файлдың мазмұнын бір қысылған файлда сақтауды қолдамайды, сондай-ақ бағдарламаның өзінде бірнеше файлдарды, шифрлауды немесе архивті бөлуге арналған мүмкіндіктер жоқ. UNIX дәстүрінде архивтеуді жеке бағдарлама жасауы мүмкін, ол bzip2 арқылы қысылған архивті шығарады, ал архивті ашу үшін bzip2 қысылған архивті ашып, содан кейін жеке бағдарламамен декомпрессиялау қажет. Кейбір архивтерде қысу және декомпрессия үшін кіріктірілген қолдау бар, сондықтан архивті қысу немесе декомпрессиялау үшін bzip2 бағдарламасын пайдаланудың қажеті жоқ. GnuPG сонымен қатар bzip2 қысу және декомпрессиясын қолдайды. grep негізіндегі bzgrep құралы мазмұнды алдымен ашып шығармай-ақ, қысылған мәтін ішінде тікелей іздеуге мүмкіндік береді.