Как просмотреть содержимое zip-архива в Linux

LinuxBeginner
Практиковаться сейчас

Введение

Этот учебник проведет вас через процесс просмотра содержимого zip-архива в вашей системе Linux. Независимо от того, являетесь ли вы разработчиком, системным администратором или просто любопытным пользователем Linux, понимание того, как работать с zip-файлами из командной строки, является ценным навыком. Мы рассмотрим основы zip-архивов, продемонстрируем шаги для просмотра их содержимого и предоставим практические примеры использования, которые помогут вам более эффективно управлять своими файлами.

Установка ZIP-утилит

Для работы с zip-архивами в Linux нам необходимо установить соответствующие утилиты. Основные инструменты, которые нам понадобятся, это команды zip и unzip.

Давайте проверим, установлены ли эти утилиты уже в вашей системе. Откройте терминал и выполните следующие команды:

which zip
which unzip

Если эти команды возвращают пути, такие как /usr/bin/zip и /usr/bin/unzip, то инструменты уже установлены. Если вы не видите никакого вывода, нам нужно их установить.

В Ubuntu мы можем установить zip-утилиты с помощью менеджера пакетов apt:

sudo apt update
sudo apt install -y zip unzip

Давайте проверим установку:

zip --version
unzip -v | head -n 1

Вывод должен показать установленные версии zip-утилит, примерно так:

Copyright (c) 1990-2008 Info-ZIP - Type 'zip "-L"' for software license.
UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.

Теперь, когда у нас установлены необходимые инструменты, мы готовы создавать и работать с zip-архивами.

Создание образца Zip-архива

Прежде чем мы узнаем, как просматривать содержимое zip-архива, давайте создадим образец zip-файла для работы. Это даст нам практический пример для использования в этом руководстве.

Сначала давайте создадим каталог для хранения наших образцов файлов. Выполните следующие команды в своем терминале:

mkdir -p ~/project/zip_demo
cd ~/project/zip_demo

Теперь давайте создадим несколько образцов файлов с разным содержимым:

echo "This is a text file for our zip demo." > sample_text.txt
echo "Another text file with different content." > another_text.txt
mkdir -p documents
echo "This file is inside a subdirectory." > documents/nested_file.txt

Давайте убедимся, что наши файлы были созданы правильно:

ls -la
ls -la documents

Вы должны увидеть вывод, похожий на:

total 20
drwxrwxr-x 3 labex labex 4096 Jul 15 10:00 .
drwxr-xr-x 3 labex labex 4096 Jul 15 10:00 ..
-rw-rw-r-- 1 labex labex   39 Jul 15 10:00 another_text.txt
drwxrwxr-x 2 labex labex 4096 Jul 15 10:00 documents
-rw-rw-r-- 1 labex labex   35 Jul 15 10:00 sample_text.txt

total 12
drwxrwxr-x 2 labex labex 4096 Jul 15 10:00 .
drwxrwxr-x 3 labex labex 4096 Jul 15 10:00 ..
-rw-rw-r-- 1 labex labex   36 Jul 15 10:00 nested_file.txt

Теперь давайте создадим zip-архив, содержащий эти файлы:

zip -r sample_archive.zip sample_text.txt another_text.txt documents/

Опция -r указывает команде zip рекурсивно включать все файлы и подкаталоги.

Вы должны увидеть вывод, похожий на:

  adding: sample_text.txt (stored 35 bytes)
  adding: another_text.txt (stored 39 bytes)
  adding: documents/ (stored 0 bytes)
  adding: documents/nested_file.txt (stored 36 bytes)

Теперь мы создали zip-архив с именем sample_archive.zip, который содержит наши образцы файлов и каталогов. В следующем шаге мы узнаем, как просмотреть содержимое этого архива.

Основные методы для просмотра содержимого Zip-архива

Теперь, когда мы создали образец zip-архива, давайте узнаем, как просматривать его содержимое. Основной командой для этого является unzip с различными опциями.

Использование опции -l (List - Список)

