.\" -*- coding: UTF-8 -*- .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH bzip2 1 .SH НАЗВА bzip2, bunzip2 — програма для стискання файлів із упорядковуванням блоків, версія 1.0.8 .br bzcat — розпакувати файли до стандартного виведення .br bzip2recover — відновлює дані з пошкоджених файлів bzip2 .SH "КОРОТКИЙ ОПИС" .ll +8 \fBbzip2\fP [\fB \-cdfkqstvzVL123456789 \fP] [ \fIназви_файлів \&...\fP ] .br \fBbzip2\fP [\fB \-h|\-\-help \fP] .ll -8 .br \fBbunzip2\fP [\fB \-fkvsVL \fP] [ \fIназви_файлів \&...\fP ] .br \fBbunzip2\fP [\fB \-h|\-\-help \fP] .br \fBbzcat\fP [\fB \-s \fP] [ \fIназви_файлів \&...\fP ] .br \fBbzcat\fP [\fB \-h|\-\-help \fP] .br \fBbzip2recover\fP \fIназва_файла\fP .SH ОПИС \fIbzip2\fP стискає файли за допомогою алгоритму стискання тексту із упорядкуванням блоків Берроуза\-Вілера і кодування Гаффмана. Загалом, стискання є значно кращим за те, яке можна досягти звичайними засобами стискання на основі LZ77/LZ78 і досягає швидкодії сімейства статистичних засобів стискання PPM. Параметри командного рядка є навмисно дуже подібними до параметрів командного рядка \fIGNU gzip\fP, але вони не є ідентичними. Прапорці командного рядка у \fIbzip2\fP має бути поєднано зі списком назв файлів. Кожен файл буде замінено його стисненою версією із назвою «початкова_назва.bz2». Усі стиснуті файли матимуть ту саму дату внесення змін, права доступу і, якщо можливо, власників, що і початковий файл, отже, ці властивості буде належним чином відновлено під час розпакування. Обробка назв файлів є наївною у сенсі того, що немає механізму для збереження початкових назв файлів, прав доступу, власників або дат у файлових системах, де таких понять взагалі немає або які мають серйозні обмеження на довжину назв файлів, як у MS\-DOS. Типово, \fIbzip2\fP і \fIbunzip2\fP не перезаписуватимуть наявних файлів. Якщо вам потрібен перезапис, скористайтеся параметром \-f. Якщо назви файлів не буде вказано, \fIbzip2\fP стискатиме дані зі стандартного джерела вхідних даних до стандартного виведення. У такому випадку, \fIbzip2\fP відхилятиме запис стиснутих даних до термінала, оскільки читання цих даних у терміналі є неможливим, а тому не має сенсу. \fIbunzip2\fP (або \fIbzip2 \-d)\fP розпаковує усі вказані файли. Програма виявить і проігнорує файли, які не було створено за допомогою \fIbzip2\fP, а також видасть відповідне попередження. \fIbzip2\fP намагатиметься визначити назву розпакованого файла за назвою запакованого файла у такий спосіб: назвафайла.bz2 стане назвафайла назвафайла.bz стане назвафайла назвафайла.tbz2 стане назвафайла.tar назвафайла.tbz стане назвафайла.tar якасьіншаназва стане якасьіншаназва.out Якщо суфікс назви файла не належатиме до одного із відомих програмі, \&\fI.bz2,\fP \fI.bz,\fP \fI.tbz2\fP або \fI.tbz,\fP \fIbzip2\fP поскаржиться, що не може визначити назву початкового файла і скористається початковою назвою із дописуванням суфікса \fI.out\fP. Як і зі стисканням, якщо не буде вказано назв файлів, відбуватиметься розпаковування зі стандартного джерела вхідних даних до стандартного виведення. \fIbunzip2\fP належним чином розпакує файл, який є поєднанням двох або декількох стиснутих файлів. Результатом буде об'єднання відповідних нестиснутих файлів. Передбачено також підтримку перевірки цілісності (\-t) об'єднаних стиснених файлів. Ви також можете стиснути або розпакувати файли до стандартного виведення шляхом задання прапорця \-c. У такий спосіб може бути стиснено або розпаковано одразу декілька файлів. Виведені результати буде послідовно надіслано до стандартного виведення. Стискання декількох файлів у цей спосіб створює потік даних, що містить представлення декількох стиснених файлів. Такий потік може бути належним чином розпаковано лише версією \fIbzip2\fP 0.9.0 або новішими версіями. Попередні версії \fIbzip2\fP зупинять розпакування після першого файла у потоці даних. \fIbzcat\fP (або \fIbzip2 \-dc)\fP розпаковує усі вказані файли до стандартного виведення. \fIbzip2\fP читатиме аргументи зі змінних середовища \fIBZIP2\fP і \fIBZIP\fP, саме у такому порядку, і оброблятиме їх до будь\-яких аргументів, які прочитано з рядка команди. Ці змінні є зручним способом надання типових аргументів. Стискання виконуватиметься завжди, навіть якщо стиснутий файл є дещо більшим за початковий. Файли, розмір яких є меншим за приблизно сотню байтів, зазвичай, стають більшим, оскільки у механізму стискання є стале доповнення об'єму у розмірі 50 байтів. Випадкові дані (включно із виведеними більшістю засобів стискання даними) кодуються із щільністю 8,05 бітів на байт, що дає збільшення об'єму на приблизно 0,5%. Для самоперевірки і захисту ваших даних \fIbzip2\fP використовує 32\-бітові CRC для забезпечення ідентичності розпакованої версії файла оригіналу. Це охороняє стиснуті дані від пошкодження і невиявлених вад у \fIbzip2\fP (сподіваємося, дуже малоймовірних). Ймовірність невиявленого пошкодження є дуже низькою, приблизно рівною відношенню одиниці до чотирьох мільярдів для кожного обробленого файла. Зважайте на те, що перевірка виконується при розпакуванні, тому програма може лише повідомити вам, що щось не так. Вона не допоможе вам відновити початкові нестиснені дані. ви можете скористатися \fIbzip2recover\fP, щоб спробувати відновити дані із пошкоджених файлів. Повернуті значення: 0 для звичайного виходу, 1 для проблем із середовищем (не знайдено файл, некоректні прапорці, помилки введення\-виведення тощо), 2 для позначення пошкодженого стиснутого файла, 3 для помилки внутрішньої сумісності (наприклад вади), яка спричиняє паніку \fIbzip2\fP. .SH ПАРАМЕТРИ .TP \fB\-c \-\-stdout\fP Стиснути або видобути у стандартне виведення. .TP \fB\-d \-\-decompress\fP Примусове розпакування. Насправді, \fIbzip2\fP, \fIbunzip2\fP і \fIbzcat\fP це та сама програма, і визначення дії, яку має бути виконано, відбувається на основі використаної назви програми. Цей прапорець надає змогу перевизначити цей механізм і примусити \fIbzip2\fP до виконання розпакування. .TP \fB\-z \-\-compress\fP Доповнення до \-d: примусове стискання, незалежно від викликаної назви. .TP \fB\-t \-\-test\fP Перевірити цілісність вказаних файлів, але не розпаковувати їх. Насправді, програма виконує тестове розпакування і повідомляє результат. .TP \fB\-f \-\-force\fP Примусово перезаписувати виведені файли. Зазвичай, \fIbzip2\fP не перезаписуватиме наявних виведених файлів. Використання параметра також призведе до примусового розірвання \fIbzip2\fP жорстких посилань на файли. Без цього параметра програма не розриватиме жорстких посилань. Зазвичай, bzip2 відмовляється розпаковувати файли, у яких немає належних байтів контрольної суми у заголовку. Втім, у примусовому режимі (\-f) програма передає такі файли без змін. Так поводиться GNU gzip. .TP \fB\-k \-\-keep\fP Зберігати (не вилучати) файли вхідних даних під час стискання або розпаковування. .TP \fB\-s \-\-small\fP Зменшити використання пам'яті для стискання, розпакування та тестування. Файли буде розпаковано і перевірено за допомогою зміненого алгоритму, який потребує лише 2,5 байтів на блоковий байт. Це означає, щоб будь\-який файл можна буде розпакувати у 2300\ кБ пам'яті, хоча і у половину звичайної швидкості. Під час стискання \-s вибирає розмір блоку у 200\ кБ, що обмежує використання пам'яті майже до тих самих значень за рахунок коефіцієнта стискання. Якщо коротко, якщо на вашому комп'ютері замало оперативної пам'яті (8 мегабайтів або менше), користуйтеся \-s для усього. Див. КЕРУВАННЯ ПАМ'ЯТТЮ нижче. .TP \fB\-q \-\-quiet\fP Придушити неважливі повідомлення\-попередження. Повідомлення про помилки введення\-виведення та інші критичні події не буде придушено. .TP \fB\-v \-\-verbose\fP Режим докладних повідомлень — показувати коефіцієнт стискання для усіх оброблених файлів. Додаткові \-v збільшують рівень докладності, надаючи доступ до значного масиву інформації, яка, в основному, буде цікавою з метою діагностики. .TP \fB\-h \-\-help\fP Вивести короткий текст довідки і завершити роботу. .TP \fB\-L \-\-license \-V \-\-version\fP Вивести дані щодо версії програми та умов ліцензування. .TP \fB\-1 (або \-\-fast) до \-9 (або \-\-best)\fP Встановити розмір блоку 100 кБ, 200 кБ ... 900 кБ при стисканні. Не діє при розпаковуванні. Див. КЕРУВАННЯ ПАМ'ЯТТЮ нижче. Альтернативи \-\-fast і \-\-best призначено, в основному, для сумісності з GNU gzip. Зокрема, \-\-fast не робить обробку аж надто швидшою, а \-\-best, фактично, вибирає типову поведінку. .TP \fB\-\-\fP Вважати наступні аргументи назвами файлів, навіть якщо вони починаються з дефіса. Цей параметр уможливлює роботу із файлами, назви яких починаються з дефіса. Приклад: bzip2 \-\- \-назва_мого_файла. .TP \fB\-\-repetitive\-fast \-\-repetitive\-best\fP Ці прапорці є зайвими, починаючи з версії 0.9.5. Вони забезпечували певний грубий контроль над поведінкою алгоритму сортування у ранніх версіях програми, коли він іноді був корисним. У версіях 0.9.5 і новіших було удосконалено алгоритм, що зробило ці прапорці непотрібними. .SH "КЕРУВАННЯ ПАМ'ЯТТЮ" \fIbzip2\fP стискає великі файли блоками. Розмір блоку впливає на досягнутий коефіцієнт стискання і об'єм пам'яті, потрібний для стискання та розпаковування. Прапорці від \-1 до \-9 визначають розмір блоку від 100000 байтів до 900000 байтів (типово), відповідно. Під час розпаковування розмір блоку, використаний для стикання, буде прочитано із заголовка стиснутого файла, а \fIbunzip2\fP потім отримує саме стільки оперативної пам'яті, скільки потрібно для розпаковування файла. Оскільки розміри блоків зберігаються у стиснутих файлах, прапорці від \-1 до \-9 є непотрібними при розпаковуванні, а тому їх буде проігноровано. Вимоги щодо стискання і розпакування, у байтах, мають такі оцінки: Стискання: 400\ кБ + ( 8 x розмір блоку ) Розпакування: 100\ кБ + ( 4 x розмір блоку ) або 100\ кБ + ( 2,5 x розмір блоку ) Збільшення розмірів блоку дає певні переваги, які швидко зменшуються зі зростанням розмірів. Найбільше покращення спостерігається на перших двох або трьох сотнях кілобайтів розмірів блоків. На цей факт слід звернути увагу, коли ви користуєтеся \fIbzip2\fP на малопотужних комп'ютерах. Також важливо зважати на те, що вимоги щодо пам'яті для розпаковування буде встановлено при стисканні вибором розміру блоку. Для файлів, які стиснуто з типовим розміром блоку 900\ кБ, \fIbunzip2\fP потребуватиме близько 3700 кілобайтів для розпаковування. Для розпаковування будь\-якого файла на комп'ютері з 4 мегабайтами оперативної пам'яті у \fIbunzip2\fP передбачено параметр для розпаковування за допомогою приблизно половини цього об'єму пам'яті, близько 2300 кілобайтів. Швидкість розпаковування також зменшиться удвічі, тому вам слід користуватися цим параметром лише там, де у цьому є потреба. Відповідним прапорцем є \-s. Загалом, спробуйте скористатися найбільшим за обмеженням розміром блоку у пам'яті, оскільки це робить максимальним стискання. Розмір блоку майже не впливає на швидкість стискання або розпаковування. Інше важливе зауваження стосується файлів, які вкладаються у один блок — тобто більшості файлів, з якими ви можете мати справу, коли користуєтеся великим розміром блоку. Справжній об'єм пам'яті є пропорційним до розміру файла, оскільки розмір файла є меншим за розмір блоку. Наприклад, стискання файла у 20000 байтів із прапорцем \-9 призведе до отримання засобом стискання близько 7600\ кБ оперативної пам'яті, але використано буде лише 400\ кБ + 20000 * 8 = 560 кілобайтів з цієї пам'яті. Так само, засіб розпаковування отримає 3700\ кБ оперативної пам'яті, але використає лише 100\ кБ + 20000 * 4 = 180 кілобайтів. Нижче наведено таблицю із резюме щодо максимального використання пам'яті для різних розмірів блоків. Також записано загальний стиснений розмір для 14 файлів з набору для стискання тексту Калгарі, загальний об'єм даних у яких складає 3141622 байти. Цей стовпчик дає емпіричні дані щодо того, як залежить стискання від розміру блоку. Наведені дані дещо занижують переваги використання більшого розміру блоку для великих файлів, оскільки у використаному наборі переважно малі файли. Використано Використано Використано Розмір Прапорець стискання розпак. розпак. \-s набору \-1 1200 кБ 500 кБ 350 кБ 914704 \-2 2000 кБ 900 кБ 600 кБ 877703 \-3 2800 кБ 1300 кБ 850 кБ 860338 \-4 3600 кБ 1700 кБ 1100 кБ 846899 \-5 4400 кБ 2100 кБ 1350 кБ 845160 \-6 5200 кБ 2500 кБ 1600 кБ 838626 \-7 6100 кБ 2900 кБ 1850 кБ 834096 \-8 6800 кБ 3300 кБ 2100 кБ 828642 \-9 7600 кБ 3700 кБ 2350 кБ 828642 .SH "ВІДНОВЛЕННЯ ДАНИХ З ПОШКОДЖЕНИХ ФАЙЛІВ" \fIbzip2\fP стискає файли блоками, розмір яких, зазвичай, дорівнює 900\ кілобайтів. Обробка кожного блоку відбувається незалежно. Якщо помилка під час зберігання на носії даних або передавання даних спричиняє пошкодження даних у багатоблоковому файлі .bz2, дані з непошкоджених блоків файла можна відновити. Стиснене представлення кожного з блоків обмежено 48\-бітовим взірцем, який уможливлює пошук меж блоків з прийнятною точністю. Також у кожному з блоків зберігається його власна 32\-бітова контрольна сума CRC, тому пошкоджені блоки можна відрізнити від непошкоджених. \fIbzip2recover\fP — проста програма, призначенням якої є пошук блоків у файлах \&.bz2 і запис кожного з блоків до власного файла .bz2. Ви можете скористатися \fIbzip2\fP \-t для перевірки цілісності отриманих файлів та розпакування тих з них, які не пошкоджено. \fIbzip2recover\fP приймає єдиний аргумент, назву пошкодженого файла, і записує послідовність файлів «rec00001file.bz2», «rec00002file.bz2» тощо, у яких містяться видобуті блоки. Назви файлів\-результатів створено таким чином, щоб можна було скористатися шаблонами заміни для подальшої обробки — наприклад, «bzip2 \-dc rec*file.bz2 > відновлені_дані» — обробить файли у належній послідовності. \fIbzip2recover\fP найкраще працює з великими файлами .bz2, оскільки вони складаються з багатьох блоків. Очевидно, марно сподіватися, що програмою можна буде скористатися для файлів, які складаються з одного блоку, оскільки пошкоджений блок не можна буде відновити. Якщо ви хочете мінімізувати потенційну ймовірність втрати даних через помилки на носії даних або під час передавання даних, варто використовувати менший розмір блоку. .SH "НОТАТКИ ЩОДО ШВИДКОДІЇ" При стисканні під час фази упорядковування програма збирає разом подібні рядки у файлі. Через це, стискання файлів, які містять дуже довгі послідовності повторюваних символів, наприклад «aabaabaabaab ...» (з повтором декілька сотень разів) може бути повільнішим за стискання звичайних файлів. У таких випадках версія 0.9.5 і новіші працюють набагато краще за своїх попередників. Співвідношенням для часу стискання у найгіршому та середньому випадках складає 10:1. У попередніх версіях воно могло складати щось близько 100:1. Для спостереження за усіма подробицями поступу стискання можна скористатися, якщо ви цього хочете, параметром \-vvvv. Швидкості розпакування це не стосується. Зазвичай, \fIbzip2\fP отримує декілька мегабайтів оперативної пам'яті для роботи, а потім заповнює їх доволі випадковим чином. Це означає, що швидкодія, при стисканні та розпаковуванні, значним чином визначається швидкістю, з якою комп'ютер може обслуговувати промахи у кеші. Через це, незначні зміни у коді для зменшення частоти промахів дають непропорційно велике підвищення швидкодії. Автор вважає, що \fIbzip2\fP найкраще працює на комп'ютерах із дуже великим кешем. .SH ЗАСТЕРЕЖЕННЯ Повідомлення щодо помилок введення\-виведення не такі корисні, як могли б бути. \fIbzip2\fP намагається з усіх сил виявити помилки введення\-виведення і завершити роботу у штатному режимі, але подробиці щодо того, з чим виникли проблеми, іноді є доволі оманливими. Ця сторінка підручника містить відомості щодо версії 1.0.8 \fIbzip2\fP. Стиснені дані, які створено за допомогою цієї версії, є в обох напрямках сумісними із попередніми загальнодоступними випусками, версіями 0.1pl2, 0.9.0, 0.9.5, 1.0.0, 1.0.1, 1.0.2 та новішими, за таким винятком: версія 0.9.0 і новіші здатні правильно розпаковувати декілька поєднаних стиснених файлів. Версія 0.1pl2 не здатна це робити; вона зупиниться після розпакування лише першого файла у потоці даних. У версіях \fIbzip2recover\fP до 1.0.2 для представлення бітових позицій у стиснутих файлах використано 32\-бітові цілі числа, тому ці версії не можуть працювати із стисненими файлами, об'єм яких перевищує 512 мегабайтів. У версіях 1.0.2 і новіших використано 64\-бітові цілі числа на деяких платформах, де передбачено підтримку таких чисел (підтримувані платформи GNU та Windows). Щоб визначити, чи було bzip2recover зібрано з таким обмеженням, запустіть програму без аргументів. Щоб там не сталося, ви можете зібрати версію без обмежень власноруч, якщо ви можете повторно зібрати програму із встановленим для MaybeUInt64 значенням 64\-бітового цілого числа без знаку. .SH АВТОР Julian Seward, jseward@acm.org. https://sourceware.org/bzip2/ Ідеї, які покладено в основу \fIbzip2\fP, належать (принаймні) таким людям: Майклу Берроузу (Michael Burrows) та Девіду Вілеру (David Wheeler) (перетворення з упорядковуванням блоків), Девіду Вілеру (знову, кодувальник Гаффмана), Пітеру Фенвіку (Peter Fenwick) (модель структурованого кодування у початковій версії \fIbzip\fP та багато удосконалень) та Алістеру Моффату (Alistair Moffat), Редфорду Нілу (Radford Neal) і Яну Віттену (арифметичний кодувальник у початковій версії \fIbzip\fP). Я дуже вдячний їм за допомогу, підтримку та поради. Посилання на джерела документації можна знайти у підручнику у дистрибутиві із початковим кодом програми. Крістіан фон Рокес (Christian von Roques) заохотив мене до пошуку швидших алгоритмів упорядковування для пришвидшення стискання. Бела Любкін (Bela Lubkin) заохотив мене до удосконалення швидкодії стискання у найгіршому випадку. Донна Робінсон (Donna Robinson) виконала перетворення документації на код XML. Скрипти bz* походять зі скриптів GNU gzip. Багато людей надсилало латки, допомагало із проблемами з портуванням, надавало обчислювальні потужності, надсилало поради та допомагало у інший спосіб. .PP .SH ПЕРЕКЛАД Український переклад цієї сторінки посібника виконано Andriy Rysin і Yuri Chornoivan . .PP Цей переклад є безкоштовною документацією; будь ласка, ознайомтеся з умовами .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE . НЕ НАДАЄТЬСЯ ЖОДНИХ ГАРАНТІЙ. .PP Якщо ви знайшли помилки у перекладі цієї сторінки підручника, будь ласка, надішліть електронний лист до списку листування перекладачів: .MT trans-uk@lists.fedoraproject.org .ME .