Gzip linux сжать папку

Команда gzip в Linux

В Linux команда gzip предназначена для сжатия данных без потерь с помощью одноименной утилиты, цель использования которой — экономия дискового пространства.

Использование команды gzip в Linux

  • Введение
  • Синтаксис
  • Опции
  • Сжатие файлов с помощью 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 позволяет сжимать и распаковывать файлы. С помощью этой утилиты вы можете уменьшить размер заданного файла.

    Источник

    Читайте также:  Снимок файловой системы linux
Оцените статью
Adblock
detector