Наиболее распространенный способ просмотра содержимого zip-архива - использовать команду unzip с опцией -l. Эта опция отображает таблицу с основной информацией о каждом файле в архиве.

Давайте перейдем в наш каталог zip-demo и посмотрим содержимое нашего образца архива:

cd ~/project/zip_demo
unzip -l sample_archive.zip

Вы должны увидеть вывод, похожий на:

Archive:  sample_archive.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
       35  2023-07-15 10:00   sample_text.txt
       39  2023-07-15 10:00   another_text.txt
        0  2023-07-15 10:00   documents/
       36  2023-07-15 10:00   documents/nested_file.txt
---------                     -------
      110                     4 files

Вывод показывает:

  • Размер каждого файла в байтах
  • Дату и время последнего изменения каждого файла
  • Имя каждого файла или каталога
  • Сводку, показывающую общий размер и количество файлов

Использование опции -Z (ZipInfo)

Другой вариант - использовать опцию -Z, которая предоставляет более краткий список:

unzip -Z sample_archive.zip

Вы должны увидеть вывод, похожий на:

Archive:  sample_archive.zip
Zip file size: 676 bytes, number of entries: 4
-rw-rw-r--  3.0 unx       35 tx defN 23-Jul-15 10:00 sample_text.txt
-rw-rw-r--  3.0 unx       39 tx defN 23-Jul-15 10:00 another_text.txt
drwxrwxr-x  3.0 unx        0 bx stor 23-Jul-15 10:00 documents/
-rw-rw-r--  3.0 unx       36 tx defN 23-Jul-15 10:00 documents/nested_file.txt
4 files, 110 bytes uncompressed, 110 bytes compressed:  0.0%

Этот формат отображает права доступа к файлам, информацию о сжатии и другие детали в более компактной форме.

В следующем шаге мы рассмотрим более продвинутые опции для просмотра содержимого zip-архивов и поймем, как интерпретировать результаты.

Расширенные опции для просмотра содержимого Zip-архива

Теперь давайте рассмотрим некоторые расширенные опции для просмотра содержимого zip-архива, которые предоставляют более подробную информацию о файлах внутри архива.

Использование опции -v (Verbose - Подробный)

Опция -v предоставляет более подробную информацию о каждом файле в архиве, включая метод сжатия, степень сжатия и значения CRC (Cyclic Redundancy Check - циклический избыточный код):

cd ~/project/zip_demo
unzip -v sample_archive.zip

Вы должны увидеть вывод, похожий на:

Archive:  sample_archive.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
      35  Stored       35   0% 2023-07-15 10:00 a1b2c3d4  sample_text.txt
      39  Stored       39   0% 2023-07-15 10:00 e5f6g7h8  another_text.txt
       0  Stored        0   0% 2023-07-15 10:00 00000000  documents/
      36  Stored       36   0% 2023-07-15 10:00 i9j0k1l2  documents/nested_file.txt
--------          -------  ---                            -------
     110             110   0%                            4 files

Этот вывод предоставляет следующую дополнительную информацию:

  • Method (Метод): Метод сжатия, используемый (в данном случае "Stored" означает отсутствие сжатия)
  • Size (Размер): Сжатый размер файла
  • Cmpr (Сжатие): Степень сжатия в процентах
  • CRC-32: Контрольная сумма, используемая для проверки целостности файла

Фильтрация вывода с помощью Grep

Иногда вам может потребоваться проверить, существует ли определенный файл в большом zip-архиве. Вы можете объединить команду unzip -l с grep для поиска определенных файлов:

unzip -l sample_archive.zip | grep "nested_file"

Эта команда покажет только те записи, которые содержат текст "nested_file" в своих именах:

       36  2023-07-15 10:00   documents/nested_file.txt

Подсчет файлов в Zip-архиве

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

unzip -l sample_archive.zip | grep -v "Archive:" | grep -v "Length" | grep -v "-------" | grep -v "^$" | wc -l

Эта команда фильтрует строки заголовка и нижнего колонтитула и подсчитывает оставшиеся строки, которые соответствуют файлам и каталогам в архиве.

