Админу на заметку - 30. Z-команды как инструменты работы со сжатыми файлами в Linux

  • Автор:

Z-Commands-Linux-000.pngКаждый, кто работал с Linux знает, что очень многие программы и службы используют для своей работы простые текстовые файлы, в них хранятся настройки программ, из них берутся исходные данные и пишется результат, в них хранятся логи. Для экономии места текстовые файлы часто подвергаются сжатию, поэтому нужно уметь с ними работать. Очень часто начинающие администраторы сначала извлекают их содержимое, но есть способ лучше - так называемые Z-команды - набор служебных утилит, позволяющий работать со сжатыми файлами без распаковки.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Сразу внесем некоторое уточнение, под сжатыми файлами здесь и далее будут подразумеваться файлы сжатые при помощи алгоритма gzip (чаще всего с расширением gz), который является алгоритмом сжатия по умолчанию во многих Linux-дистрибутивах.

zcat

Одна из самых популярных команд для работы с текстом - cat (от concatenate, конкатенация) - позволяющая принять на ввод несколько текстовых файлов и объединить их в один, но чаще всего она используется для вывода содержимого файлов на экран или передачи их содержимого по конвейеру.

Самая распространенная задача - просмотр сжатого файла логов, нет ничего проще:

 zcat /var/log/auth.log.2.gz

Надо просмотреть сразу несколько:

 zcat /var/log/auth.log.2.gz /var/log/auth.log.3.gz

Z-Commands-Linux-001.png

Данный пример приведен нами сугубо в академических целях, потому что так редко кто делает, чаше всего вывод команды cat / zcat используют для обработки другими программами и утилитами. Но обсуждение этого выходит за рамки нашей заметки.

zmore / zless

Как мы уже сказали, использовать cat для просмотра логов не самая лучшая идея, потому что он просто выведет все его содержимое на экран, и вы увидите только конец файла, который поместился в экранный буфер. Поэтому если вам все-таки нужно посмотреть его интерактивно, то следует использовать команды постраничного вывода more или less, для работы со сжатыми файлами существуют их аналоги zmore и zless. Например:

 zless /var/log/auth.log.3.gz

Обе утилиты делают примерно одно и тоже: выводят на экран часть файла по размеру видимой области и позволяют листать его, но less более современна, так как позволяет дополнительно перемещаться по файлу с помощью клавиш со стрелками, more просто пролистывает его от конца к началу.

zgrep

Еще одна очень популярная команда, которая используется для поиска нужных вхождений в текстовых файлах, часто используется в сочетании

cat | grep

Но это излишне, grep прекрасно умеет работать с файлами самостоятельно. Для работы со сжатыми файлами используйте его аналог zgrep:

 zgrep andrey /var/log/auth.log.3.gz

Также zgrep может работать сразу с несколькими файлами, в этом случае в вывод будет добавлена информация в каком именно файле было найдено нужное вхождение:

 zgrep andrey /var/log/auth.log.3.gz  /var/log/auth.log.2.gz

Z-Commands-Linux-002.pngТакже среди Z-команд доступны аналоги egrep и fgrep - zegrep и zfgrep, первая из них рассматривает строку поиска как расширенное регулярное выражение, вторая, наоборот, игнорирует спецсимволы, выполняя поиск по полному соответствию строки вхождения. В настоящее время использование этих команд не рекомендуется, вместо них следует применять grep / zgrep с ключами -E и -F.

zdiff

Чтобы сравнить два сжатых файла следует использовать Z-команду zdiff, она работает точно также, как и ее обычный аналог:

zdiff file1.gz file2.gz

Результатом ее работы будет вывод отличающихся строк с указанием найденных отличий.

Z-Commands-Linux-003.pngПрочие Z-команды

До сих пор мы говорили о gzip, который используется по умолчанию и встречается чаще всего. Но алгоритмы сжатия им не исчерпываются, в Linuх системах также можно встретить bzip2, LZMA и XZ. И для каждого из них есть аналог набора Z-команд, так для bzip2 это будут bzcat, bzgrep и т.п. Для других алгоритмов lzcat, lzgrep и xzcat, xzgrep соответственно.

Z-Commands-Linux-004.png

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

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал



Loading Comments