- Команда gzip в Linux
- Введение
- Синтаксис
- Опции
- Сжатие файлов с помощью gzip
- Без сохранения исходного файла
- С сохранением исходного файла
- Подробный вывод
- Сжатие нескольких файлов
- Сжатие всех файлов в каталоге
- Изменение степени сжатия
- Использование стандартного ввода
- Распаковка файлов с помощью gzip
- Без сохранения сжатого файла
- С сохранением сжатого файла
- Распаковка нескольких файлов
- Распаковка всех файлов в каталоге
- Список содержимого сжатого файла
- Заключение
Команда gzip в Linux
В Linux команда gzip предназначена для сжатия данных без потерь с помощью одноименной утилиты, цель использования которой — экономия дискового пространства.
- Введение
- Синтаксис
- Опции
- Сжатие файлов с помощью gzip
- Без сохранения исходного файла
- С сохранением исходного файла
- Подробный вывод
- Сжатие нескольких файлов
- Сжатие всех файлов в каталоге
- Изменение степени сжатия
- Использование стандартного ввода
- Без сохранения сжатого файла
- С сохранением сжатого файла
- Распаковка нескольких файлов
- Распаковка всех файлов в каталоге
Введение
gzip — один из самых популярных алгоритмов сжатия, который позволяет уменьшить размер файла и сохранить исходный режим файла, владельца и отметку времени.
Команда gzip сжимает только отдельные файлы и создает сжатый файл для каждого заданного файла. По соглашению имя сжатого файла должно заканчиваться на .gz или .z .
Если вы хотите сжать несколько файлов или каталогов в один файл, сначала вам нужно создать архив tar , а затем сжать .tar файл с помощью gzip . Файл, оканчивающийся на .tar.gz или .tgz является архивом tar , сжатым с помощью gzip .
Команда gzip чаще всего используется для сжатия текстовых файлов, архивов tar и веб-страниц. Не используйте её для сжатия изображений, аудио, PDF-документов и других двоичных файлов, поскольку они уже сжаты.
С помощью этой утилиты можно сжимать только обычные файлы. Символические ссылки игнорируются.
Синтаксис
Опции
-c, —stdout Печатать в стандартный вывод, сохранять исходные файлы без изменений -d, —decompress Распаковать -f, —force Принудительно перезаписать выходной файл и сжать ссылки -k, —keep Сохранить (не удалять) входные файлы l, —list Вывести содержимое сжатого файла -n, —no-name Не сохранять и не восстанавливать исходное имя и отметку времени -N, —name Сохранить или восстановить исходное имя и отметку времени -q, —quiet Подавить все предупреждения -r, —recursive Рекурсивно работать с каталогами -S, —suffix=SUF Использовать суффикс SUF для сжатых файлов —synchronous Синхронный вывод (безопаснее при сбое системы, но медленнее) -t, —test Проверить целостность сжатого файла -v, —verbose Подробный режим -1, —fast Сжимать быстрее -9, —best Сжимать лучше
Сжатие файлов с помощью gzip
Работать будем с четырьмя файлами, находящимися в каталоге Directory :
oleg@mobile:~/Directory:$ ls -l итого 16 -rw-r--r-- 1 oleg users 806 ноя 1 13:33 usa-capitals-ru.txt -rw-r--r-- 1 oleg users 1706 ноя 1 13:33 usa-states-capitals.txt -rw-r--r-- 1 oleg users 1136 ноя 1 13:33 usa-states-ru.txt -rw-r--r-- 1 oleg users 469 ноя 1 13:33 usa-states.txt oleg@mobile:~/Directory:$
Без сохранения исходного файла
Чтобы сжать один файл, вызовите команду gzip , за которой должно следовать имя файла:
oleg@mobile:~/Directory:$ gzip usa-states.txt
Команда создаст файл usa-states.txt.gz и удалит исходный файл.
oleg@mobile:~/Directory:$ ls -l итого 16 -rw-r--r-- 1 oleg users 806 ноя 1 13:33 usa-capitals-ru.txt -rw-r--r-- 1 oleg users 1706 ноя 1 13:33 usa-states-capitals.txt -rw-r--r-- 1 oleg users 1136 ноя 1 13:33 usa-states-ru.txt -rw-r--r-- 1 oleg users 326 ноя 1 13:33 usa-states.txt.gz oleg@mobile:~/Directory:$
По умолчанию gzip сохраняет временную метку, режим, владельца и имя исходного файла в сжатом файле.
С сохранением исходного файла
Если вы хотите сохранить входной (исходный) файл, используйте опцию -k :
oleg@mobile:~/Directory:$ gzip -k usa-capitals-ru.txt
oleg@mobile:~/Directory:$ ls -l итого 20 -rw-r--r-- 1 oleg users 806 ноя 1 13:33 usa-capitals-ru.txt -rw-r--r-- 1 oleg users 433 ноя 1 13:33 usa-capitals-ru.txt.gz -rw-r--r-- 1 oleg users 1706 ноя 1 13:33 usa-states-capitals.txt -rw-r--r-- 1 oleg users 1136 ноя 1 13:33 usa-states-ru.txt -rw-r--r-- 1 oleg users 326 ноя 1 13:33 usa-states.txt.gz oleg@mobile:~/Directory:$
Другой вариант сохранения исходного файла — использование опции -c , которая указывает gzip на запись в стандартный вывод и перенаправление вывода в файл:
oleg@mobile:~/Directory:$ gzip -c usa-states-ru.txt > usa-states-ru.txt.gz
oleg@mobile:~/Directory:$ ls -l итого 24 -rw-r--r-- 1 oleg users 806 ноя 1 13:33 usa-capitals-ru.txt -rw-r--r-- 1 oleg users 433 ноя 1 13:33 usa-capitals-ru.txt.gz -rw-r--r-- 1 oleg users 1706 ноя 1 13:33 usa-states-capitals.txt -rw-r--r-- 1 oleg users 1136 ноя 1 13:33 usa-states-ru.txt -rw-r--r-- 1 oleg users 580 ноя 1 14:40 usa-states-ru.txt.gz -rw-r--r-- 1 oleg users 326 ноя 1 13:33 usa-states.txt.gz oleg@mobile:~/Directory:$
Подробный вывод
Используйте опцию -v , если вы хотите увидеть процентное уменьшение и имена обрабатываемых файлов:
oleg@mobile:~/Directory:$ gzip -v usa-states-capitals.txt usa-states-capitals.txt: 56.1% -- replaced with usa-states-capitals.txt.gz oleg@mobile:~/Directory:$
Сжатие нескольких файлов
Обновляем содержимое каталога и проверяем:
oleg@mobile:~/Directory:$ cp ../Directory_1/*.txt . oleg@mobile:~/Directory:$ ls -l итого 16 -rw-r--r-- 1 oleg users 806 ноя 1 14:51 usa-capitals-ru.txt -rw-r--r-- 1 oleg users 1706 ноя 1 14:51 usa-states-capitals.txt -rw-r--r-- 1 oleg users 1136 ноя 1 14:51 usa-states-ru.txt -rw-r--r-- 1 oleg users 469 ноя 1 14:51 usa-states.txt oleg@mobile:~/Directory:$
Вы также можете передать несколько файлов в качестве аргументов команде. Например, чтобы сжать файлы с именами usa-capitals-ru.txt , usa-states-capitals.txt , вы должны выполнить следующую команду:
oleg@mobile:~/Directory:$ gzip usa-capitals-ru.txt usa-states-capitals.txt
Приведенная выше команда создаст два сжатых файла: usa-capitals-ru.txt.gz , usa-states-capitals.txt.gz :
oleg@mobile:~/Directory:$ ls -l итого 16 -rw-r--r-- 1 oleg users 433 ноя 1 14:51 usa-capitals-ru.txt.gz -rw-r--r-- 1 oleg users 791 ноя 1 14:51 usa-states-capitals.txt.gz -rw-r--r-- 1 oleg users 1136 ноя 1 14:51 usa-states-ru.txt -rw-r--r-- 1 oleg users 469 ноя 1 14:51 usa-states.txt oleg@mobile:~/Directory:$
Сжатие всех файлов в каталоге
Обновляем содержимое каталога, а затем сжимаем все файлы , используя опцию -r :
oleg@mobile:~/Directory:$ cp ../Directory_1/*.txt . oleg@mobile:~/Directory:$ ls -l итого 16 -rw-r--r-- 1 oleg users 806 ноя 1 14:56 usa-capitals-ru.txt -rw-r--r-- 1 oleg users 1706 ноя 1 14:56 usa-states-capitals.txt -rw-r--r-- 1 oleg users 1136 ноя 1 14:56 usa-states-ru.txt -rw-r--r-- 1 oleg users 469 ноя 1 14:56 usa-states.txt oleg@mobile:~/Directory:$ gzip -r . oleg@mobile:~/Directory:$ ls -l итого 16 -rw-r--r-- 1 oleg users 433 ноя 1 14:56 usa-capitals-ru.txt.gz -rw-r--r-- 1 oleg users 791 ноя 1 14:56 usa-states-capitals.txt.gz -rw-r--r-- 1 oleg users 580 ноя 1 14:56 usa-states-ru.txt.gz -rw-r--r-- 1 oleg users 326 ноя 1 14:56 usa-states.txt.gz oleg@mobile:~/Directory:$
gzip будет рекурсивно проходить через всю структуру каталогов и сжимать все файлы в каталоге и его подкаталогах.
Изменение степени сжатия
gzip позволяет указать диапазон степеней сжатия от 1 до 9. -1 или —fast означает самую высокую скорость сжатия с минимальной степенью сжатия, -9 или —best указывает самую медленную скорость сжатия с максимальной степенью сжатия. Степень сжатия по умолчанию — -6 .
Например, чтобы получить максимальное сжатие, вы должны запустить:
Сжатие — это задача с интенсивным использованием ЦП, чем выше степень сжатия, тем больше времени занимает процесс.
Использование стандартного ввода
Чтобы создать файл .gz из стандартного ввода, направьте вывод команды в gzip . Например, чтобы создать сжатую резервную копию базы данных MySQL, вы должны запустить:
oleg@mobile:~/Directory:$ sudo mysqldump -u oleg -p linuxcookbookru | gzip -c > linuxcookbookru.sql.gz Enter password: oleg@mobile:~/Directory:$
Вывод mysqldump команды будет вводом для gzip .
oleg@mobile:~/Directory:$ ls -l итого 21928 -rw-r--r-- 1 oleg users 22432972 ноя 1 15:05 linuxcookbookru.sql.gz -rw-r--r-- 1 oleg users 433 ноя 1 14:56 usa-capitals-ru.txt.gz -rw-r--r-- 1 oleg users 791 ноя 1 14:56 usa-states-capitals.txt.gz -rw-r--r-- 1 oleg users 580 ноя 1 14:56 usa-states-ru.txt.gz -rw-r--r-- 1 oleg users 326 ноя 1 14:56 usa-states.txt.gz oleg@mobile:~/Directory:$
Распаковка файлов с помощью gzip
Без сохранения сжатого файла
Чтобы распаковать .gz файл, используйте опцию -d :
oleg@mobile:~/Directory:$ gzip -d linuxcookbookru.sql.gz
Другая команда, которую вы можете использовать для распаковки файла, — это gunzip . Эта команда в основном является псевдонимом gzip -d :
oleg@mobile:~/Directory:$ gunzip usa-states.txt.gz
Смотрим результаты двух последних операций:
oleg@mobile:~/Directory:$ ls -l итого 96164 -rw-r--r-- 1 oleg users 98445988 ноя 1 15:05 linuxcookbookru.sql -rw-r--r-- 1 oleg users 433 ноя 1 14:56 usa-capitals-ru.txt.gz -rw-r--r-- 1 oleg users 791 ноя 1 14:56 usa-states-capitals.txt.gz -rw-r--r-- 1 oleg users 580 ноя 1 14:56 usa-states-ru.txt.gz -rw-r--r-- 1 oleg users 469 ноя 1 14:56 usa-states.txt oleg@mobile:~/Directory:$
Возможно, вам будет легче запомнить gunzip чем gzip -d .
С сохранением сжатого файла
Так же, как и при сжатии файла, опция -k указывает gzip сохранить входной файл, в данном случае это сжатый файл:
oleg@mobile:~/Directory:$ gzip -dk usa-states-ru.txt.gz
oleg@mobile:~/Directory:$ ls -l итого 96164 -rw-r--r-- 1 oleg users 98445988 ноя 1 15:05 linuxcookbookru.sql -rw-r--r-- 1 oleg users 433 ноя 1 14:56 usa-capitals-ru.txt.gz -rw-r--r-- 1 oleg users 791 ноя 1 14:56 usa-states-capitals.txt.gz -rw-r--r-- 1 oleg users 1136 ноя 1 14:56 usa-states-ru.txt -rw-r--r-- 1 oleg users 580 ноя 1 14:56 usa-states-ru.txt.gz -rw-r--r-- 1 oleg users 469 ноя 1 14:56 usa-states.txt oleg@mobile:~/Directory:$
Распаковка нескольких файлов
Чтобы распаковать несколько файлов одновременно, передайте имена файлов в gzip в качестве аргументов:
oleg@mobile:~/Directory:$ gzip -d usa-capitals-ru.txt.gz usa-states-capitals.txt.gz
Распаковка всех файлов в каталоге
При использовании с опциями -d и -r gzip рекурсивно распаковывает все файлы в заданном каталоге:
oleg@mobile:~/Directory:$ gzip -dr .
Список содержимого сжатого файла
При использовании с опцией -l gzip показывает статистику о данных сжатых файлах. Вывод будет включать имя несжатого файла, сжатый и несжатый размер и степень сжатия:
oleg@mobile:~/Directory:$ gzip -l usa-states-ru.txt.gz compressed uncompressed ratio uncompressed_name 580 1136 52.1% usa-states-ru.txt oleg@mobile:~/Directory:$
Чтобы получить больше информации, добавьте опцию -v :
oleg@mobile:~/Directory:$ gzip -lv usa-states-ru.txt.gz method crc date time compressed uncompressed ratio uncompressed_name defla 215202e6 Nov 1 14:56 580 1136 52.1% usa-states-ru.txt oleg@mobile:~/Directory:$
Заключение
Команда gzip Linux позволяет сжимать и распаковывать файлы. С помощью этой утилиты вы можете уменьшить размер заданного файла.