Вывод должен быть:

4

Теперь вы знаете, как использовать расширенные опции, чтобы получить более подробную информацию о содержимом zip-архивов, искать определенные файлы и подсчитывать файлы в архиве.

Практические примеры использования

Теперь, когда мы научились просматривать содержимое zip-архивов, давайте рассмотрим несколько практических сценариев, в которых эти навыки могут быть полезны. Мы будем работать с более реалистичными примерами, с которыми вы можете столкнуться при повседневном использовании Linux.

Создание резервной копии (Backup)

Создание резервных копий - распространенный вариант использования zip-архивов. Давайте создадим резервную копию наших файлов конфигурации:

cd ~/project/zip_demo
mkdir -p config
echo "server_name=example.com" > config/server.conf
echo "user=admin" > config/user.conf
echo "port=8080" > config/port.conf

## Create a dated backup archive
zip -r backup_$(date +%Y%m%d).zip config/

Эта команда создает файл резервной копии с сегодняшней датой в формате backup_YYYYMMDD.zip.

Давайте проверим содержимое нашей резервной копии:

unzip -l backup_*.zip

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

Сравнение содержимого архивов

Иногда вам нужно сравнить содержимое двух zip-архивов, чтобы увидеть, что изменилось. Давайте создадим вторую резервную копию с некоторыми изменениями:

## Modify a file
echo "port=9090" > config/port.conf
## Add a new file
echo "debug=true" > config/debug.conf
## Create a new backup
zip -r backup_new.zip config/

Теперь давайте сравним содержимое двух файлов резервных копий:

## List files in the first backup
echo "Original backup:"
unzip -l backup_*.zip | grep -v "Archive:" | grep -v "Length" | grep -v -e "-------"

## List files in the new backup
echo -e "\nNew backup:"
unzip -l backup_new.zip | grep -v "Archive:" | grep -v "Length" | grep -v -e "-------"

Вы заметите, что новая резервная копия включает дополнительный файл debug.conf, а файл port.conf может иметь другой размер из-за наших изменений.

Извлечение определенных файлов

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

## Create a directory for extraction
mkdir -p extracted

## List the contents first
unzip -l backup_new.zip

## Extract only the debug.conf file
unzip backup_new.zip "config/debug.conf" -d extracted/

Давайте проверим, что был извлечен только запрошенный файл:

ls -la extracted/config/

Вы должны увидеть только файл debug.conf в извлеченном каталоге.

Освоив эти практические примеры, вы теперь обладаете навыками эффективного управления zip-архивами в различных реальных сценариях. От создания резервных копий до сравнения содержимого архивов и выборочного извлечения файлов, эти методы помогут вам более эффективно управлять своими файлами в Linux.

Заключение (Summary)

В этом руководстве вы узнали, как работать с zip-архивами в Linux, с акцентом на просмотр их содержимого. Вот краткое изложение того, что мы рассмотрели:

  1. Установка необходимых утилит zip в вашей системе Linux
  2. Создание примеров zip-архивов для работы
  3. Использование основных команд, таких как unzip -l, для просмотра содержимого архива
  4. Изучение расширенных опций, таких как unzip -v, для получения подробной информации
  5. Применение этих навыков в практических сценариях, таких как создание резервных копий (backups), сравнение архивов и извлечение определенных файлов

Эти навыки ценны для управления файлами, устранения неполадок, создания резервных копий и выполнения различных других задач в Linux. Теперь вы можете уверенно проверять zip-архивы, не извлекая их, что может сэкономить время и место на диске при работе с большими архивами.

Некоторые ключевые команды, которые следует запомнить:

  • unzip -l archive.zip: Базовый просмотр содержимого архива
  • unzip -v archive.zip: Подробный (verbose) просмотр с информацией о сжатии
  • unzip -Z archive.zip: Краткий (concise) формат просмотра
  • unzip -l archive.zip | grep "filename": Поиск определенных файлов

Имея в своем распоряжении эти команды, вы можете эффективно управлять zip-архивами в своей среде Linux.