jpayne@68: '\" t jpayne@68: .\" SPDX-License-Identifier: 0BSD jpayne@68: .\" jpayne@68: .\" Authors: Lasse Collin jpayne@68: .\" Jia Tan jpayne@68: .\" jpayne@68: .\" Ukrainian translation for xz-man. jpayne@68: .\" Yuri Chornoivan , 2019, 2022, 2023, 2024. jpayne@68: .\" jpayne@68: .\"******************************************************************* jpayne@68: .\" jpayne@68: .\" This file was generated with po4a. Translate the source file. jpayne@68: .\" jpayne@68: .\"******************************************************************* jpayne@68: .TH XZ 1 2024\-12\-30 Tukaani "XZ Utils" jpayne@68: . jpayne@68: .SH НАЗВА jpayne@68: xz, unxz, xzcat, lzma, unlzma, lzcat — стискання та розпаковування файлів jpayne@68: \&.xz і .lzma jpayne@68: . jpayne@68: .SH "КОРОТКИЙ ОПИС" jpayne@68: \fBxz\fP [\fIпараметр...\fP] [\fIфайл...\fP] jpayne@68: . jpayne@68: .SH "СКОРОЧЕННЯ КОМАНД" jpayne@68: \fBunxz\fP є рівноцінним до \fBxz \-\-decompress\fP. jpayne@68: .br jpayne@68: \fBxzcat\fP є рівноцінним до \fBxz \-\-decompress \-\-stdout\fP. jpayne@68: .br jpayne@68: \fBlzma\fP є рівноцінним до \fBxz \-\-format=lzma\fP. jpayne@68: .br jpayne@68: \fBunlzma\fP є рівноцінним до \fBxz \-\-format=lzma \-\-decompress\fP. jpayne@68: .br jpayne@68: \fBlzcat\fP є рівноцінним до \fBxz \-\-format=lzma \-\-decompress \-\-stdout\fP. jpayne@68: .PP jpayne@68: При написанні скриптів, де потрібно розпаковувати файли, рекомендуємо завжди jpayne@68: використовувати \fBxz\fP із відповідними аргументами (\fBxz \-d\fP або \fBxz \-dc\fP), jpayne@68: замість \fBunxz\fP і \fBxzcat\fP. jpayne@68: . jpayne@68: .SH ОПИС jpayne@68: \fBxz\fP інструмент загального призначення для стискання даних із синтаксисом jpayne@68: командного рядка, подібним для \fBgzip\fP(1) і \fBbzip2\fP(1). Власним форматом jpayne@68: файлів є \fB.xz\fP, але передбачено підтримку застарілого формату \fB.lzma\fP, jpayne@68: який було використано у LZMA Utils, та необроблених потоків стиснених даних jpayne@68: без заголовків формату контейнера. Крім того, передбачено підтримку jpayne@68: розпаковування формату \fB.lz\fP, який використано у \fBlzip\fP. jpayne@68: .PP jpayne@68: \fBxz\fP стискає або розпаковує кожен \fIфайл\fP відповідно до вибраного режиму jpayne@68: дій. Якщо \fIфайли\fP не задано або якщо \fIфайлом\fP є \fB\-\fP, \fBxz\fP читатиме дані jpayne@68: зі стандартного джерела вхідних даних і записуватиме оброблені дані до jpayne@68: стандартного виведення. \fBxz\fP відмовить (покаже повідомлення про помилку і jpayne@68: пропустить \fIфайл\fP) у записів стиснених даних до стандартного виведення, jpayne@68: якщо це термінал. Так само, \fBxz\fP відмовить у читанні стиснених даних зі jpayne@68: стандартного джерела вхідних даних, якщо це термінал. jpayne@68: .PP jpayne@68: Якщо не вказано \fB\-\-stdout\fP, \fIфайли\fP, відмінні від \fB\-\fP, буде записано до jpayne@68: нового файла, чию назву буде визначено з назви початкового \fIфайла\fP: jpayne@68: .IP \(bu 3 jpayne@68: При стисканні суфікс формату файла призначення (\fB.xz\fP або \fB.lzma\fP) буде jpayne@68: дописано до назви початкового файла для отримання назви файла призначення. jpayne@68: .IP \(bu 3 jpayne@68: При розпаковуванні суфікс \fB.xz\fP, \fB.lzma\fP або \fB.lz\fP буде вилучено з назви jpayne@68: файла для отримання назви файла призначення. Крім того, \fBxz\fP розпізнає jpayne@68: суфікси \fB.txz\fP і \fB.tlz\fP і замінює їх на суфікс \fB.tar\fP. jpayne@68: .PP jpayne@68: Якщо файл призначення вже існує, буде показано повідомлення про помилку, а jpayne@68: \fIфайл\fP буде пропущено. jpayne@68: .PP jpayne@68: Окрім випадку запису до стандартного виведення, \fBxz\fP покаже попередження і jpayne@68: пропустить обробку \fIфайла\fP, якщо буде виконано будь\-яку з таких умов: jpayne@68: .IP \(bu 3 jpayne@68: \fIФайл\fP не є звичайним файлом. Програма не переходитиме за символічними jpayne@68: посиланнями, а отже, не вважатиме їх звичайними файлами. jpayne@68: .IP \(bu 3 jpayne@68: На \fIфайл\fP існує декілька жорстких посилань. jpayne@68: .IP \(bu 3 jpayne@68: Для \fIфайла\fP встановлено setuid, setgid або «липкий» біт. jpayne@68: .IP \(bu 3 jpayne@68: Режим дій встановлено у значення «стискання», і \fIфайл\fP вже має суфікс назви jpayne@68: формату файла призначення (\fB.xz\fP або \fB.txz\fP при стисканні до формату jpayne@68: \&\fB.xz\fP, і \fB.lzma\fP або \fB.tlz\fP при стисканні до формату \fB.lzma\fP). jpayne@68: .IP \(bu 3 jpayne@68: Режим дій встановлено у значення «розпаковування», і \fIфайл\fP не має суфікса jpayne@68: назви жодного з підтримуваних форматів (\fB.xz\fP, \fB.txz\fP, \fB.lzma\fP, \fB.tlz\fP jpayne@68: або \fB.lz\fP). jpayne@68: .PP jpayne@68: Після успішного стискання або розпаковування \fIфайла\fP, \fBxz\fP копіює дані jpayne@68: щодо власника, групи, прав доступу, часу доступу та моменту внесення змін з jpayne@68: початкового \fIфайла\fP до файла призначення. Якщо копіювання даних щодо групи jpayne@68: зазнає невдачі, права доступу буде змінено так, що файл призначення стане jpayne@68: недоступним для користувачів, які не мають права доступу до початкового jpayne@68: \fIфайла\fP. В \fBxz\fP ще не передбачено підтримки копіювання інших метаданих, jpayne@68: зокрема списків керування доступом або розширених атрибутів. jpayne@68: .PP jpayne@68: Щойно файл призначення буде успішно закрито, початковий \fIфайл\fP буде jpayne@68: вилучено, якщо не вказано параметра \fB\-\-keep\fP. Початковий \fIфайл\fP ніколи не jpayne@68: буде вилучено, якщо виведені дані буде записано до стандартного виведення jpayne@68: або якщо станеться помилка. jpayne@68: .PP jpayne@68: Надсилання \fBSIGINFO\fP або \fBSIGUSR1\fP до процесу \fBxz\fP призводить до jpayne@68: виведення даних щодо поступу до стандартного виведення помилок. Це має лише jpayne@68: обмежене використання, оскільки якщо стандартним виведенням помилок є jpayne@68: термінал, використання \fB\-\-verbose\fP призведе до показу автоматично jpayne@68: оновлюваного індикатора поступу. jpayne@68: . jpayne@68: .SS "Використання пам'яті" jpayne@68: Використання \fBxz\fP пам'яті може бути різним: від декількох сотень кілобайтів jpayne@68: до декількох гігабайтів, залежно від параметрів стискання. Параметри, які jpayne@68: використано при стисканні файла, визначають вимоги до об'єму пам'яті при jpayne@68: розпакуванні. Типово, засобу розпаковування потрібно від 5\ % до 20\ % jpayne@68: об'єму пам'яті, якого засіб стискання потребує при створенні jpayne@68: файла. Наприклад, розпаковування файла, який створено з використанням \fBxz \-9\fP, у поточній версії потребує 65\ МіБ пам'яті. Втім, можливе створення jpayne@68: файлів \fB.xz\fP, які потребуватимуть для розпаковування декількох гігабайтів jpayne@68: пам'яті. jpayne@68: .PP jpayne@68: Ймовірність високого рівня використання пам'яті може бути особливо jpayne@68: дошкульною для користувачів застарілих комп'ютерів. Щоб запобігти прикрим jpayne@68: несподіванкам, у \fBxz\fP передбачено вбудований обмежувач пам'яті, який типово jpayne@68: вимкнено. Хоча у деяких операційних системах передбачено спосіб обмежити jpayne@68: використання пам'яті процесами, сподівання на його ефективність не є аж jpayne@68: надто гнучким (наприклад, використання \fBulimit\fP(1) для обмеження jpayne@68: віртуальної пам'яті призводить до викривлення даних \fBmmap\fP(2)). jpayne@68: .PP jpayne@68: Обмежувач пам'яті можна увімкнути за допомогою параметра командного рядка jpayne@68: \fB\-\-memlimit=\fP\fIобмеження\fP. Часто, зручніше увімкнути обмежувач на типовому jpayne@68: рівні, встановивши значення для змінної середовища \fBXZ_DEFAULTS\fP, jpayne@68: наприклад, \fBXZ_DEFAULTS=\-\-memlimit=150MiB\fP. Можна встановити обмеження jpayne@68: окремо для стискання і розпакування за допомогою jpayne@68: \fB\-\-memlimit\-compress=\fP\fIlimit\fP and jpayne@68: \fB\-\-memlimit\-decompress=\fP\fIобмеження\fP. Використання цих двох параметрів поза jpayne@68: \fBXZ_DEFAULTS\fP не таке вже і корисне, оскільки одноразовий запуск \fBxz\fP не jpayne@68: може одночасно призводити до стискання та розпаковування, а набрати у jpayne@68: командному рядку \fB\-\-memlimit=\fP\fIобмеження\fP (або \fB\-M\fP \fIобмеження\fP) jpayne@68: набагато швидше. jpayne@68: .PP jpayne@68: Якщо під час розпаковування вказане обмеження буде перевищено, \fBxz\fP покаже jpayne@68: повідомлення про помилку, а розпаковування файла зазнає невдачі. Якщо jpayne@68: обмеження буде перевищено при стисканні, \fBxz\fP спробує масштабувати jpayne@68: параметри так, щоб не перевищувати обмеження (окрім випадків використання jpayne@68: \fB\-\-format=raw\fP або \fB\-\-no\-adjust\fP). Отже, дію буде виконано, якщо обмеження jpayne@68: не є надто жорстким. Масштабування параметрів буде виконано кроками, які не jpayne@68: збігаються із рівнями шаблонів стискання. Наприклад, якщо обмеження лише jpayne@68: трохи не вкладається у об'єм потрібний для \fBxz \-9\fP, параметри буде змінено jpayne@68: лише трохи, не до рівня \fBxz \-8\fP. jpayne@68: . jpayne@68: .SS "Поєднання і заповнення з файлами .xz" jpayne@68: Можна поєднати файли \fB.xz\fP без додаткової обробки. \fBxz\fP розпакує такі jpayne@68: файли так, наче вони є єдиним файлом \fB.xz\fP. jpayne@68: .PP jpayne@68: Можна додати доповнення між з'єднаними частинами або після останньої jpayne@68: частини. Доповнення має складатися із нульових байтів і мати розмір, який є jpayne@68: кратним до чотирьох байтів. Це може бути корисним, наприклад, якщо файл jpayne@68: \&\fB.xz\fP зберігається на носії даних, де розміри файла вимірюються у jpayne@68: 512\-байтових блоках. jpayne@68: .PP jpayne@68: Поєднання та заповнення не можна використовувати для файлів \fB.lzma\fP або jpayne@68: потоків необроблених даних. jpayne@68: . jpayne@68: .SH ПАРАМЕТРИ jpayne@68: . jpayne@68: .SS "Цілочисельні суфікси і спеціальні значення" jpayne@68: У більшості місць, де потрібен цілочисельний аргумент, передбачено підтримку jpayne@68: необов'язкового суфікса для простого визначення великих цілих чисел. Між jpayne@68: цілим числом і суфіксом не повинно бути пробілів. jpayne@68: .TP jpayne@68: \fBKiB\fP jpayne@68: Помножити ціле число на 1024 (2^10). Синонімами \fBKiB\fP є \fBKi\fP, \fBk\fP, \fBkB\fP, jpayne@68: \fBK\fP та \fBKB\fP. jpayne@68: .TP jpayne@68: \fBMiB\fP jpayne@68: Помножити ціле число на 1048576 (2^20). Синонімами \fBMiB\fP є B, \fBMi\fP, \fBm\fP, jpayne@68: \fBM\fP та \fBMB\fP. jpayne@68: .TP jpayne@68: \fBGiB\fP jpayne@68: Помножити ціле число на 1073741824 (2^30). Синонімами \fBGiB\fP є B, \fBGi\fP, jpayne@68: \fBg\fP, \fBG\fP та \fBGB\fP. jpayne@68: .PP jpayne@68: Можна скористатися особливим значенням \fBmax\fP для позначення максимального jpayne@68: цілого значення, підтримку якого передбачено для параметра. jpayne@68: . jpayne@68: .SS "Режим операції" jpayne@68: Якщо вказано декілька параметрів режиму дій, буде використано лише останній jpayne@68: з них. jpayne@68: .TP jpayne@68: \fB\-z\fP, \fB\-\-compress\fP jpayne@68: Стиснути. Це типовий режим дій, якщо не вказано параметр режиму дій, а назва jpayne@68: команди неявним чином не визначає іншого режиму дій (наприклад, \fBunxz\fP jpayne@68: неявно визначає \fB\-\-decompress\fP). jpayne@68: .IP "" jpayne@68: .\" The DESCRIPTION section already says this but it's good to repeat it jpayne@68: .\" here because the default behavior is a bit dangerous and new users jpayne@68: .\" in a hurry may skip reading the DESCRIPTION section. jpayne@68: After successful compression, the source file is removed unless writing to jpayne@68: standard output or \fB\-\-keep\fP was specified. jpayne@68: .TP jpayne@68: \fB\-d\fP, \fB\-\-decompress\fP, \fB\-\-uncompress\fP jpayne@68: .\" The DESCRIPTION section already says this but it's good to repeat it jpayne@68: .\" here because the default behavior is a bit dangerous and new users jpayne@68: .\" in a hurry may skip reading the DESCRIPTION section. jpayne@68: Decompress. After successful decompression, the source file is removed jpayne@68: unless writing to standard output or \fB\-\-keep\fP was specified. jpayne@68: .TP jpayne@68: \fB\-t\fP, \fB\-\-test\fP jpayne@68: Перевірити цілісність стиснених файлів \fIфайли\fP. Цей параметр еквівалентний jpayne@68: до \fB\-\-decompress \-\-stdout\fP, але розпаковані дані буде відкинуто, замість jpayne@68: запису до стандартного виведення. Жодних файлів не буде створено або jpayne@68: вилучено. jpayne@68: .TP jpayne@68: \fB\-l\fP, \fB\-\-list\fP jpayne@68: Вивести відомості щодо стиснених файлів \fIфайли\fP. Розпакування даних не jpayne@68: виконуватиметься, жодних файлів не буде створено або вилучено. У режимі jpayne@68: списку програма не може читати дані зі стандартного введення або з інших jpayne@68: джерел, де неможливе позиціювання. jpayne@68: .IP "" jpayne@68: У типовому списку буде показано базові відомості щодо файлів \fIфайли\fP, по jpayne@68: одному файлу на рядок. Щоб отримати докладніші відомості, скористайтеся jpayne@68: параметром \fB\-\-verbose\fP. Щоб розширити спектр відомостей, скористайтеся jpayne@68: параметром \fB\-\-verbose\fP двічі, але зауважте, що це може призвести до jpayne@68: значного уповільнення роботи, оскільки отримання додаткових відомостей jpayne@68: потребує великої кількості позиціювань. Ширина області докладного виведення jpayne@68: даних перевищує 80 символів, тому передавання конвеєром виведених даних, jpayne@68: наприклад, до \fBless\ \-S\fP, може бути зручним способом перегляду даних, якщо jpayne@68: термінал недостатньо широкий. jpayne@68: .IP "" jpayne@68: Виведені дані залежать від версії \fBxz\fP та використаної локалі. Для jpayne@68: отримання даних, які будуть придатні до обробки комп'ютером, слід jpayne@68: скористатися параметрами \fB\-\-robot \-\-list\fP. jpayne@68: . jpayne@68: .SS "Модифікатори режиму роботи" jpayne@68: .TP jpayne@68: \fB\-k\fP, \fB\-\-keep\fP jpayne@68: Не вилучати вхідні файли. jpayne@68: .IP "" jpayne@68: Починаючи з версії \fBxz\fP 5.2.6, використання цього параметра також наказує jpayne@68: \fBxz\fP виконувати стискання або розпаковування, навіть якщо вхідними даними є jpayne@68: символічне посилання на звичайний файл, файл, який має декілька жорстких jpayne@68: посилань, або файл, для якого встановлено setuid, setgid або липкий jpayne@68: біт. setuid, setgid та липкий біт не буде скопійовано до файла\-результату. У jpayne@68: попередніх версіях, ці дії виконувалися, лише якщо було використано параметр jpayne@68: \fB\-\-force\fP. jpayne@68: .TP jpayne@68: \fB\-f\fP, \fB\-\-force\fP jpayne@68: Результатів використання цього параметра буде декілька: jpayne@68: .RS jpayne@68: .IP \(bu 3 jpayne@68: Якщо файл\-результат вже існує, вилучити його до стискання або jpayne@68: розпаковування. jpayne@68: .IP \(bu 3 jpayne@68: Виконувати стискання або розпаковування, навіть якщо вхідними даними є jpayne@68: символічне посилання на звичайний файл, файл, який має декілька жорстких jpayne@68: посилань, або файл, для якого встановлено setuid, setgid або липкий біт jpayne@68: setuid, setgid та липкий біт не буде скопійовано до файла\-результату. jpayne@68: .IP \(bu 3 jpayne@68: Якщо використано разом із \fB\-\-decompress\fP, \fB\-\-stdout\fP, і \fBxz\fP не зможе jpayne@68: розпізнати тип початкового файла, копіювати початковий файл без змін до jpayne@68: стандартного виведення. Це надає змогу користуватися \fBxzcat\fP \fB\-\-force\fP jpayne@68: подібно до \fBcat\fP(1) для файлів, які не було стиснено за допомогою jpayne@68: \fBxz\fP. Зауважте, що у майбутньому у \fBxz\fP може бути реалізовано підтримку jpayne@68: нових форматів стиснених файлів, замість копіювання їх без змін до jpayne@68: стандартного виведення. Можна скористатися \fB\-\-format=\fP\fIформат\fP для jpayne@68: обмеження стискання у \fBxz\fP єдиним форматом файлів. jpayne@68: .RE jpayne@68: .TP jpayne@68: \fB\-c\fP, \fB\-\-stdout\fP, \fB\-\-to\-stdout\fP jpayne@68: Записати стиснені або розпаковані дані до стандартного виведення, а не до jpayne@68: файла. Неявним чином встановлює \fB\-\-keep\fP. jpayne@68: .TP jpayne@68: \fB\-\-single\-stream\fP jpayne@68: Розпакувати лише перший потік даних \fB.xz\fP і без повідомлень проігнорувати jpayne@68: решту вхідних даних, які слідують за цим потоком. Зазвичай, такі зайві дані jpayne@68: наприкінці файла призводять до показу \fBxz\fP повідомлення про помилку. jpayne@68: .IP "" jpayne@68: \fBxz\fP ніколи не виконуватиме спроби видобути декілька потоків даних з файлів jpayne@68: \&\fB.lzma\fP або необроблених потоків даних, але використання цього параметра jpayne@68: все одно наказує \fBxz\fP ігнорувати можливі кінцеві дані після файла \fB.lzma\fP jpayne@68: або необробленого потоку даних. jpayne@68: .IP "" jpayne@68: Цей параметр нічого не змінює, якщо режимом дій не є \fB\-\-decompress\fP або jpayne@68: \fB\-\-test\fP. jpayne@68: .TP jpayne@68: \fB\-\-no\-sparse\fP jpayne@68: Вимкнути створення розріджених файлів. Типово, якщо видобування виконується jpayne@68: до звичайного файла, \fBxz\fP намагається створити розріджений файл, якщо jpayne@68: розпаковані дані містять довгі послідовності двійкових нулів. Це також jpayne@68: працює, коли виконується запис до стандартного виведення, доки стандартне jpayne@68: виведення з'єднано зі звичайним файлом і виконуються певні додаткові умови, jpayne@68: які убезпечують роботу. Створення розріджених файлів може заощадити місце на jpayne@68: диску і пришвидшити розпаковування шляхом зменшення кількості дій введення jpayne@68: та виведення даних на диску. jpayne@68: .TP jpayne@68: \fB\-S\fP \fI.suf\fP, \fB\-\-suffix=\fP\fI.suf\fP jpayne@68: При стисканні використати суфікс \fI.suf\fP для файлів призначення, замість jpayne@68: суфікса \fB.xz\fP або \fB.lzma\fP. Якщо записування виконується не до стандартного jpayne@68: виведення і початковий файл вже має суфікс назви \fI.suf\fP, буде показано jpayne@68: попередження, а файл буде пропущено під час обробки. jpayne@68: .IP "" jpayne@68: При розпаковуванні розпізнавати файли із суфіксом назви \fI.suf\fP, окрім jpayne@68: файлів із суфіксами назв \fB.xz\fP, \fB.txz\fP, \fB.lzma\fP, \fB.tlz\fP або \fB.lz\fP. Якщо jpayne@68: початковий файл мав суфікс назви \fI.suf\fP, для отримання назви файла jpayne@68: призначення цей суфікс буде вилучено. jpayne@68: .IP "" jpayne@68: При стисканні або розпакуванні необроблених потоків даних (\fB\-\-format=raw\fP) jpayne@68: суфікс слід вказувати завжди, якщо запис не виконується до стандартного jpayne@68: виведення, оскільки типового суфікса назви для необроблених потоків даних не jpayne@68: передбачено. jpayne@68: .TP jpayne@68: \fB\-\-files\fP[\fB=\fP\fIфайл\fP] jpayne@68: Прочитати назви файлів для обробки з файла \fIфайл\fP; якщо \fIfile\fP не вказано, jpayne@68: назви файлів буде прочитано зі стандартного потоку вхідних даних. Назви jpayne@68: файлів має бути відокремлено символом нового рядка. Символ дефіса (\fB\-\fP) jpayne@68: буде оброблено як звичайну назву файла; він не позначатиме стандартного jpayne@68: джерела вхідних даних. Якщо також буде вказано назви файлів у аргументах jpayne@68: рядка команди, файли з цими назвами буде оброблено до обробки файлів, назви jpayne@68: яких було прочитано з файла \fIфайл\fP. jpayne@68: .TP jpayne@68: \fB\-\-files0\fP[\fB=\fP\fIфайл\fP] jpayne@68: Те саме, що і \fB\-\-files\fP[\fB=\fP\fIфайл\fP], але файли у списку має бути jpayne@68: відокремлено нульовим символом. jpayne@68: . jpayne@68: .SS "Параметри базового формату файлів та стискання" jpayne@68: .TP jpayne@68: \fB\-F\fP \fIformat\fP, \fB\-\-format=\fP\fIформат\fP jpayne@68: Вказати файл \fIформат\fP для стискання або розпакування: jpayne@68: .RS jpayne@68: .TP jpayne@68: \fBauto\fP jpayne@68: Типовий варіант. При стисканні \fBauto\fP є еквівалентом \fBxz\fP. При jpayne@68: розпакуванні формат файла вхідних даних буде виявлено автоматично. Зауважте, jpayne@68: що автоматичне виявлення необроблених потоків даних (створених за допомогою jpayne@68: \fB\-\-format=raw\fP) неможливе. jpayne@68: .TP jpayne@68: \fBxz\fP jpayne@68: Стиснути до формату \fB.xz\fP або приймати лише файли \fB.xz\fP при jpayne@68: розпаковуванні. jpayne@68: .TP jpayne@68: \fBlzma\fP, \fBalone\fP jpayne@68: Стиснути дані до застарілого формату файлів \fB.lzma\fP або приймати лише файли jpayne@68: \&\fB.lzma\fP при розпаковуванні. Альтернативну назву \fBalone\fP може бути jpayne@68: використано для зворотної сумісності із LZMA Utils. jpayne@68: .TP jpayne@68: \fBlzip\fP jpayne@68: Приймати лише файли \fB.lz\fP при розпакуванні. Підтримки стискання не jpayne@68: передбачено. jpayne@68: .IP "" jpayne@68: Передбачено підтримку версії формату \fB.lz\fP 0 та нерозширеної версії jpayne@68: 1. Файли версії 0 було створено \fBlzip\fP 1.3 та старішими версіями. Такі jpayne@68: файли не є поширеними, але їх можна знайти у файлових архівах, оскільки jpayne@68: певну незначну кількість пакунків із початковим кодом було випущено у цьому jpayne@68: форматі. Також можуть існувати особисті файли у цьому форматі. Підтримку jpayne@68: розпаковування для формату версії 0 було вилучено у \fBlzip\fP 1.18. jpayne@68: .IP "" jpayne@68: \fBlzip\fP 1.4 і пізніші версії створюють файли у форматі версії 1. Розширення jpayne@68: синхронізації позначки витирання до формату версії 1 було додано у \fBlzip\fP jpayne@68: 1.6. Це розширення використовують не часто, його підтримки у \fBxz\fP не jpayne@68: передбачено (програма повідомлятиме про пошкоджені вхідні дані). jpayne@68: .TP jpayne@68: \fBraw\fP jpayne@68: Стиснути або розпакувати потік необроблених даних (лез заголовків). Цей jpayne@68: параметр призначено лише для досвідчених користувачів. Для розпаковування jpayne@68: необроблених потоків даних слід користуватися параметром \fB\-\-format=raw\fP і jpayne@68: явно вказати ланцюжок фільтрування, який за звичайних умов мало б бути jpayne@68: збережено у заголовках контейнера. jpayne@68: .RE jpayne@68: .TP jpayne@68: \fB\-C\fP \fIперевірка\fP, \fB\-\-check=\fP\fIперевірка\fP jpayne@68: Вказати тип перевірки цілісності. Контрольну суму буде обчислено на основі jpayne@68: нестиснених даних і збережено у файлі \fB.xz\fP. Цей параметр працюватиме, лише jpayne@68: якщо дані стиснено до файла у форматі \fB.xz\fP; для формату файлів \fB.lzma\fP jpayne@68: підтримки перевірки цілісності не передбачено. Перевірку контрольної суми jpayne@68: (якщо така є) буде виконано під час розпаковування файла \fB.xz\fP. jpayne@68: .IP "" jpayne@68: Підтримувані типи \fIперевірок\fP: jpayne@68: .RS jpayne@68: .TP jpayne@68: \fBnone\fP jpayne@68: Не обчислювати контрольну суму взагалі. Зазвичай, не варто цього робити. Цим jpayne@68: варіантом слід скористатися, якщо цілісність даних буде перевірено в інший jpayne@68: спосіб. jpayne@68: .TP jpayne@68: \fBcrc32\fP jpayne@68: Обчислити CRC32 за допомогою полінома з IEEE\-802.3 (Ethernet). jpayne@68: .TP jpayne@68: \fBcrc64\fP jpayne@68: Обчислити CRC64 за допомогою полінома з ECMA\-182. Це типовий варіант, jpayne@68: оскільки він дещо кращий за CRC32 при виявленні пошкоджених файлів, а jpayne@68: різниця у швидкості є незрачною. jpayne@68: .TP jpayne@68: \fBsha256\fP jpayne@68: Обчислити SHA\-256. Цей варіант дещо повільніший за CRC32 і CRC64. jpayne@68: .RE jpayne@68: .IP "" jpayne@68: Цілісність заголовків \fB.xz\fP завжди перевіряють за допомогою CRC32. Таку jpayne@68: перевірку не можна змінити або скасувати. jpayne@68: .TP jpayne@68: \fB\-\-ignore\-check\fP jpayne@68: Не перевіряти цілісність стиснених даних при розпаковуванні. Значення CRC32 jpayne@68: у заголовках \fB.xz\fP буде у звичайний спосіб перевірено попри цей параметр. jpayne@68: .IP "" jpayne@68: \fBНе користуйтеся цим параметром, якщо ви не усвідомлюєте наслідків ваших дій.\fP Можливі причини скористатися цим параметром: jpayne@68: .RS jpayne@68: .IP \(bu 3 jpayne@68: Спроба отримання даних з пошкодженого файла .xz. jpayne@68: .IP \(bu 3 jpayne@68: Пришвидшення розпакування. Це, здебільшого, стосується SHA\-256 або файлів із jpayne@68: надзвичайно високим рівнем пакування. Не рекомендуємо користуватися цим jpayne@68: параметром з цією метою, якщо цілісність файлів не буде перевірено у якийсь jpayne@68: інший спосіб. jpayne@68: .RE jpayne@68: .TP jpayne@68: \fB\-0\fP ... \fB\-9\fP jpayne@68: Вибрати рівень стискання. Типовим є \fB\-6\fP. Якщо буде вказано декілька рівнів jpayne@68: стискання, програма використає останній вказаний. Якщо вже було вказано jpayne@68: нетиповий ланцюжок фільтрів, встановлення рівня стискання призведе до jpayne@68: нехтування цим нетиповим ланцюжком фільтрів. jpayne@68: .IP "" jpayne@68: Різниця між рівнями є суттєвішою, ніж у \fBgzip\fP(1) і \fBbzip2\fP(1). Вибрані jpayne@68: параметри стискання визначають вимоги до пам'яті під час розпаковування, jpayne@68: отже використання надто високого рівня стискання може призвести до проблем jpayne@68: під час розпаковування файла на застарілих комп'ютерах із невеликим обсягом jpayne@68: оперативної пам'яті. Зокрема, \fBне варто використовувати \-9 для усього\fP, як jpayne@68: це часто буває для \fBgzip\fP(1) і \fBbzip2\fP(1). jpayne@68: .RS jpayne@68: .TP jpayne@68: \fB\-0\fP ... \fB\-3\fP jpayne@68: Це дещо швидші набори налаштувань. \fB\-0\fP іноді є швидшим за \fBgzip \-9\fP, jpayne@68: забезпечуючи набагато більший коефіцієнт стискання. Вищі рівні часто мають jpayne@68: швидкість, яку можна порівняти з \fBbzip2\fP(1) із подібним або кращим jpayne@68: коефіцієнтом стискання, хоча результати значно залежать від типу даних, які jpayne@68: стискають. jpayne@68: .TP jpayne@68: \fB\-4\fP ... \fB\-6\fP jpayne@68: Стискання від доброго до дуже доброго рівня із одночасним підтриманням jpayne@68: помірного рівня споживання пам'яті засобом розпаковування, навіть для jpayne@68: застарілих системи. Типовим є значення \fB\-6\fP, яке є добрим варіантом для jpayne@68: поширення файлів, які мають бути придатними до розпаковування навіть у jpayne@68: системах із лише 16\ МіБ оперативної пам'яті. (Також можна розглянути jpayne@68: варіанти \fB\-5e\fP і \fB\-6e\fP. Див. \fB\-\-extreme\fP.) jpayne@68: .TP jpayne@68: \fB\-7 ... \-9\fP jpayne@68: Ці варіанти подібні до \fB\-6\fP, але із вищими вимогами щодо пам'яті для jpayne@68: стискання і розпаковування. Можуть бути корисними лише для стискання файлів jpayne@68: з розміром, що перевищує 8\ МіБ, 16\ МіБ та 32\ МіБ, відповідно. jpayne@68: .RE jpayne@68: .IP "" jpayne@68: На однаковому обладнанні швидкість розпакування є приблизно сталою кількістю jpayne@68: байтів стиснених даних за секунду. Іншими словами, чим кращим є стискання, jpayne@68: тим швидшим буде, зазвичай, розпаковування. Це також означає, що об'єм jpayne@68: розпакованих виведених даних, які видає програма за секунду, може коливатися jpayne@68: у широкому діапазоні. jpayne@68: .IP "" jpayne@68: У наведеній нижче таблиці підсумовано можливості шаблонів: jpayne@68: .RS jpayne@68: .RS jpayne@68: .PP jpayne@68: .TS jpayne@68: tab(;); jpayne@68: c c c c c jpayne@68: n n n n n. jpayne@68: Шаблон;DictSize;CompCPU;CompMem;DecMem jpayne@68: \-0;256 КіБ;0;3 МіБ;1 МіБ jpayne@68: \-1;1 МіБ;1;9 МіБ;2 МіБ jpayne@68: \-2;2 МіБ;2;17 МіБ;3 МіБ jpayne@68: \-3;4 МіБ;3;32 МіБ;5 МіБ jpayne@68: \-4;4 МіБ;4;48 МіБ;5 МіБ jpayne@68: \-5;8 МіБ;5;94 МіБ;9 МіБ jpayne@68: \-6;8 МіБ;6;94 МіБ;9 МіБ jpayne@68: \-7;16 МіБ;6;186 МіБ;17 МіБ jpayne@68: \-8;32 МіБ;6;370 МіБ;33 МіБ jpayne@68: \-9;64 МіБ;6;674 МіБ;65 МіБ jpayne@68: .TE jpayne@68: .RE jpayne@68: .RE jpayne@68: .IP "" jpayne@68: Описи стовпчиків: jpayne@68: .RS jpayne@68: .IP \(bu 3 jpayne@68: DictSize є розміром словника LZMA2. Використання словника, розмір якого jpayne@68: перевищує розмір нестисненого файла, — проста витрата пам'яті. Ось чому не jpayne@68: варто використовувати шаблони \fB\-7\fP ... \fB\-9\fP, якщо у них немає реальної jpayne@68: потреби. Для \fB\-6\fP та нижчих рівнів об'єм витраченої пам'яті, зазвичай, jpayne@68: такий низький, що цей фактор ні на що не впливає. jpayne@68: .IP \(bu 3 jpayne@68: CompCPU є спрощеним представленням параметрів LZMA2, які впливають на jpayne@68: швидкість стискання. Розмір словника також впливає на швидкість, тому, хоча jpayne@68: значення CompCPU є однаковим для рівнів \fB\-6\fP ... \fB\-9\fP, обробка на вищих jpayne@68: рівнях все одно є трошки повільнішою. Що отримати повільніше і, ймовірно, jpayne@68: краще стискання, див. \fB\-\-extreme\fP. jpayne@68: .IP \(bu 3 jpayne@68: CompMem містить вимоги до пам'яті засобу стискання у однопотоковому jpayne@68: режимі. Значення можуть бути дещо різними для різних версій \fBxz\fP. jpayne@68: .IP \(bu 3 jpayne@68: У DecMem містяться вимоги до пам'яті при розпаковуванні. Тобто параметри jpayne@68: засобу стискання визначають вимоги до пам'яті при розпаковуванні. Точний jpayne@68: об'єм пам'яті, яка потрібна для розпаковування, дещо перевищує розмір jpayne@68: словника LZMA2, але значення у таблиці було округлено до наступного цілого jpayne@68: значення МіБ. jpayne@68: .RE jpayne@68: .IP "" jpayne@68: Вимоги до пам'яті у багатопотоковому режимі є значно вищими, ніж у jpayne@68: однопотоковому. З типовим значенням \fB\-\-block\-size\fP для кожного потоку треба jpayne@68: 3*3*DictSize плюс CompMem або DecMem. Наприклад, для чотирьох потоків з jpayne@68: шаблоном \fB\-6\fP потрібно 660\(en670\ МіБ пам'яті. jpayne@68: .TP jpayne@68: \fB\-e\fP, \fB\-\-extreme\fP jpayne@68: Використати повільніший варіант вибраного рівня стискання (\fB\-0\fP ... \fB\-9\fP) jpayne@68: у сподіванні отримати трохи кращий коефіцієнт стискання, але, якщо не jpayne@68: поталанить, можна його і погіршити. Не впливає на використання пам'яті при jpayne@68: розпаковуванні, але використання пам'яті при стисканні дещо збільшиться на jpayne@68: рівнях \fB\-0\fP ... \fB\-3\fP. jpayne@68: .IP "" jpayne@68: Оскільки існує два набори налаштувань із розмірами словників 4\ МіБ та 8\ МіБ, у наборах \fB\-3e\fP і \fB\-5e\fP використано трошки швидші параметри (нижче jpayne@68: CompCPU), ніж у наборах \fB\-4e\fP і \fB\-6e\fP, відповідно. Тому двох однакових jpayne@68: наборів у списку немає. jpayne@68: .RS jpayne@68: .RS jpayne@68: .PP jpayne@68: .TS jpayne@68: tab(;); jpayne@68: c c c c c jpayne@68: n n n n n. jpayne@68: Шаблон;DictSize;CompCPU;CompMem;DecMem jpayne@68: \-0e;256 КіБ;8;4 МіБ;1 МіБ jpayne@68: \-1e;1 МіБ;8;13 МіБ;2 МіБ jpayne@68: \-2e;2 МіБ;8;25 МіБ;3 МіБ jpayne@68: \-3e;4 МіБ;7;48 МіБ;5 МіБ jpayne@68: \-4e;4 МіБ;8;48 МіБ;5 МіБ jpayne@68: \-5e;8 МіБ;7;94 МіБ;9 МіБ jpayne@68: \-6e;8 МіБ;8;94 МіБ;9 МіБ jpayne@68: \-7e;16 МіБ;8;186 МіБ;17 МіБ jpayne@68: \-8e;32 МіБ;8;370 МіБ;33 МіБ jpayne@68: \-9e;64 МіБ;8;674 МіБ;65 МіБ jpayne@68: .TE jpayne@68: .RE jpayne@68: .RE jpayne@68: .IP "" jpayne@68: Наприклад, передбачено загалом чотири набори налаштувань із використанням jpayne@68: словника у 8\ МіБ, порядок яких від найшвидшого до найповільнішого є таким: jpayne@68: \fB\-5\fP, \fB\-6\fP, \fB\-5e\fP і \fB\-6e\fP. jpayne@68: .TP jpayne@68: \fB\-\-fast\fP jpayne@68: .PD 0 jpayne@68: .TP jpayne@68: \fB\-\-best\fP jpayne@68: .PD jpayne@68: Це дещо оманливі альтернативні варіанти для \fB\-0\fP і \fB\-9\fP, jpayne@68: відповідно. Реалізовано лише для забезпечення зворотної сумісності із LZMA jpayne@68: Utils. Намагайтеся не користуватися цими варіантами параметрів. jpayne@68: .TP jpayne@68: \fB\-\-block\-size=\fP\fIрозмір\fP jpayne@68: При стисканні до формату \fB.xz\fP поділити вхідні дані на блоки у \fIрозмір\fP jpayne@68: байтів. Ці блоки буде стиснуто незалежно один від одного, що допоможе у jpayne@68: багатопотоковій обробці і зробить можливим обмежене розпакування для доступу jpayne@68: до будь\-яких даних. Цим параметром слід типово користуватися для jpayne@68: перевизначення типового розміру блоку у багатопотоковому режимі обробки, але jpayne@68: цим параметром можна також скористатися в однопотоковому режимі обробки. jpayne@68: .IP "" jpayne@68: У багатопотоковому режимі для кожного потоку буде отримано для буферів jpayne@68: вхідних і вихідних даних майже утричі більше за \fIрозмір\fP байтів. Типовий jpayne@68: \fIрозмір\fP утричі більший за розмір словника LZMA2 або дорівнює 1 МіБ, буде jpayne@68: вибрано більше значення. Типовим добрим значенням буде значення, яке у jpayne@68: 2\(en4 рази перевищує розмір словника LZMA2 або дорівнює принаймні 1 jpayne@68: МіБ. Використання значення \fIрозмір\fP, яке є меншим за розмір словника LZMA2, jpayne@68: має наслідком марну витрату оперативної пам'яті, оскільки його використання jpayne@68: призводить до того, що буфер словника LZMA2 ніколи не буде використано jpayne@68: повністю. У багатопотоковому режимі розміри блоків зберігатимуться у jpayne@68: заголовках блоків. Ці дані потрібні для багатопотокового розпаковування. jpayne@68: .IP "" jpayne@68: У однопотоковому режимі поділ на блоки типово не jpayne@68: виконуватиметься. Встановлення значення для цього параметра не впливатиме на jpayne@68: використання пам'яті. У заголовках блоків не зберігатимуться дані щодо jpayne@68: розміру, отже файли, які створено в однопотоковому режимі не будуть jpayne@68: ідентичними до файлів, які створено у багатопотоковому режимі. Те, що у jpayne@68: заголовках блоків не зберігатимуться дані щодо розміру також означає, що jpayne@68: \fBxz\fP не зможе розпаковувати такі файли у багатопотоковому режимі. jpayne@68: .TP jpayne@68: \fB\-\-block\-list=\fP\fIзаписи\fP jpayne@68: При стисканні у форматі \fB.xz\fP починати новий блок із необов'язковим jpayne@68: ланцюжком фільтрів після вказаної кількості інтервалів нестиснених даних. jpayne@68: .IP "" jpayne@68: \fIзаписи\fP є списком відокремлених комами значень. Кожен запис складається з jpayne@68: необов'язкового номера ланцюжка фільтрів від 0 до 9, після якого йде jpayne@68: двокрапка (\fB:\fP) і необхідний розмір нестиснутих даних. Пропущення запису jpayne@68: (дві або більше послідовних ком) є скороченим варіантом визначення jpayne@68: використання розміру та фільтрів попереднього запису. jpayne@68: .IP "" jpayne@68: Якщо файл вхідних даних є більшим за розміром за суму розмірів \fIзаписів\fP, jpayne@68: останнє значення у \fIрозмірах\fP буде повторено до кінця файла. Особливе jpayne@68: значення \fB0\fP може бути використано як останній розмір, щоб позначити, що jpayne@68: решту файла має бути закодовано як єдиний блок. jpayne@68: .IP "" jpayne@68: Альтернативний ланцюжок фільтрів для кожного блоку можна вказати в поєднанні jpayne@68: з параметрами \fB\-\-filters1=\fP\fIфільтри\fP \&...\& \fB\-\-filters9=\fP\fIфільтри\fP. Ці jpayne@68: параметри визначають ланцюжки фільтрів з ідентифікатором у діапазоні jpayne@68: 1\(en9. Ланцюжок фільтрів 0 можна використовувати для посилання на типовий jpayne@68: ланцюжок фільтрів — це те саме, що не вказувати ланцюжок jpayne@68: фільтрів. Ідентифікатор ланцюжка фільтрів можна використовувати перед jpayne@68: нестисненим розміром, після якого йде двокрапка (\fB:\fP). Наприклад, якщо jpayne@68: вказати \fB\-\-block\-list=1:2MiB,3:2MiB,2:4MiB,,2MiB,0:4MiB\fP, блоки будуть jpayne@68: створені так: jpayne@68: .RS jpayne@68: .IP \(bu 3 jpayne@68: Ланцюжок фільтрів задано \fB\-\-filters1\fP із вхідними даними у 2 МіБ jpayne@68: .IP \(bu 3 jpayne@68: Ланцюжок фільтрів задано \fB\-\-filters3\fP із вхідними даними у 2 МіБ jpayne@68: .IP \(bu 3 jpayne@68: Ланцюжок фільтрів задано \fB\-\-filters2\fP із вхідними даними у 4 МіБ jpayne@68: .IP \(bu 3 jpayne@68: Ланцюжок фільтрів задано \fB\-\-filters2\fP із вхідними даними у 4 МіБ jpayne@68: .IP \(bu 3 jpayne@68: Типовий ланцюжок даних і вхідні дані у 2 МіБ jpayne@68: .IP \(bu 3 jpayne@68: Типовий ланцюжок фільтрів та вхідні дані у 4 МіБ для кожного блоку до кінця jpayne@68: вхідних даних. jpayne@68: .RE jpayne@68: .IP "" jpayne@68: Якщо вказати розмір, який перевищує розмір блоку кодувальника (або типове jpayne@68: значення у режимі із потоками обробки, або значення, яке встановлено за jpayne@68: допомогою \fB\-\-block\-size=\fP\fIрозмір\fP), засіб кодування створить додаткові jpayne@68: блоки, зберігаючи межі, які вказано у \fIзаписах\fP. Наприклад, якщо вказати jpayne@68: \fB\-\-block\-size=10MiB\fP \fB\-\-block\-list=5MiB,10MiB,8MiB,12MiB,24MiB\fP, а файл jpayne@68: вхідних даних має розмір 80 МіБ, буде отримано такі 11 блоків: 5, 10, 8, 10, jpayne@68: 2, 10, 10, 4, 10, 10 і 1 МіБ. jpayne@68: .IP "" jpayne@68: У багатопотоковому режимі розмір блоків буде збережено у заголовках jpayne@68: блоків. Програма не зберігатиме ці дані у однопотоковому режимі, отже jpayne@68: закодований результат не буде ідентичним до отриманого у багатопотоковому jpayne@68: режимі. jpayne@68: .TP jpayne@68: \fB\-\-flush\-timeout=\fP\fIчас_очікування\fP jpayne@68: При стискання, якщо з моменту попереднього витирання мине понад jpayne@68: \fIчас_очікування\fP мілісекунд (додатне ціле значення) і читання додаткових jpayne@68: даних буде заблоковано, усі вхідні дані у черзі обробки буде витерто з jpayne@68: кодувальника і зроблено доступним у потоці вихідних даних. Це може бути jpayne@68: корисним, якщо \fBxz\fP використовують для стискання даних, які передають jpayne@68: потоком мережею. Невеликі значення аргументу \fIчас_очікування\fP зроблять дані jpayne@68: доступними на боці отримання із малою затримкою, а великі значення аргумент jpayne@68: \fIчас_очікування\fP уможливлять кращий коефіцієнт стискання. jpayne@68: .IP "" jpayne@68: Типово, цю можливість вимкнено. Якщо цей параметр вказано декілька разів, jpayne@68: буде використано лише останнє вказане значення. Особливим значенням jpayne@68: аргументу \fIчас_очікування\fP, рівним \fB0\fP, можна скористатися для вимикання jpayne@68: цієї можливості явним чином. jpayne@68: .IP "" jpayne@68: Ця можливість недоступна у системах, які не є системами POSIX. jpayne@68: .IP "" jpayne@68: .\" FIXME jpayne@68: \fBЦя можливість усе ще є експериментальною.\fP У поточній версії, \fBxz\fP не jpayne@68: може розпаковувати потік даних у режимі реального часу через те, у який jpayne@68: спосіб \fBxz\fP виконує буферизацію. jpayne@68: .TP jpayne@68: \fB\-\-memlimit\-compress=\fP\fIобмеження\fP jpayne@68: Встановити обмеження на використання пам'яті при стисканні. Якщо цей jpayne@68: параметр вказано декілька разів, враховано буде лише останнє вказане jpayne@68: значення. jpayne@68: .IP "" jpayne@68: Якщо параметри стискання перевищують \fIобмеження\fP, \fBxz\fP спробує скоригувати jpayne@68: параметри так, щоб обмеження не було перевищено, і покаже повідомлення про jpayne@68: те, що було виконано автоматичне коригування. Коригування буде виконано у jpayne@68: такому порядку: зменшення кількості потоків обробки, перемикання у jpayne@68: однопотоковий режим, якщо хоч в одному потоці багатопотокового режиму буде jpayne@68: перевищено \fIобмеження\fP, і нарешті, зменшення розміру словника LZMA2. jpayne@68: .IP "" jpayne@68: При стисканні з використанням \fB\-\-format=raw\fP, або якщо було вказано jpayne@68: \fB\-\-no\-adjust\fP, може бути зменшена лише кількість потоків обробки, оскільки jpayne@68: це може бути зроблено без впливу на стиснені виведені дані. jpayne@68: .IP "" jpayne@68: Якщо \fIобмеження\fP не може бути виконано за допомогою коригувань, які описано jpayne@68: вище, буде показано повідомлення про помилку, а \fBxz\fP завершить роботу зі jpayne@68: станом виходу 1. jpayne@68: .IP "" jpayne@68: Аргумент \fIобмеження\fP можна вказати у декілька способів: jpayne@68: .RS jpayne@68: .IP \(bu 3 jpayne@68: Значенням \fIобмеження\fP може бути додатне ціле значення у байтах. Можна jpayne@68: скористатися цілочисельним суфіксом, подібним до \fBMiB\fP. Приклад: jpayne@68: \fB\-\-memlimit\-compress=80MiB\fP jpayne@68: .IP \(bu 3 jpayne@68: Аргумент \fIобмеження\fP може бути задано у відсотках від загальної фізичної jpayne@68: пам'яті системи (RAM). Це може бути корисним особливо при встановленні jpayne@68: змінної середовища \fBXZ_DEFAULTS\fP у скрипті ініціалізації системи, який є jpayne@68: спільним для різних комп'ютерів. У такий спосіб можна вказати вищий рівень jpayne@68: обмеження для систем із більшим об'ємом пам'яті. Приклад: jpayne@68: \fB\-\-memlimit\-compress=70%\fP jpayne@68: .IP \(bu 3 jpayne@68: Аргументу \fIобмеження\fP може бути повернуто типове значення встановленням jpayne@68: значення \fB0\fP. У поточній версії це еквівалентно до встановлення значення jpayne@68: аргументу \fIобмеження\fP \fBmax\fP (без обмеження на використання пам'яті). jpayne@68: .RE jpayne@68: .IP "" jpayne@68: Для 32\-бітової версії \fBxz\fP передбачено особливий випадок: якщо \fIобмеження\fP jpayne@68: перевищуватиме \fB4020\ МіБ\fP, для \fIобмеження\fP буде встановлено значення jpayne@68: \fB4020\ MiB\fP. На MIPS32 замість цього буде використано \fB2000\ MiB\fP. (Це не jpayne@68: стосується значень \fB0\fP і \fBmax\fP. Подібної можливості для розпаковування не jpayne@68: існує.) Це може бути корисним, коли 32\-бітовий виконуваний файл має доступ jpayne@68: до простору адрес у 4\ ГіБ (2 GiB на MIPS32), хоча, сподіваємося, не jpayne@68: зашкодить і в інших випадках. jpayne@68: .IP "" jpayne@68: Див. також розділ \fBВикористання пам'яті\fP. jpayne@68: .TP jpayne@68: \fB\-\-memlimit\-decompress=\fP\fIобмеження\fP jpayne@68: Встановити обмеження пам'яті на розпаковування. це також вплине на режим jpayne@68: \fB\-\-list\fP. Якщо дія є неможливою без перевищення \fIобмеження\fP, \fBxz\fP покаже jpayne@68: повідомлення про помилку і розпаковування файла не jpayne@68: відбудеться. Див. \fB\-\-memlimit\-compress=\fP\fIобмеження\fP, щоб дізнатися більше jpayne@68: про те, як можна задати \fIобмеження\fP. jpayne@68: .TP jpayne@68: \fB\-\-memlimit\-mt\-decompress=\fP\fIобмеження\fP jpayne@68: Встановити обмеження використання пам'яті для багатопотокового jpayne@68: розпаковування. Це може вплинути лише на кількість потоків обробки; це jpayne@68: ніколи не призводитиме до відмови \fBxz\fP у розпаковуванні файла. Якщо jpayne@68: \fIобмеження є надто низьким\fP, щоб уможливити будь\-яку багатопотокову jpayne@68: обробку, \fIобмеження\fP буде проігноровано, і \fBxz\fP продовжить обробку в jpayne@68: однопотоковому режимі. Зауважте, що якщо використано також jpayne@68: \fB\-\-memlimit\-decompress\fP, цей параметр буде застосовано до обох режимів, jpayne@68: однопотокового та багатопотокового, а отже, задіяне \fIобмеження\fP для jpayne@68: багатопотокового режиму ніколи не перевищуватиме обмеження, яке встановлено jpayne@68: за допомогою \fB\-\-memlimit\-decompress\fP. jpayne@68: .IP "" jpayne@68: На відміну від інших параметрів обмеження використання пам'яті, jpayne@68: \fB\-\-memlimit\-mt\-decompress=\fP\fIобмеження\fP містить специфічне для системи jpayne@68: типове значення \fIобмеження\fP. Можна скористатися \fBxz \-\-info\-memory\fP для jpayne@68: перегляду поточного значення. jpayne@68: .IP "" jpayne@68: Цей параметр і його типове значення існують, оскільки без будь\-яких обмежень jpayne@68: засіб розпакування зі підтримкою потокової обробки міг би намагатися jpayne@68: отримати величезний об'єм пам'яті для деяких файлів вхідних даних. Якщо jpayne@68: типове \fIобмеження\fP є надто низьким для вашої системи, не вагайтеся і jpayne@68: збільшуйте \fIобмеження\fP, але ніколи не встановлюйте для нього значення, яке jpayne@68: є більшим за придатний до користування об'єм оперативної пам'яті, оскільки jpayne@68: за відповідних файлів вхідних даних \fBxz\fP спробує скористатися цим об'ємом jpayne@68: пам'яті, навіть із низькою кількістю потоків обробки. Вичерпання об'єму jpayne@68: оперативної пам'яті або використання резервної пам'яті на диску не покращить jpayne@68: швидкодію системи під час розпаковування. jpayne@68: .IP "" jpayne@68: Див. \fB\-\-memlimit\-compress=\fP\fIобмеження\fP, щоб ознайомитися із можливими jpayne@68: способами визначення \fIобмеження\fP. Встановлення для \fIобмеження\fP значення jpayne@68: \fB0\fP відновлює типове специфічне для системи значення \fIобмеження\fP. jpayne@68: .TP jpayne@68: \fB\-M\fP \fIобмеження\fP, \fB\-\-memlimit=\fP\fIобмеження\fP, \fB\-\-memory=\fP\fIобмеження\fP jpayne@68: Є еквівалентом визначення \fB\-\-memlimit\-compress=\fP\fIобмеження\fP jpayne@68: \fB\-\-memlimit\-decompress=\fP\fIобмеження\fP jpayne@68: \fB\-\-memlimit\-mt\-decompress=\fP\fIобмеження\fP. jpayne@68: .TP jpayne@68: \fB\-\-no\-adjust\fP jpayne@68: Показати повідомлення про помилку і завершити роботу, якщо не вдасться jpayne@68: виконати умови щодо обмеження використання пам'яті без коригування jpayne@68: параметрів, які впливають на стиснених виведених даних. Тобто це забороняє jpayne@68: \fBxz\fP перемикати кодувальник з багатопотокового режиму на однопотоковий jpayne@68: режим і зменшувати розмір словника LZMA2. Навіть якщо використано цей jpayne@68: параметр, кількість потоків може бути зменшено для виконання обмеження на jpayne@68: використання пам'яті, оскільки це не вплине на результати стискання. jpayne@68: .IP "" jpayne@68: Автоматичне коригування завжди буде вимкнено при створенні потоків jpayne@68: необроблених даних (\fB\-\-format=raw\fP). jpayne@68: .TP jpayne@68: \fB\-T\fP \fIпотоки\fP, \fB\-\-threads=\fP\fIпотоки\fP jpayne@68: Вказати кількість потоків обробки, якими слід скористатися. Встановлення для jpayne@68: аргументу \fIпотоки\fP особливого значення \fB0\fP наказує \fBxz\fP використати не jpayne@68: більше потоків обробки, ніж передбачено підтримку у процесорах jpayne@68: системи. Справжня кількість потоків може бути меншою за значення \fIпотоки\fP, jpayne@68: якщо файл вхідних даних не є достатньо великим для поділу на потоки обробки jpayne@68: при заданих параметрах або якщо використання додаткових потоків призведе до jpayne@68: перевищення обмеження на використання пам'яті. jpayne@68: .IP "" jpayne@68: Засоби стискання в однопотоковому та багатопотоковому режимі дають різні jpayne@68: результати. Однопотоковий засіб стискання дасть найменший розмір файла, але jpayne@68: лише результати роботи багатопотокового засобу стискання може бути jpayne@68: розпаковано з використанням декількох потоків. Встановлення для аргументу jpayne@68: \fIпотоки\fP значення \fB1\fP призведе до використання однопотокового jpayne@68: режиму. Встановлення для аргументу \fIпотоки\fP будь\-якого іншого значення, jpayne@68: включно з \fB0\fP, призведе до використання багатопотокового засобу стискання, jpayne@68: навіть якщо у системі передбачено підтримки лише одного апаратного потоку jpayne@68: обробки даних. (Версія \fBxz\fP 5.2.x у цьому випадку використовувала jpayne@68: однопотоковий режим.) jpayne@68: .IP "" jpayne@68: Щоб скористатися багатопотоковим режимом із лише одним потоком обробки, jpayne@68: встановіть для аргументу \fIпотоки\fP значення \fB+1\fP. Префікс \fB+\fP не впливає jpayne@68: на значення, окрім \fB1\fP. Обмеження на використання пам'яті можуть перемкнути jpayne@68: \fBxz\fP в однопотоковий режим, якщо не використано параметр jpayne@68: \fB\-\-no\-adjust\fP. Підтримку \fB+\fP prefix було додано у версії \fBxz\fP 5.4.0. jpayne@68: .IP "" jpayne@68: Якщо було вказано автоматичне визначення кількості потоків і не вказано jpayne@68: обмеження на використання пам'яті, буде використано специфічне для системи jpayne@68: типове м'яке обмеження для можливого обмеження кількості потоків обробки. Це jpayne@68: обмеження є м'яким у сенсі того, що його буде проігноровано, якщо кількість jpayne@68: потоків зрівняється з одиницею, а отже, м'яке обмеження ніколи не jpayne@68: запобігатиму у \fBxz\fP стисканню або розпаковуванню. Це типове м'яке обмеження jpayne@68: не перемкне \fBxz\fP з багатопотокового режиму на однопотоковий режим. Активні jpayne@68: обмеження можна переглянути за допомогою команди \fBxz \-\-info\-memory\fP. jpayne@68: .IP "" jpayne@68: У поточній версії єдиним способом поділу на потоки обробки є поділ вхідних jpayne@68: даних на блоки і стискання цих блоків незалежно один від одного. Типовий jpayne@68: розмір блоку залежить від рівня стискання. Його може бути перевизначено за jpayne@68: допомогою параметра \fB\-\-block\-size=\fP\fIрозмір\fP. jpayne@68: .IP "" jpayne@68: Розпакування з потоками обробки працює лише для файлів, які містять декілька jpayne@68: блоків із даними щодо розміру у заголовках блоків. Цю умову задовольняють jpayne@68: усі достатньо великі файли, які стиснено у багатопотоковому режимі, але не jpayne@68: задовольняють будь\-які файли, які було стиснуто у однопотоковому режимі, jpayne@68: навіть якщо було використано параметр \fB\-\-block\-size=\fP\fIрозмір\fP. jpayne@68: .IP "" jpayne@68: Типовим значенням для \fIпотоків\fP є \fB0\fP. У \fBxz\fP 5.4.x та старіших версіях jpayne@68: типовим значенням є \fB1\fP. jpayne@68: . jpayne@68: .SS "Нетипові ланцюжки фільтрів засобу стискання" jpayne@68: Нетиповий ланцюжок фільтрування уможливлює докладне визначення параметрів jpayne@68: стискання замість використання параметрів, які пов'язано із наперед jpayne@68: визначеними рівнями стискання. Якщо вказано нетиповий ланцюжок фільтрів, jpayne@68: параметри рівнів стискання (\fB\-0\fP \&...\& \fB\-9\fP і \fB\-\-extreme\fP), які jpayne@68: передують їм у рядку команди, буде знехтувано. Якщо параметр рівня стискання jpayne@68: вказано після одного або декількох параметрів нетипового ланцюжка фільтрів, jpayne@68: буде використано рівень стискання, а попередніми параметрами ланцюжка jpayne@68: фільтрування буде знехтувано. jpayne@68: .PP jpayne@68: Ланцюжок фільтрів можна порівняти із конвеєром у командному рядку. При jpayne@68: стисканні нестиснені вхідні дані потрапляють до першого фільтра, виведені jpayne@68: ним дані йдуть до наступного фільтра (якщо такий є). Виведені останнім jpayne@68: фільтром дані буде записано до стисненого файла. Максимальна кількість jpayne@68: фільтрів у ланцюжку дорівнює чотирьом, але у типовому ланцюжку фільтрів jpayne@68: використовують один або два фільтри. jpayne@68: .PP jpayne@68: У багатьох фільтрів є обмеження на місце перебування у ланцюжку фільтрів: jpayne@68: деякі фільтри можуть працювати, лише якщо вони є останніми у ланцюжку, jpayne@68: деякі, лише якщо не останніми, а деякі працюють у будь\-якій позиції jpayne@68: ланцюжка. Залежно від фільтра, це обмеження є наслідком структури фільтра jpayne@68: або існує для запобігання проблем із захистом. jpayne@68: .PP jpayne@68: Нетиповий ланцюжок фільтрів можна вказати двома різними способами. Параметри jpayne@68: \fB\-\-filters=\fP\fIфільтри\fP і \fB\-\-filters1=\fP\fIфільтри\fP \&...\& jpayne@68: \fB\-\-filters9=\fP\fIфільтри\fP надають змогу вказати цілий ланцюжок фільтрів в jpayne@68: одному варіанті з використанням синтаксису рядків фільтрів liblzma. Крім jpayne@68: того, ланцюжок фільтрів можна вказати за допомогою одного або кількох jpayne@68: окремих параметрів фільтрування у тому порядку, в якому їх слід використати jpayne@68: у ланцюжку фільтрів. Тобто порядок окремих параметрів фільтра є важливим! jpayne@68: Під час декодування необроблених потоків (\fB\-\-format=raw\fP) ланцюжок фільтрів jpayne@68: має бути вказано у тому ж порядку, що й під час стиснення. Будь\-який окремий jpayne@68: фільтр або параметри попереднього налаштування, вказані перед параметром jpayne@68: повного ланцюжка (\fB\-\-filters=\fP\fIфільтри\fP), буде відкинуто. Окремі фільтри, jpayne@68: указані після параметра повного ланцюжка, відновлять типовий ланцюжок jpayne@68: фільтрів. jpayne@68: .PP jpayne@68: І параметр повного і параметр окремого фільтра приймають специфічні для jpayne@68: фільтрів \fIпараметри\fP у форматі списку значень, які відокремлено jpayne@68: комами. Зайві коми у \fIпараметрах\fP буде проігноровано. У кожного параметра є jpayne@68: типове значення, отже, вам слід вказати ті параметри, значення яких ви jpayne@68: хочете змінити. jpayne@68: .PP jpayne@68: Щоб переглянути увесь ланцюжок фільтрів та \fIпараметри\fP, скористайтеся jpayne@68: командою \fBxz \-vv\fP (тобто, скористайтеся \fB\-\-verbose\fP двічі). Це працює jpayne@68: також для перегляду параметрів ланцюжка фільтрів, який використано у рівнях jpayne@68: стискання. jpayne@68: .TP jpayne@68: \fB\-\-filters=\fP\fIфільтри\fP jpayne@68: Визначає повний ланцюжок фільтрів або шаблон у форматі одного jpayne@68: параметра. Кожен фільтр можна відокремити від інших пробілами або двома jpayne@68: дефісами (\fB\-\-\fP). Можливо, \fIфільтри\fP доведеться взяти в лапки в командному jpayne@68: рядку оболонки, щоб їх було оброблено як один параметр. Для позначення jpayne@68: \fIпараметрів\fP скористайтеся \fB:\fP або \fB=\fP. До шаблона можна додати префікс jpayne@68: \fB\-\fP і завершити без прапорців або декількома прапорцями. Єдиним jpayne@68: підтримуваним прапорцем є \fBe\fP для застосування тих самих параметрів, що й jpayne@68: \fB\-\-extreme\fP. jpayne@68: .TP jpayne@68: \fB\-\-filters1\fP=\fIфільтри\fP ... \fB\-\-filters9\fP=\fIфільтри\fP jpayne@68: Вказати до дев'яти додаткових ланцюжків фільтрів, якими можна скористатися jpayne@68: за допомогою \fB\-\-block\-list\fP. jpayne@68: .IP "" jpayne@68: Наприклад, якщо виконується стискання архіву із виконуваними файлами, за jpayne@68: якими йдуть текстові файли, для виконуваної частини може бути використано jpayne@68: ланцюжок фільтрів з фільтром BCJ, а для текстової частини — лише фільтр jpayne@68: LZMA2. jpayne@68: .TP jpayne@68: \fB\-\-filters\-help\fP jpayne@68: Вивести довідкове повідомлення з описом того, як вказати шаблони та нетипові jpayne@68: ланцюжки фільтрів у параметри \fB\-\-filters\fP і \fB\-\-filters1=\fP\fIфільтри\fP jpayne@68: \&...\& \fB\-\-filters9=\fP\fIфільтри\fP і завершити роботу із кодом успіху. jpayne@68: .TP jpayne@68: \fB\-\-lzma1\fP[\fB=\fP\fIпараметри\fP] jpayne@68: .PD 0 jpayne@68: .TP jpayne@68: \fB\-\-lzma2\fP[\fB=\fP\fIпараметри\fP] jpayne@68: .PD jpayne@68: Додати фільтр LZMA1 або LZMA2 до ланцюжка фільтрів. Ці фільтри може бути jpayne@68: використано лише як останній фільтр у ланцюжку. jpayne@68: .IP "" jpayne@68: LZMA1 є застарілим фільтром, підтримку якого збережено майже лише через jpayne@68: використання формату файлів \fB.lzma\fP, у яких передбачено підтримку лише jpayne@68: LZMA1. LZMA2 є оновленою версією LZMA1, у якій виправлено деякі практичні jpayne@68: вади LZMA1. У форматі \fB.xz\fP використано LZMA2 і взагалі не передбачено jpayne@68: підтримки LZMA1. Швидкість стискання та коефіцієнт стискання для LZMA1 і jpayne@68: LZMA2 є практично однаковими. jpayne@68: .IP "" jpayne@68: LZMA1 і LZMA2 спільно використовують той самий набір \fIпараметрів\fP: jpayne@68: .RS jpayne@68: .TP jpayne@68: \fBpreset=\fP\fIшаблон\fP jpayne@68: Скинути усі \fIпараметри\fP LZMA1 або LZMA2 до параметрів \fIшаблона\fP. Аргумент jpayne@68: \fIшаблон\fP складається з цілого числа, після якого може бути однолітерний jpayne@68: модифікатор шаблона. Ціле число може належати лише діапазону від \fB0\fP до jpayne@68: \fB9\fP, що відповідає параметрам командного рядка \fB\-0\fP \&...\& \fB\-9\fP. Єдиним jpayne@68: підтримуваним модифікатором у поточній версії є \fBe\fP, щоб відповідає jpayne@68: параметру \fB\-\-extreme\fP. Якщо аргумент \fBшаблон\fP не вказано, типові значення jpayne@68: \fIпараметрів\fP LZMA1 або LZMA2 буде взято із шаблона \fB6\fP. jpayne@68: .TP jpayne@68: \fBdict=\fP\fIрозмір\fP jpayne@68: Параметр \fIрозміру\fP словника (буфера журналу) визначає, скільки байтів jpayne@68: нещодавно оброблених нестиснених даних слід зберігати у пам'яті. Алгоритм jpayne@68: намагається знайти повторювані послідовності байтів (відповідники) у jpayne@68: нестиснених даних і замінити їх на посилання на дані зі словника. Чим jpayne@68: більшим є словник, тим вищою є ймовірність відшукати відповідник. Отже, jpayne@68: збільшення \fIрозміру\fP словника, зазвичай, покращує коефіцієнт стискання, але jpayne@68: використання словника, розмір якого перевищу є розмір нестисненого файла є jpayne@68: простоюю витратою пам'яті. jpayne@68: .IP "" jpayne@68: \fIРозмір\fP типового словника складає від 64\ КіБ до 64\ МіБ. Мінімальним є jpayne@68: розмір 4\ КіБ. Максимальним розміром для стискання у поточній версії 1.5\ ГіБ (1536\ МіБ). У засобі розпаковування вже передбачено підтримку словників jpayne@68: на один байт менших за 4\ ГіБ, що є максимальним значенням для форматів jpayne@68: потоків даних LZMA1 і LZMA2. jpayne@68: .IP "" jpayne@68: Аргумент \fIрозміру\fP словника і засіб пошуку відповідників (\fImf\fP) разом jpayne@68: визначають параметри використання пам'яті для кодувальника LZMA1 або jpayne@68: LZMA2. Для розпаковування потрібен такий самий (або більший) \fIрозмір\fP jpayne@68: словника, що і для стискання, отже, використання пам'яті для засобу jpayne@68: розпаковування буде визначено за розміром словника, який було використано jpayne@68: для стискання. У заголовках \fB.xz\fP зберігається \fIрозмір\fP словника або як jpayne@68: 2^\fIn\fP, або як 2^\fIn\fP + 2^(\fIn\fP\-1), отже, ці \fIрозміри\fP є дещо пріоритетними jpayne@68: для стискання. Інші \fIрозміри\fP буде отримано округленням при зберіганні у jpayne@68: заголовках \fB.xz\fP. jpayne@68: .TP jpayne@68: \fBlc=\fP\fIlc\fP jpayne@68: Визначає кількість буквальних контекстних бітів. Мінімальною кількістю є 0, jpayne@68: а максимальною — 4. Типовою кількістю є 3. Крім того, сума \fIlc\fP і \fIlp\fP має jpayne@68: не перевищувати 4. jpayne@68: .IP "" jpayne@68: Усі байти, які не може бути закодовано як відповідності, буде закодовано як jpayne@68: літерали. Тобто літерали є просто 8\-бітовими байтами, які буде закодовано по jpayne@68: одному за раз. jpayne@68: .IP "" jpayne@68: При кодуванні літералів роблять припущення, що найвищі біти \fIlc\fP jpayne@68: попереднього нестисненого байта корелюють із наступним байтом. Наприклад, у jpayne@68: типовому тексті англійською за літерою у верхньому регістрі йде літера у jpayne@68: нижньому регістрі, а за літерою у нижньому регістрі, зазвичай, йде інша jpayne@68: літера у нижньому регістрі. У наборі символів US\-ASCII найвищими трьома jpayne@68: бітами є 010 для літер верхнього регістру і 011 для літер нижнього jpayne@68: регістру. Якщо \fIlc\fP дорівнює принаймні 3, при кодуванні літералів можна jpayne@68: отримати перевагу встановлення цієї властивості для нестиснених даних. jpayne@68: .IP "" jpayne@68: Зазвичай, типового значення (3) достатньо. Якщо вам потрібне максимальне jpayne@68: стискання, спробуйте \fBlc=4\fP. Іноді це трохи допомагає, а іноді, робить jpayne@68: стискання гіршим. Якщо стискання стане гіршим, спробуйте також \fBlc=2\fP. jpayne@68: .TP jpayne@68: \fBlp=\fP\fIlp\fP jpayne@68: Визначає кількість буквальних позиційних бітів. Мінімальною кількістю є 0, а jpayne@68: максимальною — 4. Типовою кількістю є 0. jpayne@68: .IP "" jpayne@68: \fILp\fP впливає на те, яке вирівнювання у нестиснених даних слід припускати jpayne@68: при кодуванні літералів. Див. \fIpb\fP нижче, щоб дізнатися більше про jpayne@68: вирівнювання. jpayne@68: .TP jpayne@68: \fBpb=\fP\fIpb\fP jpayne@68: Визначає кількість позиційних бітів. Мінімальною кількістю є 0, а jpayne@68: максимальною — 4. Типовою кількістю є 2. jpayne@68: .IP "" jpayne@68: \fIPb\fP впливає на те, який тип вирівнювання загалом припускатиметься для jpayne@68: нестиснених даних. Типовим є чотирибайтове вирівнювання (2^\fIpb\fP=2^2=4), jpayne@68: яке, зазвичай, є добрим варіантом, якщо немає кращих припущень. jpayne@68: .IP "" jpayne@68: Якщо вирівнювання є відомим, встановлення відповідним чином \fIpb\fP може трохи jpayne@68: зменшити розмір файла. Наприклад, у текстових файлах із однобайтовим jpayne@68: вирівнюванням (US\-ASCII, ISO\-8859\-*, UTF\-8), встановлення значення \fBpb=0\fP jpayne@68: може трохи поліпшити стискання. Для тексту UTF\-16 добрим варіантом є jpayne@68: \fBpb=1\fP. Якщо вирівнювання є непарним числом, наприклад 3 байти, найкращим jpayne@68: вибором, ймовірно, є \fBpb=0\fP. jpayne@68: .IP "" jpayne@68: Хоча прогнозоване вирівнювання можна скоригувати за допомогою \fIpb\fP і \fIlp\fP, jpayne@68: у LZMA1 і LZMA2 дещо пріоритетним є 16\-байтове вирівнювання. Це, ймовірно, jpayne@68: слід враховувати при компонуванні форматів файлів, які, ймовірно, часто jpayne@68: будуть стискатися з використанням LZMA1 або LZMA2. jpayne@68: .TP jpayne@68: \fBmf=\fP\fImf\fP jpayne@68: Засіб пошуку відповідників має значний вплив на швидкість, використання jpayne@68: пам'яті та коефіцієнт стискання кодувальника. Зазвичай, засоби пошуку jpayne@68: відповідників на основі ланцюжка хешів є швидшими за засоби пошуку jpayne@68: відповідників на основі двійкового дерева. Типовий засіб залежить від jpayne@68: \fIшаблона\fP: для 0 використовують \fBhc3\fP, для 1\(en3 — \fBhc4\fP, а для решти jpayne@68: використовують \fBbt4\fP. jpayne@68: .IP "" jpayne@68: Передбачено підтримку вказаних нижче засобів пошуку відповідників. Наведені jpayne@68: нижче формули обчислення використання пам'яті є грубими наближеннями, які є jpayne@68: найближчими до реальних значень, якщо значенням \fIсловник\fP є степінь двійки. jpayne@68: .RS jpayne@68: .TP jpayne@68: \fBhc3\fP jpayne@68: Ланцюжок хешів із 2\- та 3\-байтовим хешуванням jpayne@68: .br jpayne@68: Мінімальне значення \fIпріоритетності\fP: 3 jpayne@68: .br jpayne@68: Використання пам'яті: jpayne@68: .br jpayne@68: \fIdict\fP * 7.5 (якщо \fIdict\fP <= 16 МіБ); jpayne@68: .br jpayne@68: \fIdict\fP * 5.5 + 64 МіБ (якщо \fIdict\fP > 16 МіБ) jpayne@68: .TP jpayne@68: \fBhc4\fP jpayne@68: Ланцюжок хешів із 2\-, 3\- та 4\-байтовим хешуванням jpayne@68: .br jpayne@68: Мінімальне значення \fIпріоритетності\fP: 4 jpayne@68: .br jpayne@68: Використання пам'яті: jpayne@68: .br jpayne@68: \fIdict\fP * 7.5 (якщо \fIdict\fP <= 32 МіБ); jpayne@68: .br jpayne@68: \fIdict\fP * 6.5 (якщо \fIdict\fP > 32 МіБ) jpayne@68: .TP jpayne@68: \fBbt2\fP jpayne@68: Двійкове дерево із 2\-байтовим хешуванням jpayne@68: .br jpayne@68: Мінімальне значення \fIпріоритетності\fP: 2 jpayne@68: .br jpayne@68: Використання пам'яті: \fIdict\fP * 9.5 jpayne@68: .TP jpayne@68: \fBbt3\fP jpayne@68: Двійкове дерево із 2\- і 3\-байтовим хешуванням jpayne@68: .br jpayne@68: Мінімальне значення \fIпріоритетності\fP: 3 jpayne@68: .br jpayne@68: Використання пам'яті: jpayne@68: .br jpayne@68: \fIdict\fP * 11.5 (якщо \fIdict\fP <= 16 МіБ); jpayne@68: .br jpayne@68: \fIdict\fP * 9.5 + 64 МіБ (якщо \fIdict\fP > 16 МіБ) jpayne@68: .TP jpayne@68: \fBbt4\fP jpayne@68: Двійкове дерево із 2\-, 3\- і 4\-байтовим хешуванням jpayne@68: .br jpayne@68: Мінімальне значення \fIпріоритетності\fP: 4 jpayne@68: .br jpayne@68: Використання пам'яті: jpayne@68: .br jpayne@68: \fIdict\fP * 11.5 (якщо \fIdict\fP <= 32 МіБ); jpayne@68: .br jpayne@68: \fIdict\fP * 10.5 (якщо \fIdict\fP > 32 МіБ) jpayne@68: .RE jpayne@68: .TP jpayne@68: \fBmode=\fP\fIрежим\fP jpayne@68: Параметр \fIрежиму\fP стискання визначає спосіб, який буде використано для jpayne@68: аналізу даних, які створено засобом пошуку відповідників. Підтримуваними jpayne@68: \fIрежимами\fP є \fBfast\fP (швидкий) і \fBnormal\fP (нормальний). Типовим є режим jpayne@68: \fBfast\fP для \fIшаблонів\fP 0\(en3 і режим \fBnormal\fP для \fIшаблонів\fP 4\(en9. jpayne@68: .IP "" jpayne@68: Зазвичай, із засобом пошуку відповідників на основі ланцюжка хешів jpayne@68: використовують \fBfast\fP, а із засобом пошуку відповідників на основі jpayne@68: двійкового дерева використовують \fBnormal\fP. Так само налаштовано і jpayne@68: \fIшаблони\fP. jpayne@68: .TP jpayne@68: \fBnice=\fP\fIпріоритетність\fP jpayne@68: Вказати, яка довжина є пріоритетною для відповідності. Щойно буде виявлено jpayne@68: відповідність у принаймні \fIпріоритетність\fP байтів, алгоритм зупинятиме jpayne@68: пошук можливих кращих відповідників. jpayne@68: .IP "" jpayne@68: \fIПріоритетністю\fP може бути число до 2\(en273 байтів. Вищі значення дають jpayne@68: кращий коефіцієнт стискання за рахунок швидкості. Типове значення залежить jpayne@68: від \fIшаблона\fP. jpayne@68: .TP jpayne@68: \fBdepth=\fP\fIглибина\fP jpayne@68: Вказати максимальну глибину пошуку у засобі пошуку відповідності. Типовим є jpayne@68: особливе значення 0, яке наказує засобу стискання визначити прийнятну jpayne@68: \fIглибину\fP на основі \fImf\fP і \fIпріоритетності\fP. jpayne@68: .IP "" jpayne@68: Прийнятним значенням \fIглибини\fP для ланцюжків хешів є 4\(en100 і 16\(en1000 jpayne@68: для двійкових дерев. Використання дуже високих значень для \fIглибини\fP може jpayne@68: зробити кодувальник дуже повільним для деяких файлів. Не встановлюйте jpayne@68: значення \fIглибини\fP, що перевищує 1000, якщо ви не готові перервати jpayne@68: стискання, якщо воно триватиме надто довго. jpayne@68: .RE jpayne@68: .IP "" jpayne@68: При декодуванні необроблених потоків даних (\fB\-\-format=raw\fP), LZMA2 потребує jpayne@68: лише \fIрозміру\fP словника. LZMA1 потребує також \fIlc\fP, \fIlp\fP і \fIpb\fP. jpayne@68: .TP jpayne@68: \fB\-\-x86\fP[\fB=\fP\fIпараметри\fP] jpayne@68: .PD 0 jpayne@68: .TP jpayne@68: \fB\-\-arm\fP[\fB=\fP\fIпараметри\fP] jpayne@68: .TP jpayne@68: \fB\-\-armthumb\fP[\fB=\fP\fIпараметри\fP] jpayne@68: .TP jpayne@68: \fB\-\-arm64\fP[\fB=\fP\fIпараметри\fP] jpayne@68: .TP jpayne@68: \fB\-\-powerpc\fP[\fB=\fP\fIпараметри\fP] jpayne@68: .TP jpayne@68: \fB\-\-ia64\fP[\fB=\fP\fIпараметри\fP] jpayne@68: .TP jpayne@68: \fB\-\-sparc\fP[\fB=\fP\fIпараметри\fP] jpayne@68: .TP jpayne@68: \fB\-\-riscv\fP[\fB=\fP\fIпараметри\fP] jpayne@68: .PD jpayne@68: Додати фільтр гілок/викликів/переходів (branch/call/jump або BCJ) до jpayne@68: ланцюжка фільтрів. Цими фільтрами можна скористатися, лише якщо вони не є jpayne@68: останнім фільтром у ланцюжку фільтрів. jpayne@68: .IP "" jpayne@68: Фільтр BCJ перетворює відносні адреси у машинному коді на їхні абсолютні jpayne@68: відповідники. Це не змінює розміру даних, але підвищує резервування, що може jpayne@68: допомогти LZMA2 створити файл \fB.xz\fP на 0\(en15\ % менше. Фільтри BCJ завжди jpayne@68: є придатними до обернення, тому використання фільтра BCJ до помилкового типу jpayne@68: даних не спричинятиме втрати даних, хоча може дещо погіршити коефіцієнт jpayne@68: стискання. Фільтри BCJ є дуже швидкими і такими, що використовують незначний jpayne@68: об'єм пам'яті. jpayne@68: .IP "" jpayne@68: Ці фільтри BCJ мають відомі проблеми, які пов'язано із рівнем стискання: jpayne@68: .RS jpayne@68: .IP \(bu 3 jpayne@68: У деяких типах файлів, де зберігається виконуваний код, (наприклад, в jpayne@68: об'єктних файлах, статичних бібліотеках та модулях ядра Linux) адреси в jpayne@68: інструкціях заповнено значеннями заповнювача. Ці фільтри BCJ виконуватимуть jpayne@68: перетворення адрес, яке зробить стискання для цих файлів гіршим. jpayne@68: .IP \(bu 3 jpayne@68: Якщо фільтр BCJ застосовано до архіву, може так статися, що він погіршить jpayne@68: коефіцієнт стискання порівняно із варіантом без фільтра BCJ. Наприклад, якщо jpayne@68: є подібні або навіть однакові виконувані файли, фільтрування, ймовірно, jpayne@68: зробить ці файли менш подібними, а отже, зробить стискання гіршим. Вміст jpayne@68: файлів, які не є виконуваними, у тому самому архіві також може вплинути на jpayne@68: результат. На практиці, варто спробувати варіанти з фільтром BCJ і без jpayne@68: нього, щоб визначитися із тим, що буде кращим у кожній ситуації. jpayne@68: .RE jpayne@68: .IP "" jpayne@68: Різні набори інструкцій мають різне вирівнювання: виконуваний файл має бути jpayne@68: вирівняно на кратне до цього значення у вхідних даних, щоб фільтр спрацював. jpayne@68: .RS jpayne@68: .RS jpayne@68: .PP jpayne@68: .TS jpayne@68: tab(;); jpayne@68: l n l jpayne@68: l n l. jpayne@68: Фільтр;Вирівнювання;Нотатки jpayne@68: x86;1;32\-бітова або 64\-бітова x86 jpayne@68: ARM;4; jpayne@68: ARM\-Thumb;2; jpayne@68: ARM64;4;Найкращим є вирівнювання за jpayne@68: ;;4096 байтами jpayne@68: PowerPC;4;Лише зворотний порядок байтів jpayne@68: IA\-64;16;Itanium jpayne@68: SPARC;4; jpayne@68: RISC\-V;2; jpayne@68: .TE jpayne@68: .RE jpayne@68: .RE jpayne@68: .IP "" jpayne@68: Оскільки фільтровані BCJ дані, зазвичай, стискають за допомогою LZMA2, jpayne@68: коефіцієнт стискання можна трохи поліпшити, якщо параметри LZMA2 буде jpayne@68: встановлено так, щоб вони відповідали вирівнюванню вибраного фільтра jpayne@68: BCJ. Приклади: jpayne@68: .RS jpayne@68: .IP \(bu 3 jpayne@68: Фільтр IA\-64 має 16\-байтове вирівнювання, отже \fBpb=4,lp=4,lc=0\fP дасть добрі jpayne@68: результати у поєднанні із LZMA2 (2^4=16). jpayne@68: .IP \(bu 3 jpayne@68: Код RISC\-V має 2\-байтове або 4\-байтове вирівнювання залежно від того, чи jpayne@68: містить файл 16\-бітові стислі інструкції (розширення C). Якщо використано jpayne@68: 16\-бітові інструкції, добрі результати дасть \fBpb=2,lp=1,lc=3\fP або jpayne@68: \fBpb=1,lp=1,lc=3\fP. Якщо 16\-бітових інструкцій немає, найкращим варіантом є jpayne@68: \fBpb=2,lp=2,lc=2\fP. Можна скористатися \fBreadelf \-h\fP, щоб перевірити, чи є jpayne@68: "RVC" у рядку "Flags". jpayne@68: .IP \(bu 3 jpayne@68: ARM64 завжди вирівняно на 4 байти, тому найкращим варіантом буде jpayne@68: \fBpb=2,lp=2,lc=2\fP. jpayne@68: .IP \(bu 3 jpayne@68: Фільтр x86 є виключенням. Зазвичай, добрі результати дають типові для LZMA2 jpayne@68: значення (\fBpb=2,lp=0,lc=3\fP), якщо стискають виконувані файли x86. jpayne@68: .RE jpayne@68: .IP "" jpayne@68: У всіх фільтрах BCJ передбачено підтримку тих самих \fIпараметрів\fP: jpayne@68: .RS jpayne@68: .TP jpayne@68: \fBstart=\fP\fIзсув\fP jpayne@68: Встановити початковий \fIзсув\fP, який буде використано при перетворенні між jpayne@68: відносною та абсолютною адресами. Значення \fIзсув\fP має бути кратним до jpayne@68: вирівнювання фільтра (див. таблицю вище). Типовим зсувом є нульовий. На jpayne@68: практиці, типове значення є прийнятним; визначення нетипового значення jpayne@68: \fIзсув\fP майже завжди нічого корисного не дає. jpayne@68: .RE jpayne@68: .TP jpayne@68: \fB\-\-delta\fP[\fB=\fP\fIпараметри\fP] jpayne@68: Додати дельта\-фільтр до ланцюжка фільтрів. Дельта\-фільтр може бути jpayne@68: використано, лише якщо він не є останнім у ланцюжку фільтрів. jpayne@68: .IP "" jpayne@68: У поточній версії передбачено підтримку обчислення лише простої побітової jpayne@68: дельти. Це може бути корисним при стисканні, наприклад, нестиснутих jpayne@68: растрових зображень або нестиснутих звукових даних PCM. Втім, спеціалізовані jpayne@68: алгоритми можуть давати значно кращі результати за дельту + LZMA2. Це jpayne@68: правило особливо стосується звукових даних, які стискає швидше і краще, jpayne@68: наприклад, \fBflac\fP(1). jpayne@68: .IP "" jpayne@68: Підтримувані \fIпараметри\fP: jpayne@68: .RS jpayne@68: .TP jpayne@68: \fBdist=\fP\fIвідстань\fP jpayne@68: Вказати \fIвідстань\fP обчислень різниці у байтах. Значення \fIвідстань\fP має jpayne@68: потрапляти у діапазон 1\(en256. Типовим значенням є 1. jpayne@68: .IP "" jpayne@68: Наприклад, з \fBdist=2\fP та восьмибайтовими вхідними даними A1 B1 A2 B3 A3 B5 jpayne@68: A4 B7, результатом буде A1 B1 01 02 01 02 01 02. jpayne@68: .RE jpayne@68: . jpayne@68: .SS "Інші параметри" jpayne@68: .TP jpayne@68: \fB\-q\fP, \fB\-\-quiet\fP jpayne@68: Придушити попередження та сповіщення. Вкажіть цей параметр двічі, щоб jpayne@68: придушити також повідомлення про помилки. Цей параметр не впливає на стан jpayne@68: виходу з програми. Тобто, навіть якщо було придушено попередження, стан jpayne@68: виходу вказуватиме на те, що попередження були. jpayne@68: .TP jpayne@68: \fB\-v\fP, \fB\-\-verbose\fP jpayne@68: Докладний режим повідомлень. Якщо стандартне виведення помилок з'єднано із jpayne@68: терміналом, \fBxz\fP показуватиме індикатор поступу. Використання \fB\-\-verbose\fP jpayne@68: двічі призведе до ще докладнішого виведення. jpayne@68: .IP "" jpayne@68: Індикатор поступу показує такі дані: jpayne@68: .RS jpayne@68: .IP \(bu 3 jpayne@68: Частку завершеності буде показано, якщо відомий розмір файла вхідних jpayne@68: даних. Тобто, для каналів даних частку не може бути показано. jpayne@68: .IP \(bu 3 jpayne@68: Об'єм стиснених виведених даних (стискання) або оброблених (розпаковування). jpayne@68: .IP \(bu 3 jpayne@68: Об'єм незапакованих даних (стискання) або виведених даних (розпаковування). jpayne@68: .IP \(bu 3 jpayne@68: Коефіцієнт стискання, який обчислено діленням об'єму оброблених стиснутих jpayne@68: даних на об'єм оброблених нестиснутих даних. jpayne@68: .IP \(bu 3 jpayne@68: Швидкість стискання або розпаковування. Обчислюється як об'єм нестиснутих jpayne@68: даних (стискання) або виведених даних (розпаковування) за секунду. Його буде jpayne@68: показано за декілька секунд з моменту, коли \fBxz\fP почала обробляти файл. jpayne@68: .IP \(bu 3 jpayne@68: Витрачений час у форматі Х:СС або Г:ХХ:СС. jpayne@68: .IP \(bu 3 jpayne@68: Оцінку часу, що лишився, буде показано, лише якщо розмір файла вхідних даних jpayne@68: є відомим, і минуло принаймні декілька секунд з моменту, коли \fBxz\fP почала jpayne@68: обробляти файл. Час буде показано у менш точному форматі, без двокрапок, jpayne@68: наприклад, 2 хв. 30 с. jpayne@68: .RE jpayne@68: .IP "" jpayne@68: Якщо стандартним виведенням помилок не є термінал, \fB\-\-verbose\fP призведе до jpayne@68: того, що \fBxz\fP виведе назву файла, стиснений розмір, нестиснений розмір, jpayne@68: коефіцієнт стискання та, можливо, також швидкість та витрачений час у одному jpayne@68: рядку до стандартного виведення помилок після стискання або розпаковування jpayne@68: файла. Швидкість та витрачений час буде включено, лише якщо дія триває jpayne@68: принаймні декілька секунд. Якщо дію не буде завершено, наприклад, через jpayne@68: втручання користувача, буде також виведено частку виконання, якщо відомий jpayne@68: розмір файла вхідних даних. jpayne@68: .TP jpayne@68: \fB\-Q\fP, \fB\-\-no\-warn\fP jpayne@68: Не встановлювати стан виходу 2, навіть якщо було виявлено відповідність jpayne@68: умові, яка варта попередження. Цей параметр не впливає на рівень докладності jpayne@68: повідомлень, отже, слід використати \fB\-\-quiet\fP і \fB\-\-no\-warn\fP, щоб програма jpayne@68: не показувала попереджень і не змінювала стан виходу. jpayne@68: .TP jpayne@68: \fB\-\-robot\fP jpayne@68: Виводити повідомлення у придатному для обробки комп'ютером форматі. Цей jpayne@68: формат призначено для полегшення написання оболонок, які використовуватимуть jpayne@68: \fBxz\fP замість liblzma, що може бути зручним для різноманітних jpayne@68: скриптів. Виведені дані з цим параметром має бути стабільним для усіх jpayne@68: випусків \fBxz\fP. Докладніший опис можна знайти у розділі \fBРЕЖИМ РОБОТА\fP. jpayne@68: .TP jpayne@68: \fB\-\-info\-memory\fP jpayne@68: Вивести у придатному для читання людиною форматі, скільки фізичної пам'яті jpayne@68: (RAM) та скільки потоків процесора є за даними \fBxz\fP у системі, обмеження jpayne@68: для стискання та розпаковування, а потім успішно завершити роботу. jpayne@68: .TP jpayne@68: \fB\-h\fP, \fB\-\-help\fP jpayne@68: Вивести повідомлення про помилку з описом найбільш типових використаних jpayne@68: параметрів і успішно завершити роботу. jpayne@68: .TP jpayne@68: \fB\-H\fP, \fB\-\-long\-help\fP jpayne@68: Вивести довідкове повідомлення з описом усіх можливостей \fBxz\fP і успішно jpayne@68: завершити роботу jpayne@68: .TP jpayne@68: \fB\-V\fP, \fB\-\-version\fP jpayne@68: Вивести номер версії \fBxz\fP та liblzma у зручному для читання форматі. Щоб jpayne@68: отримати дані, зручні для обробки на комп'ютері, вкажіть \fB\-\-robot\fP до jpayne@68: \fB\-\-version\fP. jpayne@68: . jpayne@68: .SH "РЕЖИМ РОБОТА" jpayne@68: Режим робота активують за допомогою параметра \fB\-\-robot\fP. Він спрощує jpayne@68: обробку виведених \fBxz\fP даних іншими програмами. У поточній версії підтримку jpayne@68: \fB\-\-robot\fP передбачено лише разом із \fB\-\-list\fP, \fB\-\-filters\-help\fP, jpayne@68: \fB\-\-info\-memory\fP і \fB\-\-version\fP. У майбутньому підтримку параметра буде jpayne@68: передбачено для стискання та розпаковування. jpayne@68: . jpayne@68: .SS "Режим списку" jpayne@68: У \fBxz \-\-robot \-\-list\fP використано табуляції для поділу виведених jpayne@68: даних. Першим стовпчиком у кожному рядку є рядок, що вказує на тип jpayne@68: відомостей, які можна знайти у цьому рядку: jpayne@68: .TP jpayne@68: \fBназва\fP jpayne@68: Це завжди перший рядок на початку списку файла. Другим стовпчиком у рядку є jpayne@68: назва файла. jpayne@68: .TP jpayne@68: \fBфайл\fP jpayne@68: У цьому рядку містяться загальні відомості щодо файла \fB.xz\fP. Цей рядок jpayne@68: завжди виводять після рядка \fBname\fP. jpayne@68: .TP jpayne@68: \fBstream\fP jpayne@68: Цей тип рядка використовують, лише якщо було вказано \fB\-\-verbose\fP. Буде jpayne@68: стільки рядків \fBstream\fP, скільки потоків у файлі \fB.xz\fP. jpayne@68: .TP jpayne@68: \fBblock\fP jpayne@68: Цей тип рядка використовують, лише якщо було вказано \fB\-\-verbose\fP. Буде jpayne@68: стільки рядків \fBblock\fP, скільки блоків у файлі \fB.xz\fP. Рядки \fBblock\fP буде jpayne@68: показано після усіх рядків \fBstream\fP; різні типи рядків не перемежовуються. jpayne@68: .TP jpayne@68: \fBsummary\fP jpayne@68: Цей тип рядків використовують, лише якщо \fB\-\-verbose\fP було вказано jpayne@68: двічі. Цей рядок буде виведено після усіх рядків \fBblock\fP. Подібно до рядка jpayne@68: \fBfile\fP, рядок \fBsummary\fP містить загальні відомості щодо файла \fB.xz\fP. jpayne@68: .TP jpayne@68: \fBtotals\fP jpayne@68: Цей рядок завжди є найостаннішим рядком у виведеному списку. У ньому буде jpayne@68: показано загальні кількості та розміри. jpayne@68: .PP jpayne@68: Стовпчики у рядках \fBфайла\fP: jpayne@68: .PD 0 jpayne@68: .RS jpayne@68: .IP 2. 4 jpayne@68: Кількість потоків у файлі jpayne@68: .IP 3. 4 jpayne@68: Загальна кількість блоків у потоках jpayne@68: .IP 4. 4 jpayne@68: Розмір стисненого файла jpayne@68: .IP 5. 4 jpayne@68: Розмір нестисненого файла jpayne@68: .IP 6. 4 jpayne@68: Коефіцієнт стискання, наприклад, \fB0.123\fP. Якщо коефіцієнт перевищує 9.999, jpayne@68: замість коефіцієнта буде показано дефіси (\fB\-\-\-\fP). jpayne@68: .IP 7. 4 jpayne@68: Список відокремлених комами назв перевірок цілісності. Наведені нижче рядки jpayne@68: використовують для відомих типів перевірок: \fBNone\fP, \fBCRC32\fP, \fBCRC64\fP і jpayne@68: \fBSHA\-256\fP. Для невідомих типів перевірок буде використано \fBUnknown\-\fP\fIN\fP, jpayne@68: де \fIN\fP є ідентифікатором перевірки у форматі десяткового числа (одна або jpayne@68: дві цифри). jpayne@68: .IP 8. 4 jpayne@68: Загальний розмір доповнення потоку у файлі jpayne@68: .RE jpayne@68: .PD jpayne@68: .PP jpayne@68: Стовпчики у рядках \fBstream\fP: jpayne@68: .PD 0 jpayne@68: .RS jpayne@68: .IP 2. 4 jpayne@68: Номер потоку (перший потік має номер 1) jpayne@68: .IP 3. 4 jpayne@68: Кількість блоків у потоці jpayne@68: .IP 4. 4 jpayne@68: Зсув початку стисненого jpayne@68: .IP 5. 4 jpayne@68: Зсув початку нестисненого jpayne@68: .IP 6. 4 jpayne@68: Стиснений розмір (не включає доповнення потоку) jpayne@68: .IP 7. 4 jpayne@68: Нестиснутий розмір jpayne@68: .IP 8. 4 jpayne@68: Рівень стискання jpayne@68: .IP 9. 4 jpayne@68: Назва перевірки цілісності jpayne@68: .IP 10. 4 jpayne@68: Розмір доповнення потоку jpayne@68: .RE jpayne@68: .PD jpayne@68: .PP jpayne@68: Стовпчики у рядках \fBblock\fP: jpayne@68: .PD 0 jpayne@68: .RS jpayne@68: .IP 2. 4 jpayne@68: Номер потоку, що містить цей блок jpayne@68: .IP 3. 4 jpayne@68: Номер блоку відносно початку потоку (перший блок має номер 1) jpayne@68: .IP 4. 4 jpayne@68: Номер блоку відносно початку файла jpayne@68: .IP 5. 4 jpayne@68: Зсув початку стисненого відносно початку файла jpayne@68: .IP 6. 4 jpayne@68: Зсув початку нестисненого відносно початку файла jpayne@68: .IP 7. 4 jpayne@68: Загальний стиснений розмір блоку (включено з заголовками) jpayne@68: .IP 8. 4 jpayne@68: Нестиснутий розмір jpayne@68: .IP 9. 4 jpayne@68: Рівень стискання jpayne@68: .IP 10. 4 jpayne@68: Назва перевірки цілісності jpayne@68: .RE jpayne@68: .PD jpayne@68: .PP jpayne@68: Якщо \fB\-\-verbose\fP було вказано двічі, до рядків \fBblock\fP буде включено jpayne@68: додаткові стовпчики. Ці стовпчики не буде показано, якщо вказано одинарний jpayne@68: параметр \fB\-\-verbose\fP, оскільки отримання цих відомостей потребує багатьох jpayne@68: позиціювань, а ця процедура може бути повільною: jpayne@68: .PD 0 jpayne@68: .RS jpayne@68: .IP 11. 4 jpayne@68: Значення перевірки цілісності у шістнадцятковій формі jpayne@68: .IP 12. 4 jpayne@68: Розмір заголовка блоку jpayne@68: .IP 13. 4 jpayne@68: Прапорці блоку: \fBc\fP вказує, що наявний стиснений розмір, а \fBu\fP вказує, що jpayne@68: наявний нестиснений розмір. Якщо прапорець не встановлено, буде показано jpayne@68: (\fB\-\fP) замість підтримання фіксованого розміру рядка. У майбутньому jpayne@68: наприкінці рядка може бути додано нові прапорці. jpayne@68: .IP 14. 4 jpayne@68: Розмір справжніх стиснених даних у блоці (це включає заголовок блоку, jpayne@68: доповнення блоку та поля перевірок) jpayne@68: .IP 15. 4 jpayne@68: Об'єм пам'яті (у байтах), який потрібен для розпаковування цього блоку за jpayne@68: допомогою цієї версії \fBxz\fP jpayne@68: .IP 16. 4 jpayne@68: Ланцюжок фільтрів. Зауважте, що більшість параметрів, які використано під jpayne@68: час стискання, не є наперед відомим, оскільки у заголовках \fB.xz\fP jpayne@68: зберігаються лише параметри, які потрібні для розпаковування. jpayne@68: .RE jpayne@68: .PD jpayne@68: .PP jpayne@68: Стовпчики у рядках \fBsummary\fP: jpayne@68: .PD 0 jpayne@68: .RS jpayne@68: .IP 2. 4 jpayne@68: Об'єм пам'яті (у байтах), який потрібен для розпаковування цього файла за jpayne@68: допомогою цієї версії \fBxz\fP jpayne@68: .IP 3. 4 jpayne@68: \fByes\fP або \fBno\fP вказує, якщо усі заголовки блоків містять одразу стиснений jpayne@68: розмір та розпакований розмір jpayne@68: .PP jpayne@68: \fIПочинаючи з\fP \fBxz\fP \fI5.1.2alpha:\fP jpayne@68: .IP 4. 4 jpayne@68: Мінімальна версія \fBxz\fP, яка потрібна для розпаковування файла jpayne@68: .RE jpayne@68: .PD jpayne@68: .PP jpayne@68: Стовпчики рядка \fBtotals\fP: jpayne@68: .PD 0 jpayne@68: .RS jpayne@68: .IP 2. 4 jpayne@68: Кількість потоків jpayne@68: .IP 3. 4 jpayne@68: Кількість блоків jpayne@68: .IP 4. 4 jpayne@68: Стиснутий розмір jpayne@68: .IP 5. 4 jpayne@68: Нестиснутий розмір jpayne@68: .IP 6. 4 jpayne@68: Середній коефіцієнт стискання jpayne@68: .IP 7. 4 jpayne@68: Список відокремлених комами назв перевірок цілісності, результати яких jpayne@68: наявні у файлах jpayne@68: .IP 8. 4 jpayne@68: Розмір доповнення потоку jpayne@68: .IP 9. 4 jpayne@68: Кількість файлів. Наявний тут для зберігання такого самого порядку jpayne@68: стовпчиків, що і у попередніх рядках \fBfile\fP. jpayne@68: .PD jpayne@68: .RE jpayne@68: .PP jpayne@68: Якщо \fB\-\-verbose\fP було вказано двічі, до рядка \fBtotals\fP буде включено jpayne@68: додаткові стовпчики: jpayne@68: .PD 0 jpayne@68: .RS jpayne@68: .IP 10. 4 jpayne@68: Максимальний об'єм пам'яті (у байтах), який потрібен для розпаковування jpayne@68: файлів за допомогою цієї версії \fBxz\fP jpayne@68: .IP 11. 4 jpayne@68: \fByes\fP або \fBno\fP вказує, якщо усі заголовки блоків містять одразу стиснений jpayne@68: розмір та розпакований розмір jpayne@68: .PP jpayne@68: \fIПочинаючи з\fP \fBxz\fP \fI5.1.2alpha:\fP jpayne@68: .IP 12. 4 jpayne@68: Мінімальна версія \fBxz\fP, яка потрібна для розпаковування файла jpayne@68: .RE jpayne@68: .PD jpayne@68: .PP jpayne@68: У майбутніх версіях може бути додано нові типи рядків і нові стовпчики до jpayne@68: наявних типів рядків, але наявні стовпчики мають лишитися незмінними. jpayne@68: . jpayne@68: .SS "Довідка з фільтрування" jpayne@68: \fBxz \-\-robot \-\-filters\-help\fP виведе список підтримуваних фільтрів у такому jpayne@68: форматі: jpayne@68: .PP jpayne@68: \fIфільтр\fP\fB:\fP\fIпараметр\fP\fB=<\fP\fIзначення\fP\fB>,\fP\fIпараметр\fP\fB=<\fP\fIзначення\fP\fB>\fP... jpayne@68: .TP jpayne@68: \fIфільтр\fP jpayne@68: Назва фільтра jpayne@68: .TP jpayne@68: \fIпараметр\fP jpayne@68: Назва специфічного для фільтра параметра jpayne@68: .TP jpayne@68: \fIзначення\fP jpayne@68: Числові діапазони \fIvalue\fP слід вказати у форматі jpayne@68: \fB<\fP\fIмінімум\fP\fB\-\fP\fIмаксимум\fP\fB>\fP. Варіанти рядка \fIзначення\fP jpayne@68: показано у \fB< >\fP і відокремлено символом \fB|\fP. jpayne@68: .PP jpayne@68: Кожен фільтр буде виведено до окремого рядка. jpayne@68: . jpayne@68: .SS "Дані щодо обмеження пам'яті" jpayne@68: \fBxz \-\-robot \-\-info\-memory\fP виводить один рядок з декількома відокремленими jpayne@68: табуляціями стовпчиками: jpayne@68: .IP 1. 4 jpayne@68: Загальний об'єм фізичної пам'яті (RAM) у байтах. jpayne@68: .IP 2. 4 jpayne@68: Обмеження на використання пам'яті для стискання у байтах jpayne@68: (\fB\-\-memlimit\-compress\fP). Особливе значення \fB0\fP вказує на типові jpayne@68: налаштування, якими для однопотокового режиму є налаштування без обмеження jpayne@68: на використання пам'яті. jpayne@68: .IP 3. 4 jpayne@68: Обмеження на використання пам'яті для розпакування у байтах jpayne@68: (\fB\-\-memlimit\-decompress\fP). Особливе значення \fB0\fP вказує на типові jpayne@68: налаштування, якими для однопотокового режиму є налаштування без обмеження jpayne@68: на використання пам'яті. jpayne@68: .IP 4. 4 jpayne@68: Починаючи з \fBxz\fP 5.3.4alpha: використання пам'яті для багатопотокового jpayne@68: розпаковування у байтах (\fB\-\-memlimit\-mt\-decompress\fP). Ніколи не дорівнює jpayne@68: нулеві, оскільки буде використано специфічне для системи типове значення, jpayne@68: яке показано у стовпчику 5, якщо обмеження не встановлено явним чином. Також jpayne@68: ніколи не перевищуватиме значення у стовпчику 3, навіть якщо було вказано jpayne@68: більше значення за допомогою \fB\-\-memlimit\-mt\-decompress\fP. jpayne@68: .IP 5. 4 jpayne@68: Починаючи з \fBxz\fP 5.3.4alpha: специфічне для системи типове обмеження на jpayne@68: використання пам'яті, яке використовують для обмеження кількості потоків при jpayne@68: стисканні з автоматичною кількістю потоків (\fB\-\-threads=0\fP) і без визначення jpayne@68: обмеження на використання пам'яті (\fB\-\-memlimit\-compress\fP). Це значення jpayne@68: також використовують як типове значення для \fB\-\-memlimit\-mt\-decompress\fP. jpayne@68: .IP 6. 4 jpayne@68: Починаючи з \fBxz\fP 5.3.4alpha: кількість доступних потоків обробки процесора. jpayne@68: .PP jpayne@68: У майбутньому у виведенні \fBxz \-\-robot \-\-info\-memory\fP може бути більше jpayne@68: стовпчиків, але у виведеному буде не більше за один рядок. jpayne@68: . jpayne@68: .SS Версія jpayne@68: \fBxz \-\-robot \-\-version\fP виведе назву версії \fBxz\fP і liblzma у такому jpayne@68: форматі: jpayne@68: .PP jpayne@68: \fBXZ_VERSION=\fP\fIXYYYZZZS\fP jpayne@68: .br jpayne@68: \fBLIBLZMA_VERSION=\fP\fIXYYYZZZS\fP jpayne@68: .TP jpayne@68: \fIX\fP jpayne@68: Основна версія. jpayne@68: .TP jpayne@68: \fIYYY\fP jpayne@68: Проміжна версія. Непарні номери буде використано для стабільних jpayne@68: версій. Непарні номери є номерами тестових версій. jpayne@68: .TP jpayne@68: \fIZZZ\fP jpayne@68: Рівень латання для стабільних випусків або просто лічильник для випусків, jpayne@68: які перебувають у розробці. jpayne@68: .TP jpayne@68: \fIS\fP jpayne@68: Стабільність. 0 — alpha, 1 — beta, а 2 означає «стабільна версія». \fIS\fP має jpayne@68: завжди дорівнювати 2, якщо \fIYYY\fP є парним. jpayne@68: .PP jpayne@68: \fIXYYYZZZS\fP є тим самим в обох рядках, якщо \fBxz\fP і liblzma належать до jpayne@68: одного випуску XZ Utils. jpayne@68: .PP jpayne@68: Приклади: 4.999.9beta — це \fB49990091\fP, а 5.0.0 — це \fB50000002\fP. jpayne@68: . jpayne@68: .SH "СТАН ВИХОДУ" jpayne@68: .TP jpayne@68: \fB0\fP jpayne@68: Усе добре. jpayne@68: .TP jpayne@68: \fB1\fP jpayne@68: Сталася помилка. jpayne@68: .TP jpayne@68: \fB2\fP jpayne@68: Сталося щось варте попередження, але справжніх помилок не сталося. jpayne@68: .PP jpayne@68: Зауваження (не попередження або помилки), які виведено до стандартного jpayne@68: виведення помилок, не впливають на стан виходу. jpayne@68: . jpayne@68: .SH СЕРЕДОВИЩЕ jpayne@68: \fBxz\fP обробляє списки відокремлених пробілами параметрів зі змінних jpayne@68: середовища \fBXZ_DEFAULTS\fP і \fBXZ_OPT\fP, перш ніж обробляти параметри з рядка jpayne@68: команди. Зауважте, що буде оброблено лише параметри зі змінних середовища; jpayne@68: усі непараметричні записи буде без повідомлень проігноровано. Обробку буде jpayne@68: виконано за допомогою функції \fBgetopt_long\fP(3), яку також використовують jpayne@68: для аргументів рядка команди. jpayne@68: .TP jpayne@68: \fBXZ_DEFAULTS\fP jpayne@68: Специфічні для користувача або загальносистемні типові параметри. Зазвичай, jpayne@68: їх встановлюють у скрипті ініціалізації оболонки для типового вмикання jpayne@68: обмеження на використання пам'яті у \fBxz\fP. Окрім скриптів ініціалізації jpayne@68: оболонки і подібних особливих випадків, не слід встановлювати або jpayne@68: скасовувати встановлення значення \fBXZ_DEFAULTS\fP у скриптах. jpayne@68: .TP jpayne@68: \fBXZ_OPT\fP jpayne@68: Цю змінну призначено для передавання параметрів до \fBxz\fP, якщо неможливо jpayne@68: встановити параметри безпосередньо у рядку команди \fBxz\fP. Це трапляється, jpayne@68: якщо \fBxz\fP запущено скриптом або інструментом, наприклад, GNU \fBtar\fP(1): jpayne@68: .RS jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRXZ_OPT=\-2v tar caf foo.tar.xz foo\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .RE jpayne@68: .IP "" jpayne@68: Скрипти можуть використовувати \fBXZ_OPT\fP, наприклад, для встановлення jpayne@68: специфічних типових параметрів стискання. Втім, рекомендуємо дозволити jpayne@68: користувачам перевизначати \fBXZ_OPT\fP, якщо це має якісь причини. Наприклад, jpayne@68: у скриптах \fBsh\fP(1) можна скористатися чимось таким: jpayne@68: .RS jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRXZ_OPT=${XZ_OPT\-"\-7e"} jpayne@68: export XZ_OPT\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .RE jpayne@68: . jpayne@68: .SH "СУМІСНІСТЬ ІЗ LZMA UTILS" jpayne@68: Синтаксис рядка команди \fBxz\fP практично є надбудовою щодо \fBlzma\fP, \fBunlzma\fP jpayne@68: і \fBlzcat\fP з LZMA Utils 4.32.x. У більшості випадків можна замінити LZMA jpayne@68: Utils XZ Utils без порушення працездатності наявних скриптів. Втім, існують jpayne@68: певні несумісності, які іноді можуть спричиняти проблеми. jpayne@68: . jpayne@68: .SS "Рівні шаблонів стискання" jpayne@68: Нумерація у шаблонах рівнів стискання у \fBxz\fP не є тотожною до нумерації у jpayne@68: LZMA Utils. Найважливішою відмінністю є прив'язка розмірів словника до jpayne@68: різних шаблонів. Розмір словника грубо рівний використанню пам'яті у засобі jpayne@68: розпаковування. jpayne@68: .RS jpayne@68: .PP jpayne@68: .TS jpayne@68: tab(;); jpayne@68: c c c jpayne@68: c n n. jpayne@68: Рівень;xz;LZMA Utils jpayne@68: \-0;256 КіБ;н/д jpayne@68: \-1;1 МіБ;64 КіБ jpayne@68: \-2;2 МіБ;1 МіБ jpayne@68: \-3;4 МіБ;512 КіБ jpayne@68: \-4;4 МіБ;1 МіБ jpayne@68: \-5;8 МіБ;2 МіБ jpayne@68: \-6;8 МіБ;4 МіБ jpayne@68: \-7;16 МіБ;8 МіБ jpayne@68: \-8;32 МіБ;16 МіБ jpayne@68: \-9;64 МіБ;32 МіБ jpayne@68: .TE jpayne@68: .RE jpayne@68: .PP jpayne@68: Відмінності у розмірах словників також впливають на використання пам'яті jpayne@68: засобом стискання, але є і інші відмінності між LZMA Utils і XZ Utils, які jpayne@68: роблять різницю ще помітнішою: jpayne@68: .RS jpayne@68: .PP jpayne@68: .TS jpayne@68: tab(;); jpayne@68: c c c jpayne@68: c n n. jpayne@68: Рівень;xz;LZMA Utils 4.32.x jpayne@68: \-0;3 МіБ;н/д jpayne@68: \-1;9 МіБ;2 МіБ jpayne@68: \-2;17 МіБ;12 МіБ jpayne@68: \-3;32 МіБ;12 МіБ jpayne@68: \-4;48 МіБ;16 МіБ jpayne@68: \-5;94 МіБ;26 МіБ jpayne@68: \-6;94 МіБ;45 МіБ jpayne@68: \-7;186 МіБ;83 МіБ jpayne@68: \-8;370 МіБ;159 МіБ jpayne@68: \-9;674 МіБ;311 МіБ jpayne@68: .TE jpayne@68: .RE jpayne@68: .PP jpayne@68: Типовим рівнем стискання у LZMA Utils є \fB\-7\fP, а у XZ Utils — \fB\-6\fP, отже, jpayne@68: обидва комплекти програм типово використовують словник розміром у 8 МіБ. jpayne@68: . jpayne@68: .SS "Потокові і непотокові файл .lzma" jpayne@68: Розмір нестисненого файла може бути збережено у заголовку \fB.lzma\fP. LZMA jpayne@68: Utils зберігають дані при стисканні звичайних файлів. Альтернативним jpayne@68: підходом є позначення нестисненого розміру як невідомого і використання jpayne@68: позначки кінця вмісту для позначення місця, де засіб розпаковування має jpayne@68: зупинитися. У LZMA Utils цей спосіб використовують, якщо нестиснений розмір jpayne@68: є невідомим, що трапляється, наприклад, для конвеєрів обробки даних. jpayne@68: .PP jpayne@68: У \fBxz\fP передбачено підтримку розпаковування файлів \fB.lzma\fP з позначкою jpayne@68: кінця вмісту та без неї, але усі файли \fB.lzma\fP, які створено за допомогою jpayne@68: \fBxz\fP, використовують позначку кінця вмісту, а нестиснений розмір у jpayne@68: заголовку \fB.lzma\fP позначають як невідомий. Це може призвести до проблем у jpayne@68: деяких нетипових ситуаціях. Наприклад, розпакувальник \fB.lzma\fP у вбудованому jpayne@68: пристрої може працювати лише з файлами, для яких відомий нестиснений jpayne@68: розмір. Якщо ви зіткнулися з цією проблемою, вам слід скористатися LZMA jpayne@68: Utils або LZMA SDK для створення файлів \fB.lzma\fP із відомим розміром jpayne@68: нестиснених даних. jpayne@68: . jpayne@68: .SS "Непідтримувані файли .lzma" jpayne@68: У форматі \fB.lzma\fP можливі значення \fIlc\fP аж до 8 і значення \fIlp\fP аж до jpayne@68: 4. LZMA Utils можуть розпаковувати файли із будь\-якими значеннями \fIlc\fP і jpayne@68: \fIlp\fP, але завжди створюють файли з \fBlc=3\fP і \fBlp=0\fP. Створення файлів з jpayne@68: іншими значеннями \fIlc\fP і \fIlp\fP є можливим за допомогою \fBxz\fP і LZMA SDK. jpayne@68: .PP jpayne@68: Реалізація фільтра LZMA1 у liblzma потребує, щоби сума \fIlc\fP і \fIlp\fP не jpayne@68: перевищувала 4. Отже, файли \fB.lzma\fP, у яких перевищено обмеження, не може jpayne@68: бути розпаковано за допомогою \fBxz\fP. jpayne@68: .PP jpayne@68: LZMA Utils створюють лише файли \fB.lzma\fP, які мають розмір словника у 2^\fIn\fP jpayne@68: (степінь 2), але приймають файли із будь\-яким розміром словника. liblzma jpayne@68: приймає лише файли \fB.lzma\fP, які мають розмір словника 2^\fIn\fP або 2^\fIn\fP + jpayne@68: 2^(\fIn\fP\-1). Так зроблено для зменшення помилок при виявленні файлів jpayne@68: \&\fB.lzma\fP. jpayne@68: .PP jpayne@68: Ці обмеження не мають призводити до проблем на практиці, оскільки практично jpayne@68: усі файли \fB.lzma\fP було стиснено з використанням параметрів, які приймає jpayne@68: liblzma. jpayne@68: . jpayne@68: .SS "Кінцевий мотлох" jpayne@68: При розпаковуванні LZMA Utils без повідомлень ігнорують усі дані після jpayne@68: першого потоку \fB.lzma\fP. У більшості випадків це пов'язано із вадою у jpayne@68: програмі. Це також означає, що у LZMA Utils не передбачено підтримки jpayne@68: розпаковування з'єднаних файлів \fB.lzma\fP. jpayne@68: .PP jpayne@68: Якщо після першого потоку \fB.lzma\fP лишилися дані, \fBxz\fP вважатиме файл jpayne@68: пошкодженим, якщо не було використано \fB\-\-single\-stream\fP. Це може зашкодити jpayne@68: роботі скриптів, де зроблено припущення, що кінцеві зайві дані буде jpayne@68: проігноровано. jpayne@68: . jpayne@68: .SH ПРИМІТКИ jpayne@68: . jpayne@68: .SS "Стискання даних може бути різним" jpayne@68: Точні стиснені дані, які створено на основі того самого нестисненого файла jpayne@68: вхідних даних, можуть бути різними для різних версій XZ Utils, навіть якщо jpayne@68: використано однакові параметри стискання. Причиною цього є удосконалення у jpayne@68: кодувальнику (пришвидшення або краще стискання) без зміни формату jpayne@68: файлів. Виведені дані можуть бути різними навіть для різних збірок тієї jpayne@68: самої версії XZ Utils, якщо використано різні параметри збирання. jpayne@68: .PP jpayne@68: Написане вище означає, що після реалізації \fB\-\-rsyncable\fP файли\-результати jpayne@68: не обов'язково можна буде синхронізувати за допомогою rsyncable, якщо старий jpayne@68: і новий файли було стиснено за допомогою тієї самої версії xz. Цю проблему jpayne@68: можна усунути, якщо буде заморожено частину реалізації кодувальника, щоб jpayne@68: введені для rsync дані були стабільними між версіями xz. jpayne@68: . jpayne@68: .SS "Вбудовані розпакувальники .xz" jpayne@68: У вбудованих реалізаціях розпакувальника \fB.xz\fP, подібних до XZ Embedded, не jpayne@68: обов'язково передбачено підтримку файлів, які створено із типами jpayne@68: \fIперевірки\fP цілісності, відмінними від \fBnone\fP і \fBcrc32\fP. Оскільки типовим jpayne@68: є \fB\-\-check=crc64\fP, вам слід використовувати \fB\-\-check=none\fP або jpayne@68: \fB\-\-check=crc32\fP при створенні файлів для вбудованих систем. jpayne@68: .PP jpayne@68: Поза вбудованими системами, в усіх засобах розпаковування формату \fB.xz\fP jpayne@68: передбачено підтримку усіх типів \fIперевірок\fP або принаймні можливість jpayne@68: розпакувати файл без перевірки цілісності, якщо підтримки певної jpayne@68: \fIперевірки\fP не передбачено. jpayne@68: .PP jpayne@68: У XZ Embedded передбачено підтримку BCJ, але лише з типовим початковим jpayne@68: зсувом. jpayne@68: . jpayne@68: .SH ПРИКЛАДИ jpayne@68: . jpayne@68: .SS Основи jpayne@68: Стиснути файл \fIfoo\fP до \fIfoo.xz\fP за допомогою типового рівня стискання jpayne@68: (\fB\-6\fP) і вилучити \fIfoo\fP, якщо стискання відбулося успішно: jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRxz foo\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .PP jpayne@68: Розпакувати \fIbar.xz\fP до \fIbar\fP і не вилучати \fIbar.xz\fP, навіть якщо jpayne@68: розпаковування відбулося успішно: jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRxz \-dk bar.xz\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .PP jpayne@68: Створити \fIbaz.tar.xz\fP з використанням шаблона \fB\-4e\fP (\fB\-4 \-\-extreme\fP), jpayne@68: який є повільнішими за типовий \fB\-6\fP, але потребує менше пам'яті для jpayne@68: стискання та розпаковування (48\ МіБ та 5\ МіБ, відповідно): jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRtar cf \- baz | xz \-4e > baz.tar.xz\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .PP jpayne@68: Суміш стиснених і нестиснених файлів можна розпакувати до стандартного jpayne@68: виведення за допомогою єдиної команди: jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRxz \-dcf a.txt b.txt.xz c.txt d.txt.lzma > abcd.txt\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: . jpayne@68: .SS "Паралельне стискання багатьох файлів" jpayne@68: У GNU і *BSD можна скористатися \fBfind\fP(1) і \fBxargs\fP(1) для паралельного jpayne@68: стискання багатьох файлів: jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRfind . \-type f \e! \-name '*.xz' \-print0 \e jpayne@68: | xargs \-0r \-P4 \-n16 xz \-T1\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .PP jpayne@68: Параметр \fB\-P\fP \fBxargs\fP(1) встановлює кількість паралельних процесів jpayne@68: \fBxz\fP. Найкраще значення параметра \fB\-n\fP залежить від того, скільки файлів jpayne@68: має бути стиснено. Якщо файлів мало, значенням, ймовірно, має бути 1. Якщо jpayne@68: файлів десятки тисяч, може знадобитися значення 100 або навіть більше, щоб jpayne@68: зменшити кількість процесів \fBxz\fP, які врешті створить \fBxargs\fP(1). jpayne@68: .PP jpayne@68: Параметр \fB\-T1\fP для \fBxz\fP тут для примусового встановлення однопотокового jpayne@68: режиму, оскільки для керування рівнем паралелізації використано \fBxargs\fP(1). jpayne@68: . jpayne@68: .SS "Режим робота" jpayne@68: Обчислити скільки байтів було заощаджено загалом після стискання декількох jpayne@68: файлів: jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRxz \-\-robot \-\-list *.xz | awk '/^totals/{print $5\-$4}'\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .PP jpayne@68: Скрипту можуть знадобитися дані щодо того, що використано достатньо нову jpayne@68: версію \fBxz\fP. У наведеному нижче скрипті \fBsh\fP(1) виконано перевірку того, jpayne@68: що номер версії засобу \fBxz\fP є принаймні рівним 5.0.0. Цей спосіб є сумісним jpayne@68: зі старими тестовими версіями, де не передбачено підтримки параметра jpayne@68: \fB\-\-robot\fP: jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRif ! eval "$(xz \-\-robot \-\-version 2> /dev/null)" || jpayne@68: [ "$XZ_VERSION" \-lt 50000002 ]; then jpayne@68: echo "Your xz is too old." jpayne@68: fi jpayne@68: unset XZ_VERSION LIBLZMA_VERSION\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .PP jpayne@68: Встановити обмеження на використання пам'яті для розпаковування за допомогою jpayne@68: \fBXZ_OPT\fP, але якщо обмеження вже було встановлено, не збільшувати його: jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRNEWLIM=$((123 << 20))\ \ # 123 MiB jpayne@68: OLDLIM=$(xz \-\-robot \-\-info\-memory | cut \-f3) jpayne@68: if [ $OLDLIM \-eq 0 \-o $OLDLIM \-gt $NEWLIM ]; then jpayne@68: XZ_OPT="$XZ_OPT \-\-memlimit\-decompress=$NEWLIM" jpayne@68: export XZ_OPT jpayne@68: fi\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: . jpayne@68: .SS "Нетипові ланцюжки фільтрів засобу стискання" jpayne@68: Найпростішим використанням ланцюжка фільтрів є налаштовування шаблона jpayne@68: LZMA2. Це може бути корисним, оскільки у шаблонах використано лише jpayne@68: підмножину потенційно корисних комбінацій параметрів стискання. jpayne@68: .PP jpayne@68: При налаштовуванні шаблонів LZMA2 корисними є стовпчики CompCPU таблиць з jpayne@68: описів параметрів \fB\-0\fP ... \fB\-9\fP і \fB\-\-extreme\fP. Ось відповідні частини з jpayne@68: цих двох таблиць: jpayne@68: .RS jpayne@68: .PP jpayne@68: .TS jpayne@68: tab(;); jpayne@68: c c jpayne@68: n n. jpayne@68: Шаблон;CompCPU jpayne@68: \-0;0 jpayne@68: \-1;1 jpayne@68: \-2;2 jpayne@68: \-3;3 jpayne@68: \-4;4 jpayne@68: \-5;5 jpayne@68: \-6;6 jpayne@68: \-5e;7 jpayne@68: \-6e;8 jpayne@68: .TE jpayne@68: .RE jpayne@68: .PP jpayne@68: Якщо вам відомо, що певний файл потребує дещо більшого словника (наприклад, jpayne@68: 32\ МіБ) для якісного стискання, але ви хочете стиснути його швидше за jpayne@68: команду \fBxz \-8\fP, можна внести зміни до шаблона із нижчим значенням CompCPU jpayne@68: (наприклад, 1) для використання більшого словника: jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRxz \-\-lzma2=preset=1,dict=32MiB foo.tar\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .PP jpayne@68: Для певних файлів наведена вище команда може працювати швидше за \fBxz \-6\fP і jpayne@68: стискати дані значно краще. Втім, слід наголосити, переваги більшого jpayne@68: словника з одночасним низьким значенням CompCPU проявляються лише для деяких jpayne@68: файлів. Найочевиднішим випадком, коли великий словник є корисним, є випадок, jpayne@68: коли архів містить дуже подібні файли розміром у принаймні декілька jpayne@68: мегабайтів. Розмір словника має бути значно більшим за будь\-який окремий jpayne@68: файл, щоб у LZMA2 було використано усі переваги подібностей між послідовними jpayne@68: файлами. jpayne@68: .PP jpayne@68: Якщо дуже високий рівень використання пам'яті у засобі стискання або jpayne@68: розпаковування не є проблемою, і файли, який стискають має об'єм у принаймні jpayne@68: декілька десятків мегабайтів, може бути корисним використання навіть jpayne@68: більшого за 64 МіБ словника, який використано у \fBxz \-9\fP: jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRxz \-vv \-\-lzma2=dict=192MiB big_foo.tar\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .PP jpayne@68: Використання \fB\-vv\fP (\fB\-\-verbose \-\-verbose\fP), подібно до наведеного вище jpayne@68: прикладу, може бути корисним для перегляду вимог з боку засобів стискання та jpayne@68: розпаковування до пам'яті. Пам'ятайте, що використання словника, розмір jpayne@68: якого перевищує розмір файла, який стискають, є простоюю витратою пам'яті, jpayne@68: отже наведену вище команду не варто використовувати для малих файлів. jpayne@68: .PP jpayne@68: Іноді час стискання не має значення, але використання пам'яті засобом jpayne@68: розпаковування має бути низьким для того, щоб, наприклад, уможливити jpayne@68: розпаковування файла у вбудованій системі. У наведеній нижче команді jpayne@68: використано \fB\-6e\fP (\fB\-6 \-\-extreme\fP) як основу і встановлено розмір словника jpayne@68: лише у 64\ КіБ. Файл\-результат можна розпакувати за допомогою XZ Embedded jpayne@68: (ось чому використано \fB\-\-check=crc32\fP) з використанням лише 100\ КіБ jpayne@68: пам'яті. jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRxz \-\-check=crc32 \-\-lzma2=preset=6e,dict=64KiB foo\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .PP jpayne@68: Якщо вам потрібно витиснути зі стискання максимальну кількість байтів, може jpayne@68: допомогти коригування кількості бітів контексту літералів (\fIlc\fP) та jpayne@68: кількість позиційних бітів (\fIpb\fP). Також може допомогти коригування jpayne@68: кількості бітів позиції літералів (\fIlp\fP), але, зазвичай, важливішими є jpayne@68: \fIlc\fP і \fIpb\fP. Наприклад, в архівах зі початковим кодом міститься jpayne@68: здебільшого текст US\-ASCII, щось подібне до наведеного нижче може дещо (на jpayne@68: щось близьке до 0,1\ %) зменшити файл, порівняно із \fBxz \-6e\fP (спробуйте jpayne@68: також без \fBlc=4\fP): jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRxz \-\-lzma2=preset=6e,pb=0,lc=4 source_code.tar\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .PP jpayne@68: Використання іншого фільтра разом із LZMA2 може покращити стискання для jpayne@68: певних типів файлів. Наприклад, для стискання бібліотеки спільного jpayne@68: користування x86\-32 або x86\-64 з використанням фільтра BCJ x86 скористайтеся jpayne@68: такою командою: jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRxz \-\-x86 \-\-lzma2 libfoo.so\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .PP jpayne@68: Зауважте, що порядок параметрів фільтрування має значення. Якщо \fB\-\-x86\fP jpayne@68: вказано після \fB\-\-lzma2\fP, \fBxz\fP повідомить про помилку, оскільки після LZMA2 jpayne@68: не може бути жодного фільтра, а також оскільки фільтр BCJ x86 не можна jpayne@68: використовувати як останній фільтр у ланцюжку. jpayne@68: .PP jpayne@68: Фільтр Delta разом із LZMA2 може дати добрі результати для растрових jpayne@68: зображень. Зазвичай, результати є кращими за формат PNG, у якого є декілька jpayne@68: більш досконалих фільтрів, ніж проста дельта, але там використовують для jpayne@68: стискання Deflate. jpayne@68: .PP jpayne@68: Зображення слід берегти у нестисненому форматі, наприклад, як нестиснений jpayne@68: TIFF. Параметр відстані фільтра Delta встановлюють так, щоб він збігався із jpayne@68: кількістю байтів на піксель у зображенні. Наприклад, для 24\-бітового jpayne@68: растрового зображення RGB слід вказати \fBdist=3\fP, а також добре передати jpayne@68: \fBpb=0\fP до LZMA2 для пристосовування до трибайтового вирівнювання: jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRxz \-\-delta=dist=3 \-\-lzma2=pb=0 foo.tiff\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .PP jpayne@68: Якщо в один архів запаковано декілька зображень (наприклад, в архів jpayne@68: \&\fB.tar\fP), фільтр Delta також даватиме добрі результати, якщо у всіх jpayne@68: зображеннях однакова кількість байтів для кожного пікселя. jpayne@68: . jpayne@68: .SH "ДИВ. ТАКОЖ" jpayne@68: \fBxzdec\fP(1), \fBxzdiff\fP(1), \fBxzgrep\fP(1), \fBxzless\fP(1), \fBxzmore\fP(1), jpayne@68: \fBgzip\fP(1), \fBbzip2\fP(1), \fB7z\fP(1) jpayne@68: .PP jpayne@68: XZ Utils: jpayne@68: .br jpayne@68: Вбудовуваний XZ: jpayne@68: .br jpayne@68: LZMA SDK: