Команда gunzip предназначена для восстановления оригинальных версий файлов, которые были сжаты с помощью утилиты gzip, использующей алгоритм Лемпела-Зива (LZ77) с кодированием Хаффмана. Упомянутый алгоритм позволяет достичь меньшей степени сжатия данных, чем те, которые реализованы в рамках утилит bzip2 и xz. При этом операция декомпрессии является практически такой же нересурсоемкой, как и операция компрессии.
Базовый синтаксис команды выглядит следующим образом:
$ gunzip [параметры] <имена файлов>
Команда gunzip является ничем иным, как символьной ссылкой на утилиту gzip с параметром -d. Чаще всего она используется вообще без каких-либо параметров, причем в качестве аргументов может передаваться неограниченное количество имен сжатых файлов, оригинальные версии которых следует восстановить. По умолчанию сжатые версии файлов заменяются на их оригинальные версии с соответствующими метаданными (то есть, меткой времени модификации, правами доступа, именами владельца и группы владельцев и так далее). Если вас не устраивает такое положение дел, вы можете воспользоваться параметром -k для сохранения сжатых версий файлов. Параметр -t предназначен для тестирования целостности сжатого файла и не оказывает какого-либо влияния на него (следует комбинировать его с параметром -v для подробного вывода). Параметр -l также не оказывает никакого влияния на сжатый файл и предназначен для получения информации об архиве (размеров сжатого и не сжатого файлов, степени сжатия и имени оригинального файла).
Если же вам нужно восстановить оригинальные версии файлов из архива с несколькими файлами внутри, вы не сможете обойтись одной командой gunzip. Для этой цели также понадобится утилита tar, с помощью которой можно извлечь файлы из архива, сжатого с помощью утилиты gzip. Например, вы можете использовать следующую последовательность команд для распаковки архива с именем archive.tar.gz:
$ gunzip archive.tar.gz
$ tar -xf archive.tar
Параметры -x и -f утилиты tar предназначены для указания на необходимость извлечения всех файлов из архива (-c) и чтения имени файла архива из следующего аргумента (-f). Альтернативным вариантом является замена первой команды на параметр -z утилиты tar, позволяющий автоматически восстановить оригинальную версию файла архива с помощью gunzip:
$ tar -xfz archive.tar.gz
$ gunzip text.txt.gz
В результате сжатая версия файла text.txt.gz будет заменена на его оригинальную версию text.txt.
$ gunzip text1.txt.bz2 text2.txt.bz2 text3.txt.bz2
В этом случае также все сжатые версии файлов (text1.txt.gz, text2.txt.gz, text3.txt.gz) будут заменены на оригинальные версии (text1.txt, text2.txt, text3.txt). Распаковка сжатого файла архива будет рассмотрена ниже.
$ gunzip -k text.txt
Теперь сжатая версия файла text.txt.gz будет оставлена в директории вместе с оригинальной версией text.txt.
$ tar -xfz etc.tar.gz
В результате в текущей директории будут сохранены все файлы из архива etc.tar.gz.
$ gunzip -t text.txt.gz
text.txt.gz: OK
Для проверки целостности сжатых версий файлов используются контрольные суммы (CRC). В случае повреждения сжатой версии файла выводится сообщение об ошибке, в противном случае — слово «OK».
$ gzip -l enums.c.gz
compressed uncompressed ratio uncompressed_name
253 371 38.8% enums.c
Очевидно, что в столбце compressed выводится размер сжатого файла в байтах, в столбце uncompressed — размер несжатого файла в байтах, в столбце ratio — степень сжатия файла, а в столбце uncompressed_name — имя оригинального файла. Вся эта информация хранится в заголовке сжатого файла.