GZIP(1) | General Commands Manual | GZIP(1) |
gzip, gunzip, zcat — стискання або розпаковування файлів
gzip [ -acdfhklLnNrtvV19 ]
[-S суфікс] [
назва ... ]
gunzip [ -acfhklLnNrtvV ]
[-S суфікс] [
назва ... ]
zcat [ -fhLV ] [ назва
... ]
Команда gzip зменшує розмір названого файла за допомогою кодування Лемпеля-Зіва (LZ77). Коли це можливо, кожен файл буде замінено файлом з суфіксом .gz зі збереженням режиму доступу, власника, доступу та час внесення змін. (Типовим суфіксом є z для MSDOS, OS/2 FAT, Windows NT FAT та Atari.) Якщо файл не вказано, або якщо назвою файла є «-», дані зі стандартного джерела вхідних даних буде стиснуто до стандартного виведення. Команда gzip стискає лише звичайні файли. Зокрема, вона ігнорує символічні посилання.
Якщо назва стисненого файла задовга для поточної файлової системи, gzip її вкорочує. Команда gzip вкорочує лише частини назви файла, які довші за 3 символи. (Частину визнаємо за крапкою). Якщо назва містить лише короткі частини, вкорочується найдовша. Наприклад, якщо назву файла обмежено 14 символами, gzip.msdos.exe буде стиснуто до gzi.msd.exe.gz. На системах, де немає обмеження на довжину файлів, назви не вкорочуються.
Типово, gzip зберігає початкову назву файла і час модифікації в зміненому файлі. Ця інформація використовується при розпакуванні файла із параметром -N. Це є корисним, коли назву файлу було вкорочено, або коли час модифікації не було збережено під час перенесення файла.
Стиснені файли можна відновити до їх початкової форми за допомогою gzip -d, або gunzip, або zcat. Якщо початкова назва файла, збережена у стисненому файлі, непридатна для файлової системи, з початкової створюється нова назва, що є придатною.
gunzip приймає список файлів з рядка команди і замінює кожен з файлів, чиї назви завершуються на .gz, -gz, .z, -z або _z (без врахування регістру символів), і вміст яких починається з належного контрольного числа, на розпакований файл, назва якого не містить початкового суфікса. gunzip також розпізнає спеціальні суфікси .tgz і .taz, як скорочення від .tar.gz і .tar.Z, відповідно. При стисканні gzip використовує суфікс назви .tgz, якщо потрібно, замість обрізання назви файла із суфіксом .tar.
Поточна версія gunzip може розпаковувати файли, які створено gzip, zip, compress, compress -H та pack. Виявлення формату вхідних даних відбувається автоматично. При використанні перших двох форматів gunzip перевіряє 32-бітову контрольну суму CRC. Для pack gunzip перевіряє об'єм нестиснених даних. Стандартним форматом compress не передбачено перевірок цілісності. Втім, gunzip іноді може виявити пошкоджений файл .Z. Якщо ви отримуєте повідомлення про помилку під час розпаковування файла .Z, не варто вважати файл .Z є коректним просто тому, що стандартна uncompress не скаржиться при розпакуванні. Загалом, це просто означає, що стандартна uncompress не перевіряє вхідні дані і без проблем виводить помилкові дані. Формат стискання SCO compress -H (спосіб стискання lzh) не включає CRC, але також можливі певні перевірки цілісності.
Файли, які створено zip, може бути розпаковано gzip, лише якщо у них є один елемент, який стиснуто із використанням методу «deflation». Цю можливість призначено лише для полегшення перетворення файлів tar.zip до формату tar.gz. Щоб видобути дані з файла zip із одним елементом, скористайтеся рядком команди, подібним до «gunzip <щось.zip» або «gunzip -S .zip щось.zip». Щоб видобути дані з файлів zip з декількома елементами, скористайтеся unzip замість gunzip.
Команда zcat є тим самим, що і gunzip -c. (У деяких системах zcat може бути встановлено як gzcat для збереження початкового посилання на compress.) zcat розпаковує або список файлів з рядка команди або дані із стандартного джерела вхідних даних і записує розпаковані дані до стандартного виведення. zcat розпаковуватиме файли, які мають належну контрольну суму, незалежно від того, мають вони суфікс назви .gz, чи ні.
У gzip використано алгоритм Лемпеля-Зіва, який також використано у zip та PKZIP. Частка стискання алгоритмом залежить від розміру вхідних даних та розподілу у них типових підрядків. Зазвичай, текст у формі початкового коду програм або літературної англійської мови буде стиснуто на 60-70%. Загалом, рівень стискання є набагато кращим за рівень LZW (який використано у compress), кодування Гаффмана (яке використано у pack) та адаптивне кодування Гаффмана (compact).
Стискання виконуватиметься за будь-яких умов, навіть якщо розмір стиснутого файла трохи перевищує розмір початкового. У найгіршому випадку зростання об'єму складатиме декілька байтів на заголовок файла gzip, плюс 5 байтів на кожен блок у 32 КіБ або коефіцієнт збільшення у 0,015% для великих файлів. Справжня кількість використаних блоків на диску майже ніколи не зростатиме.
Зазвичай, gzip зберігає режим доступу та часові позначки внесення змін файлів під час стискання або розпаковування. Якщо у вас є відповідні привілеї, програма також зберігає власника файла і групу.
compressed size: розмір
стисненого
файла
uncompressed size: розмір
розпакованого
файла
ratio: рівень
стискання
(0.0%, якщо
невідомий)
uncompressed_name: назва
розпакованого
файла
Розмір розпакованого файла буде показано як -1 для файлів, які збережено не у форматі gzip, зокрема стиснених файлів .Z. Щоб отримати розмір розпакованих файлів для таких файлів, можете скористатися такою командою:
zcat файл.Z | wc -c
У поєднанні із параметром --verbose може бути також показано такі поля:
method: спосіб
стискання
crc: 32-бітова
контрольна
сума CRC
розпакованих
даних
date & time: часова
позначка
розпакованих
файлів
У поточній версії підтримуваними способами стискання є deflate, compress, lzh (SCO compress -H) і pack. Контрольну суму crc буде показано як ffffffff для файлів, які записано не у форматі gzip.
Якщо вказано --name, буде показано назву розпакованого файла, дату і час, які збережено у стисненому файлі, якщо такі дані існують.
Якщо вказано --verbose, також буде показано загальні розміри та рівень стискання для усіх файлів, якщо ці розміри відомі. Якщо вказано --quiet, рядки заголовка і загальних значень не буде показано.
При розпакуванні додавати .суфікс на початку списку суфіксів, спроби використання яких буде виконано при встановленні назви файла результатів на основі назв файлів вхідних даних.
Декілька стиснутих файлів може бути об'єднано. У цьому випадку gunzip виконає видобування усіх елементів архіву одразу. Приклад:
gzip -c файл1 >
щось.gz
gzip -c файл2 >>
щось.gz
Потім
gunzip -c щось
еквівалент
cat файл1 файл2
Якщо буде пошкоджено один із записів архіву .gz, інші записи все ще можна буде відновити (якщо вилучити пошкоджений запис). Втім, ви можете отримати вищий рівень стискання, якщо усі записи буде стиснуто одразу:
cat файл1 файл2 |
gzip > щось.gz
стискає краще за
gzip -c файл1 файл2
> щось.gz
Якщо ви хочете перепакувати з'єднані файли, щоб досягти вищого рівня стискання, віддайте таку команду:
gzip -cd старий.gz | gzip >
новий.gz
Якщо стиснутий файл складається з декількох елементів, дані щодо розпакованого розміру та CRC, які буде показано у відповідь на використання параметра --list, стосуватимуться лише останнього елемента. Якщо вам потрібен розпакований розмір для усіх елементів архіву, ви можете скористатися такою командою:
gzip -cd файл.gz | wc -c
Якщо вам потрібно створити єдиний файл архіву з декількох елементів так, щоб елементи можна було розпакувати згодом незалежно, скористайтеся архіватором, подібним до tar або zip. У GNU tar передбачено параметр -z для прозорого виклику gzip. gzip було розроблено як доповнення, а не замінник, tar.
Застаріла змінна середовища GZIP може містити набір типових параметрів gzip. Ці параметри буде оброблено першими — їх може бути перевизначено явно заданими параметрами рядка команди. Оскільки це може спричинити проблеми при використанні скриптів, підтримку цієї можливості реалізовано лише для параметрів, які, найімовірніше, не спричинять ніяких проблем, а gzip попереджатиме про використання цієї змінної. Цю можливість буде прибрано у майбутніх випусках gzip.
Замість змінної середовища ви можете скористатися альтернативою до команди або скриптом. Наприклад, якщо виконуваний файл gzip зберігається у каталозі /usr/bin, ви можете дописати $HOME/bin до вашої змінної PATH і створити виконуваний скрипт $HOME/bin/gzip, який міститиме такий текст:
#! /bin/sh
export PATH=/usr/bin
exec gzip -9 "$@"
znew(1), zcmp(1), zmore(1), zforce(1), gzexe(1), zip(1), unzip(1), compress(1)
Формат файлів gzip було визначено П. Дойчем (P. Deutsch) у специфікації формату файлів GZIP версії 4.3, <https://www.ietf.org/rfc/rfc1952.txt>, Internet RFC 1952 (травень 1996 року). Формат стискання zip визначено П. Дойчем у специфікації стисненого формату даних DEFLATE версії 1.3, <https://www.ietf.org/rfc/rfc1951.txt>, Internet RFC 1951 (травень 1996 року).
Звичайним станом виходу є 0; якщо станеться помилка, станом виходу буде 1. Якщо програма про щось вас попереджатиме, станом виходу буде 2.
zcat файл > recover
При записуванні стиснених даних на магнітну стрічку, загалом кажучи, потрібно доповнювати результат нулями до межі блоку. Коли виконуватиметься читання даних, увесь блок буде передано до gunzip для розпакування, gunzip виявить кінцеві зайві дані після стиснених даних і, типово, видасть попередження. Для придушення виведення повідомлень ви можете скористатися параметром --quiet.
У деяких рідкісних випадках використання параметра --best призводить до гіршого рівня стискання, ніж типовий рівень стискання (-6). Деякі файли із високою надлишковістю інформації compress стискає краще за gzip.
Повідомляйте
про вади на
адресу: bug-gzip@gnu.org
Домашня
сторінка GNU gzip:
<https://www.gnu.org/software/gzip/>
Загальна
довідкова
інформація
щодо
використання
програмного
забезпечення
GNU: <https://www.gnu.org/gethelp/>
Авторські
права
належать ©
Free Software Foundation, Inc., 1998-1999, 2001-2002, 2012, 2015-2022
Авторські
права
належать ©
Jean-loup Gailly, 1992, 1993
Цей підручник можна копіювати без змін і поширювати, якщо в усіх копіях збережено запис про авторські права та цей запис про можливість копіювання.
Цей підручник можна копіювати, вносити до копії зміни і поширювати створені копії, якщо виконано умови копіювання без змін, а уся похідна робота повинна поширюватися за тих самих умов, що і цей підручник.
Переклади цього підручника іншими мовами можна копіювати і поширювати відповідно до викладених вище умов щодо змінених версій, окрім того, що ці умови може бути перекладено, якщо переклад офіційно затверджено Фундацією вільного програмного забезпечення.
Український переклад цієї сторінки посібника виконано Andriy Rysin <arysin@gmail.com> і Yuri Chornoivan <yurchor@ukr.net>
Цей переклад є безкоштовною документацією; будь ласка, ознайомтеся з умовами GNU General Public License Version 3. НЕ НАДАЄТЬСЯ ЖОДНИХ ГАРАНТІЙ.
Якщо ви знайшли помилки у перекладі цієї сторінки підручника, будь ласка, надішліть електронний лист до списку листування перекладачів: trans-uk@lists.fedoraproject.org.
місцевий |