Введение
Команда tar в Linux представляет собой мощный инструмент для архивирования файлов и каталогов. Этот инструмент позволяет пользователям объединять несколько файлов и каталогов в один архивный файл, что делает хранение, передачу и резервное копирование данных более эффективными. В этом практическом занятии (LabEx) вы научитесь использовать команду tar для создания архивов, просмотра их содержимого и извлечения файлов из них. Эти навыки являются обязательными для системных администраторов, разработчиков и любых пользователей Linux, которые должны эффективно управлять данными.
Создание структуры каталогов для архивирования
Перед тем как создать архив, нам нужны некоторые файлы и каталоги для работы. На этом этапе вы создадите структуру каталогов с различными файлами, которые впоследствии будут архивированы.
Сначала перейдем в каталог по умолчанию:
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 для управления файловыми архивами. Вы отработали несколько важных навыков:
- Создание структуры каталогов с файлами для подготовки к архивированию
- Создание сжатого архива с использованием команды
tarс опциями-czvf - Просмотр содержимого архива без его извлечения с использованием опций
-tvf - Извлечение файлов из архива для восстановления данных с использованием опций
-xzvf
Эти навыки являются фундаментальными для многих операций в Linux, включая процедуры резервного копирования и восстановления, установку программ и управление файлами. Команда tar - это мощный инструмент в среде Linux, и понимание того, как эффективно ее использовать, поможет вам эффективно управлять своими данными.
Не забудьте о ключевых опциях команды tar:
-c: Создать новый архив-x: Извлечь файлы из архива-t: Перечислить содержимое архива-z: Использовать сжатие gzip-v: Режим подробного вывода (показать ход выполнения)-f: Указать имя файла архива-C: Перейти в указанный каталог перед выполнением операций
Теперь вы можете уверенно использовать команду tar для создания резервных копий, обмена файлами и восстановления данных в своей среде Linux.



