Команда bzless в Ubuntu: просмотр файлов bz2 без распаковки

Введение

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

1. Подготовка окружения и генерация тестового архива bz2

Перед началом работы убедимся в присутствии утилиты в операционной системе и при необходимости инсталлируем пакет bzip2.

Проверка наличия bzless и установка пакета bzip2

Для воспроизведения реальной рабочей ситуации сформируем демонстрационный файл журнала app_server.log, наполнив его типовыми записями событий с помощью echo.

Формирование демонстрационного лог-файла app_server.log

Чтобы сжать полученный журнал и одновременно сохранить исходный файл на диске, выполним архивацию с флагом -k, сформировав файл app_server.log.bz2.

Архивация файла с сохранением оригинала через bzip2 -k

Проконтролируем успешность операции и оценим атрибуты созданного архива командой ls -lh app_server.log.bz2.

Проверка сведений и объема созданного архива

2. Навигация по содержимому архива через bzless

Команда bzless app_server.log.bz2 мгновенно выводит текстовые данные на терминал, исключая фазу предварительной распаковки.
Поскольку утилита построена на возможностях стандартного пейджера less, перемещение по документу осуществляется привычными клавишами стрелок или пробелом, а возврат в командную строку выполняется нажатием q.

Интерактивный просмотр архива с помощью bzless

3. Включение нумерации строк и навигация по шаблонам поиска

Запуск bzless -N app_server.log.bz2 активирует отображение порядкового номера для каждой строчки внутри открытого журнала.
Параметр -N формирует колонку индексов у левого края терминала, что заметно упрощает локализацию сбойных интервалов и сопоставление временных меток при расследовании инцидентов.
Находясь внутри пейджера, достаточно ввести шаблон поиска со слэшем (к примеру, /ERROR), чтобы подсветить интересующие совпадения, а клавиши n и N позволяют переходить к следующему или предыдущему вхождению соответственно.

Отображение номеров строк и контекстный поиск в bzless

4. Сравнение подходов: связка bzcat и bzgrep в автоматизации

Если требуется быстро отобрать только критические события без ручного листания всего документа, вызов bzgrep "ERROR" app_server.log.bz2 отфильтрует и отобразит исключительно строки с маркером ошибки.
Это избавляет системного администратора от рутинного разбора многогигабайтных дампов, когда нужно лишь подтвердить наличие конкретного инцидента.

Выборка ошибок из архива с помощью bzgrep

Конвейер bzcat app_server.log.bz2 | head -n 2 распаковывает архив прямо в стандартный поток вывода, позволяя утилите head мгновенно перехватить первые две строки.
В отличие от bzless, ориентированного на интерактивную работу человека, bzcat служит идеальным поставщиком данных для конвейерной обработки с командами вроде head, grep или awk внутри скриптов автоматизации.

Передача потока из bzcat в команду head через конвейер

Мы детально рассмотрели применение bzless в среде Ubuntu для мгновенного чтения информации из файлов формата .bz2.
Внедрение этой команды в повседневную практику избавит вас от лишних операций с архивами и существенно ускорит диагностику серверных инцидентов.