Сохраните магические архивы воздушного судна с помощью tar

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/CompressionandArchivingGroup(["Compression and Archiving"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/touch("File Creating/Updating") linux/BasicFileOperationsGroup -.-> linux/rm("File Removing") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/FileandDirectoryManagementGroup -.-> linux/mkdir("Directory Creating") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/CompressionandArchivingGroup -.-> linux/tar("Archiving") linux/CompressionandArchivingGroup -.-> linux/gzip("Gzip") subgraph Lab Skills linux/ls -.-> lab-271397{{"Сохраните магические архивы воздушного судна с помощью tar"}} linux/touch -.-> lab-271397{{"Сохраните магические архивы воздушного судна с помощью tar"}} linux/rm -.-> lab-271397{{"Сохраните магические архивы воздушного судна с помощью tar"}} linux/cd -.-> lab-271397{{"Сохраните магические архивы воздушного судна с помощью tar"}} linux/mkdir -.-> lab-271397{{"Сохраните магические архивы воздушного судна с помощью tar"}} linux/grep -.-> lab-271397{{"Сохраните магические архивы воздушного судна с помощью tar"}} linux/tar -.-> lab-271397{{"Сохраните магические архивы воздушного судна с помощью tar"}} linux/gzip -.-> lab-271397{{"Сохраните магические архивы воздушного судна с помощью tar"}} end

Создание структуры каталогов для архивирования

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

Сначала перейдем в каталог по умолчанию:

cd ~/project

Теперь создадим каталог с именем document_library с тремя подкаталогами: reports, specifications и references:

mkdir -p ~/project/document_library/{reports,specifications,references}

Команда mkdir создает каталоги, а опция -p позволяет создавать родительские каталоги, если они не существуют. Фигурные скобки {} используются для создания нескольких подкаталогов сразу.

Далее создадим несколько примеров файлов в каждом из этих каталогов:

touch ~/project/document_library/reports/{quarterly,annual,monthly}.txt
touch ~/project/document_library/specifications/{product,service,system}.txt
touch ~/project/document_library/references/{guide,manual,handbook}.txt

Команда touch создает пустые файлы. В данном случае мы создаем по три текстовых файла в каждом подкаталоге.

Проверим, что наша структура каталогов была создана правильно, используя команду ls с опцией -R для рекурсивного перечисления содержимого каталогов:

ls -R ~/project/document_library

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

/home/labex/project/document_library:
references  reports  specifications

/home/labex/project/document_library/references:
guide.txt  handbook.txt  manual.txt

/home/labex/project/document_library/reports:
annual.txt  monthly.txt  quarterly.txt

/home/labex/project/document_library/specifications:
product.txt  service.txt  system.txt

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

Создание архива с использованием tar

Теперь, когда мы настроили нашу структуру каталогов, давайте используем команду tar для создания архива всего каталога document_library. Команда tar является многофункциональной и имеет множество опций, но в данный момент мы сосредоточимся на наиболее распространенных из них.

Базовый синтаксис создания архива с помощью tar выглядит следующим образом:

tar [опции] [имя_архива] [файлы или каталоги для архивирования]

Общие опции включают:

  • -c: Создать новый архив
  • -z: Сжать архив с использованием gzip
  • -v: Режим подробного вывода (показать ход выполнения)
  • -f: Указать имя файла архива
  • -C: Перейти в указанный каталог перед выполнением операций

Создадим сжатый архив нашего каталога document_library:

tar -czvf ~/project/documents_archive.tar.gz -C ~/project document_library

В этой команде:

  • -c сообщает tar создать новый архив
  • -z сообщает tar сжать архив с использованием gzip
  • -v включает режим подробного вывода, показывая обрабатываемые файлы
  • -f ~/project/documents_archive.tar.gz указывает имя файла архива
  • -C ~/project сообщает tar перейти в каталог ~/project перед архивированием
  • document_library - это каталог, который мы хотим архивировать

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

Чтобы убедиться, что архив был создан, проверим его наличие и размер:

ls -lh ~/project/documents_archive.tar.gz

Вывод должен показать что-то вроде этого:

-rw-r--r-- 1 labex labex 237 Sep 22 10:00 /home/labex/project/documents_archive.tar.gz

Опции -lh с командой ls показывают подробную информацию, включая размер файла в человекочитаемом формате. Фактический размер файла может отличаться, но должен быть относительно небольшим, так как наши примеры файлов пустые.

Поздравляем! Вы успешно создали сжатый архив своей структуры каталогов. На следующем этапе мы узнаем, как просмотреть содержимое этого архива без его извлечения.

Просмотр содержимого архива

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

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

tar -tvf ~/project/documents_archive.tar.gz

В этой команде:

  • -t сообщает tar перечислить содержимое архива
  • -v включает режим подробного вывода, показывая подробную информацию
  • -f ~/project/documents_archive.tar.gz указывает файл архива для проверки

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

drwxr-xr-x labex/labex     0 2023-09-22 10:00 document_library/
drwxr-xr-x labex/labex     0 2023-09-22 10:00 document_library/references/
-rw-r--r-- labex/labex     0 2023-09-22 10:00 document_library/references/guide.txt
-rw-r--r-- labex/labex     0 2023-09-22 10:00 document_library/references/handbook.txt
-rw-r--r-- labex/labex     0 2023-09-22 10:00 document_library/references/manual.txt
drwxr-xr-x labex/labex     0 2023-09-22 10:00 document_library/reports/
-rw-r--r-- labex/labex     0 2023-09-22 10:00 document_library/reports/annual.txt
-rw-r--r-- labex/labex     0 2023-09-22 10:00 document_library/reports/monthly.txt
-rw-r--r-- labex/labex     0 2023-09-22 10:00 document_library/reports/quarterly.txt
drwxr-xr-x labex/labex     0 2023-09-22 10:00 document_library/specifications/
-rw-r--r-- labex/labex     0 2023-09-22 10:00 document_library/specifications/product.txt
-rw-r--r-- labex/labex     0 2023-09-22 10:00 document_library/specifications/service.txt
-rw-r--r-- labex/labex     0 2023-09-22 10:00 document_library/specifications/system.txt

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

Если вы хотите найти конкретные файлы в архиве, вы можете передать вывод в grep. Например, чтобы найти все файлы, в названии которых есть "annual":

tar -tvf ~/project/documents_archive.tar.gz | grep annual

Должно отобразиться следующее:

-rw-r--r-- labex/labex     0 2023-09-22 10:00 document_library/reports/annual.txt

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

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

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

Для демонстрации этого сначала имитируем ситуацию, когда наша исходная структура каталогов потеряна. Мы удалим каталог document_library:

rm -rf ~/project/document_library

Команда rm удаляет файлы и каталоги, а опции -rf сообщают ей работать рекурсивно и принудительно удалять без запроса подтверждения. Будьте осторожны при использовании этой команды в реальных сценариях, так как она безвозвратно удаляет файлы.

Убедимся, что каталог удален:

ls -la ~/project

В списке не должно быть document_library, но файл documents_archive.tar.gz должен остаться.

Теперь извлечем архив, чтобы восстановить наши файлы. Базовый синтаксис извлечения с помощью tar выглядит так:

tar [опции] [имя_архива]

Общие опции извлечения включают:

  • -x: Извлечь файлы из архива
  • -z: Распаковать с использованием gzip
  • -v: Режим подробного вывода (показать ход выполнения)
  • -f: Указать имя файла архива
  • -C: Перейти в указанный каталог перед извлечением

Извлечем наш архив:

tar -xzvf ~/project/documents_archive.tar.gz -C ~/project

В этой команде:

  • -x сообщает tar извлечь файлы
  • -z сообщает tar распаковать сжатый с помощью gzip архив
  • -v включает режим подробного вывода, показывая извлекаемые файлы
  • -f ~/project/documents_archive.tar.gz указывает файл архива
  • -C ~/project сообщает tar извлечь файлы в каталог ~/project

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

Убедимся, что наша структура каталогов восстановлена:

ls -R ~/project/document_library

Вы должны увидеть ту же структуру каталогов и файлы, которые мы изначально создали:

/home/labex/project/document_library:
references  reports  specifications

/home/labex/project/document_library/references:
guide.txt  handbook.txt  manual.txt

/home/labex/project/document_library/reports:
annual.txt  monthly.txt  quarterly.txt

/home/labex/project/document_library/specifications:
product.txt  service.txt  system.txt

Если вы хотите извлечь только определенные файлы из архива, вы можете указать их пути после имени архива. Например, чтобы извлечь только каталог reports:

mkdir -p ~/project/extracted_reports
tar -xzvf ~/project/documents_archive.tar.gz -C ~/project/extracted_reports document_library/reports

Это извлечет только каталог reports и его содержимое в каталог extracted_reports.

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

Резюме

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

  1. Создание структуры каталогов с файлами для подготовки к архивированию
  2. Создание сжатого архива с использованием команды tar с опциями -czvf
  3. Просмотр содержимого архива без его извлечения с использованием опций -tvf
  4. Извлечение файлов из архива для восстановления данных с использованием опций -xzvf

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

Не забудьте о ключевых опциях команды tar:

  • -c: Создать новый архив
  • -x: Извлечь файлы из архива
  • -t: Перечислить содержимое архива
  • -z: Использовать сжатие gzip
  • -v: Режим подробного вывода (показать ход выполнения)
  • -f: Указать имя файла архива
  • -C: Перейти в указанный каталог перед выполнением операций

Теперь вы можете уверенно использовать команду tar для создания резервных копий, обмена файлами и восстановления данных в своей среде Linux.