- Команда Gzip в Linux
- Синтаксис команды gzip
- Сжатие файлов с помощью gzip
- Сохраните исходный файл
- Подробный вывод
- Сжать несколько файлов
- Сжать все файлы в каталоге
- Измените уровень сжатия
- Стандартный ввод
- Распаковка файлов с помощью gzip
- Сохраните сжатый файл
- Распаковать несколько файлов
- Распаковать все файлы в каталоге
- Список содержимого сжатого файла
- Выводы
- Создать архив linux gzip
- Примеры использования
- 1. Сжатие одного файла
- 2. Одновременное сжатие нескольких файлов
- 3. Сжатие одного файла с сохранением оригинала
- 4. Восстановление оригинальной версии файла из сжатой версии
- 5. Сжатие файла с указанием степени сжатия
- 6. Создание сжатого архива со всеми файлами из директории
- 7. Проверка целостности сжатой версии файла
- 8. Получение информации о сжатом файле
- Сжатие и архивация файлов с помощью Gzip, Zip и Tar
- Архивация с помощью Tar
Команда Gzip в Linux
Gzip — один из самых популярных алгоритмов сжатия, который позволяет уменьшить размер файла и сохранить исходный режим файла, право собственности и временную метку.
Gzip также относится к .gz файлов .gz и утилите gzip которая используется для сжатия и распаковки файлов.
В этом руководстве мы покажем вам, как использовать команду gzip .
Синтаксис команды gzip
Общий синтаксис команды gzip следующий:
Gzip сжимает только отдельные файлы и создает сжатый файл для каждого заданного файла. По соглашению, имя файла, сжатого с помощью Gzip, должно заканчиваться на .gz или .z .
Если вы хотите сжать несколько файлов или каталогов в один файл, сначала вам нужно создать архив Tar, а затем сжать файл .tar с помощью Gzip. Файл с .tar.gz или .tgz представляет собой архив Tar, сжатый с помощью Gzip.
Gzip чаще всего используется для сжатия текстовых файлов, архивов Tar и веб-страниц. Не используйте Gzip для сжатия изображений, аудио, документов PDF и других двоичных файлов, поскольку они уже сжаты.
gzip может сжимать только обычные файлы. Символьные ссылки игнорируются.
Сжатие файлов с помощью gzip
Чтобы сжать отдельный файл, вызовите команду gzip за которой следует имя файла:
gzip создаст файл filename.gz и удалит исходный файл.
По умолчанию gzip сохраняет в сжатом файле метку времени, режим, владельца и имя исходного файла.
Сохраните исходный файл
Если вы хотите сохранить исходный (исходный) файл, используйте параметр -k :
Другой вариант сохранить исходный файл — использовать параметр -c который сообщает gzip о необходимости записи в стандартный вывод и перенаправления вывода в файл:
gzip -c filename > filename.gz
Подробный вывод
Используйте параметр -v если вы хотите увидеть процентное сокращение и имена обрабатываемых файлов:
filename: 7.5% -- replaced with filename.gz
Сжать несколько файлов
Вы также можете передать несколько файлов в качестве аргументов команде. Например, чтобы сжать файлы с именами file1 , file2 , file3 , вы должны выполнить следующую команду:
Приведенная выше команда создаст три сжатых файла: file1.gz , file2.gz , file3.gz .
Сжать все файлы в каталоге
Чтобы сжать все файлы в данном каталоге, используйте параметр -r :
gzip будет рекурсивно проходить по всей структуре каталогов и сжимать все файлы в каталоге и его подкаталогах.
Измените уровень сжатия
gzip позволяет указать диапазон уровней сжатия от 1 до 9. -1 или —fast означает самую высокую скорость сжатия с минимальной степенью сжатия, -9 или —best указывает на самую —best скорость сжатия с максимальной степенью сжатия. Уровень сжатия по умолчанию -6 .
Например, чтобы получить максимальное сжатие, вы должны запустить:
Сжатие — это задача, интенсивно использующая процессор, и чем выше уровень сжатия, тем больше времени занимает процесс.
Стандартный ввод
Чтобы создать файл .gz из стандартного .gz , перенаправьте вывод команды в gzip . Например, чтобы создать резервную копию базы данных MySQL в формате Gzip, вы должны выполнить:
mysqldump database_name | gzip -c > database_name.sql.gz
Вывод команды mysqldump будет вводиться для gzip .
Распаковка файлов с помощью gzip
Чтобы распаковать файл .gz , используйте параметр -d :
Другая команда, которую вы можете использовать для распаковки Gzip-файла, — это gunzip . Эта команда в основном является псевдонимом для gzip -d :
Возможно, вам будет проще запомнить gunzip чем gzip -d .
Сохраните сжатый файл
Как и при сжатии файла, параметр -k сообщает gzip нужно сохранить входной файл, в данном случае это сжатый файл:
Распаковать несколько файлов
Чтобы распаковать сразу несколько файлов, передайте имена файлов в gzip качестве аргументов:
gzip -d file1.gz file2.gz file3.gz
Распаковать все файлы в каталоге
При использовании с параметрами -d и -r gzip рекурсивно распаковывает все файлы в указанном каталоге:
Список содержимого сжатого файла
При использовании с параметром -l gzip показывает статистику по данным сжатым файлам:
Вывод будет включать имя несжатого файла, сжатый и несжатый размер и степень сжатия:
compressed uncompressed ratio uncompressed_name 130 107 7.5% filename
Чтобы получить дополнительную информацию, добавьте параметр -v :
method crc date time compressed uncompressed ratio uncompressed_name defla a9b9e776 Sep 3 21:20 130 107 7.5% filename
Выводы
С помощью Gzip вы можете уменьшить размер данного файла. Команда gzip позволяет сжимать и распаковывать файлы.
Для получения дополнительной информации о команде gzip обратитесь к странице документации Gnu gzip .
Если у вас есть вопросы, оставьте комментарий ниже.
Создать архив linux gzip
Команда gzip предназначена для сжатия данных без потерь с помощью одноименной утилиты, использующей алгоритм Лемпела-Зива (LZ77) с кодированием Хаффмана. Целью использования данной утилиты является экономия дискового пространства. Упомянутый алгоритм позволяет достичь худшей степени сжатия данных, чем те, которые реализованы в рамках утилит bzip2 и xz. При этом данный алгоритм является стандартным алгоритмом утилиты zip и используется по умолчанию в архивах формата ZIP. Кроме того, он является менее ресурсоемким, чем алгоритмы, которые реализованы в рамках утилит bzip2 и xz. Последнее обстоятельство обуславливает актуальность данной утилиты для низкопроизводительных систем.
Базовый синтаксис команды выглядит следующим образом:
Чаще всего gzip используется вообще без каких-либо параметров, причем в качестве аргументов может передаваться неограниченное количество имен файлов, которые следует сжать. По умолчанию оригинальные версии файлов заменяются на их сжатые версии с соответствующими метаданными (то есть, меткой времени модификации, правами доступа, именами владельца и группы владельцев и так далее). Если вас не устраивает такое положение дел, вы можете воспользоваться параметром -k для сохранения оригинальных версий файлов. Параметры из диапазона от -1 до -9 позволяют задать степень сжатия (от самой низкой до самой высокой соответственно), при этом чем выше степень сжатия, тем больше системных ресурсов требуется утилите. Параметр -t предназначен для тестирования целостности сжатого файла и не оказывает какого-либо влияния на него (следует комбинировать его с параметром -v для подробного вывода). Параметр -l также не оказывает никакого влияния на сжатый файл и предназначен для получения информации об архиве (размеров сжатого и не сжатого файлов, степени сжатия и имени оригинального файла). Параметр -d позволяет восстановить оригинальные версии файлов с переданными именами на основе их сжатых версий.
Если же вам нужно создать архив с несколькими файлами внутри, одной утилиты gzip будет явно мало. Для этой цели также понадобится утилита tar, с помощью которой можно создать архив с файлами, после чего сжать этот архив с помощью утилиты gzip. Например, вы можете использовать следующую последовательность команд для создания архива с именем archive.tar.gz:
$ tar -cf archive.tar
$ gzip archive.tar
Параметры -c и -f утилиты tar предназначены для указания на необходимость добавления всех файлов в один архив (-c) и чтения имени файла архива из следующего аргумента (-f). Альтернативным вариантом является замена последней команды на параметр -z утилиты tar, позволяющий автоматически сжать полученный архив с помощью gzip:
Примеры использования
1. Сжатие одного файла
В результате оригинальный файл text.txt будет заменен на свою сжатую версию text.txt.gz.
2. Одновременное сжатие нескольких файлов
$ gzip text1.txt text2.txt text3.txt
В этом случае также все оригинальные версии файлов (text1.txt, text2.txt, text3.txt) будут заменены на сжатые версии (text1.txt.gz, text2.txt.gz, text3.txt.gz). Добавление нескольких файлов в единый файл архива будет рассмотрено ниже.
3. Сжатие одного файла с сохранением оригинала
Теперь оригинальный файл text.txt будет оставлен в директории вместе со сжатой версией text.txt.gz.
4. Восстановление оригинальной версии файла из сжатой версии
В результате сжатая версия файла text.txt.gz будет заменена на его оригинальную версию text.txt. Если вам нужно сохранить сжатую версию, следует воспользоваться параметром -k таким же образом, как было показано выше.
5. Сжатие файла с указанием степени сжатия
Степень сжатия файла может регулироваться с помощью параметров из диапазона от -1 (минимальная) до -9 (максимальная). Команда для сжатия файла с минимальной степенью сжатия:
С максимальной степенью сжатия:
При этом параметр -1 может заменяться на параметр —fast, а параметр -9 — на параметр —best.
6. Создание сжатого архива со всеми файлами из директории
В результате будет создан архив etc.tar.gz с файлами из директории /etc/.
7. Проверка целостности сжатой версии файла
$ gzip -tv text.txt.gz
text.txt.gz: OK
Для проверки целостности сжатых версий файлов используются контрольные суммы (CRC). В случае повреждения сжатой версии файла выводится сообщение об ошибке, в противном случае — слово «OK».
8. Получение информации о сжатом файле
$ gzip -l enums.c.gz
compressed uncompressed ratio uncompressed_name
253 371 38.8% enums.c
Очевидно, что в столбце compressed выводится размер сжатого файла в байтах, в столбце uncompressed — размер несжатого файла в байтах, в столбце ratio — степень сжатия файла, а в столбце uncompressed_name — имя оригинального файла. Вся эта информация хранится в заголовке сжатого файла.
Сжатие и архивация файлов с помощью Gzip, Zip и Tar
Сжатые файлы занимают меньше места на диске и загружаются из сети быстрее, чем большие, несжатые файлы. Вы можете сжать файлы Linux свободно распространяемыми утилитами сжатия Gzip или Zip , такой формат распознаётся большинством операционных систем.
По умолчанию, сжатые файлы получают расширение .gz . Команда Gzip создаёт сжатый файл с расширением .gz ; Gunzip извлекает сжатые файлы и удаляет файл .gz .
Чтобы сжать файл, в приглашении оболочки введите следующая команду:
Файл будет сжат и сохранён под именем filename.ext.gz .
Чтобы развернуть сжатый файл введите:
Файл filename.ext.gz при этом удаляется и заменяется файлом filename.ext .
Если вы обмениваетесь файлам с пользователям не Linux, вероятно лучше использовать zip , чтобы избежать проблем совместимости. Red Hat Linux может легко открыть zip или gzip файлы, но не Linux операционные системы могут не справиться с файлами gzip.
Чтобы сжать файл с помощью zip , введите:
В этом примере filename определяет имя создаваемого файла, а files определяет какие файлы вы хотите включить в архив:
Чтобы извлечь содержимое файла zip, введите:
Вы можете сжать с помощью zip или gzip сразу несколько файлов. Перечислите имена файлов, разделив их пробелами.
gzip filename.gz file1 file2 file3 /user/work/school
Приведённая выше команда сожмёт file1 , file2 , file3 и содержимое каталога /user/work/school и поместит их в файл filename.gz .
Архивация с помощью Tar
Tar сохраняет несколько файлов или содержимое каталога или каталогов в одном файле. Это хороший способ создавать резервные копии и архивы. Обычно файлы, сделанные tar, имеют расширение .tar .
Чтобы создать файл tar, введите:
tar -cvf filename.tar files/directories
В этом примере filename.tar определяет имя создаваемого файла, а files/directories определяет какие файлы или каталоги вы хотите включить в новый архив.
Вы можете использовать абсолютные или относительные пути для этих файлов или каталогов (чтобы узнать больше о путях, обратитесь к разделу Смена каталогов с помощью cd в Главе 10 ). Разделите имена файлов и каталогов пробелами.
В показанном ниже примере показано создание файла с абсолютными путями:
tar -cvf foo.tar /home/mine/work /home/mine/school
Указанная выше команда поместит все файлы каталога /work и подкаталога /school в новый файл foo.tar в текущем рабочем каталоге.
Команда tar -cvf foo.tar file1.txt file2.txt file3.txt поместит файлы: file1.txt , file2.txt и file3.txt в новый файл foo.tar .
Чтобы просмотреть содержимое файла tar, введите:
Чтобы извлечь содержимое файла tar, введите:
Эта команда не удаляет файл .tar , а извлекает содержимое .tar в текущий рабочий каталог.
Команда tar не автоматического выполняет сжатия файлов. Вы можете сжать файлы tar выполнив:
Сжатые файлы обычно имеют расширение .tgz и сжимаются при помощи gzip.
Чтобы развернуть сжатый файл tar введите: