Цель урока: Получить глубокое и практическое понимание процесса создания резервных копий и переноса файлов с помощью архиватора tar и утилит сжатия. Мы научимся создавать архивы, просматривать их содержимое, извлекать файлы, а также освоим различные алгоритмы сжатия (gzipbzip2xz) для оптимизации размера архивов.

Часть 1: Теория. Архив vs Сжатие - в чем разница?

Для новичка эти два понятия часто смешиваются, но в мире Linux они строго разделены. Понимание этой разницы - ключ к правильному использованию инструментов.

  • Архивирование: Это процесс "склеивания" множества файлов и каталогов в один-единственный файл, который называется архивом. При этом сохраняется вся структура каталогов и метаданные файлов (права доступа, владельцы, даты). Утилита, которая это делает, - tar (Tape Archive). Изначально она была создана для записи данных на магнитные ленты, но сегодня это стандарт де-факто для архивации в Linux. Сам по себе tar не сжимает данные, он только объединяет их. Архив, созданный tar, часто называют "тарболом" (tarball).

  • Сжатие: Это процесс обработки одного файла с помощью математического алгоритма с целью уменьшения его размера. Алгоритм находит в файле повторяющиеся последовательности данных и заменяет их более короткими ссылками. Утилиты, которые это делают, - gzipbzip2xzОни работают только с одним файлом.

Золотая формула Linux: Чтобы заархивировать и сжать целый каталог, мы сначала архивируем его с помощью tar в один большой файл, а затем сжимаем этот один файл с помощью, например, gzip.

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

Часть 2: Практика. Основные операции с tar

Синтаксис tar может показаться поначалу пугающим из-за множества опций, но на практике 99% времени используются одни и те же комбинации.

Ключевые опции (режимы работы):

  • -c (create): Создать новый архив.

  • -x (extract): Извлечь файлы из архива.

  • -t (list): Показать список содержимого архива, не извлекая его.

Вспомогательные опции (модификаторы):

  • -f (file): Указывает, что мы работаем с файлом на диске, а не с лентой. Эта опция используется почти всегда и за ней сразу следует имя архива.

  • -v (verbose): Подробный режим. Показывать имена файлов в процессе обработки. Очень полезно для контроля.

  • -z (gzip): Использовать сжатие gzip. Файлы обычно получают расширение .tar.gz или .tgz.

  • -j (bzip2): Использовать сжатие bzip2. Сжимает лучше, но медленнее. Расширение .tar.bz2.

  • -J (xz): Использовать сжатие xz. Самое сильное и самое медленное сжатие. Расширение .tar.xz.

Мнемоника для запоминания:

  • Создать архив: Create Verbose File -> cvf.

  • Извлечь архив: Extract Verbose File -> xvf.

  • Добавить сжатие gzip: просто добавьте букву z -> czvf и xzvf.

Подготовка к экспериментам:
Давайте создадим структуру каталогов для наших тестов.

cd ~
mkdir -p project/{src,assets,docs}
touch project/src/main.c
touch project/assets/logo.png
touch project/docs/readme.txt

Теперь у нас есть каталог project с вложенной структурой, которую мы будем архивировать.

Пример 1: Создание простого архива (без сжатия)

# tar -cvf [имя_архива] [что_архивировать]
tar -cvf project.tar project/
архивирование в линукс tar
  • -c: создать.

  • -v: подробно (вы увидите список добавляемых файлов).

  • -f project.tar: в файл с именем project.tar.

  • project/: что именно мы архивируем.
    В результате у вас появится один файл project.tar.

Пример 2: Создание архива со сжатием Gzip (самый частый сценарий)

# tar -czvf [имя_архива] [что_архивировать]
tar -czvf project.tar.gz project/

Теперь у вас есть файл project.tar.gz. Сравните его размер с project.tar ls -lh, и вы увидите, что он значительно меньше.

архив линукс gzip

Пример 3: Просмотр содержимого архива
Представьте, что вы скачали архив и хотите узнать, что внутри, прежде чем его распаковывать.

# tar -tvf [имя_архива]
tar -tvf project.tar.gz
архив в linux
  • -t: list.

  • -v: verbose (покажет права, владельца, размер, как в ls -l).

  • -f: file.
    tar сам поймет, что архив сжат, и покажет вам список файлов.

Пример 4: Извлечение (распаковка) архива
Теперь давайте извлечем наш архив. Сначала удалим оригинальный каталог, чтобы увидеть процесс "с чистого листа".

rm -rf project/
# tar -xzvf [имя_архива]
tar -xzvf project.tar.gz
  • -x: extract.

  • -z: архив сжат gzip.

  • -v: подробно (вы увидите список извлекаемых файлов).

  • -f: из файла.
    После выполнения этой команды у вас снова появится каталог project со всем его содержимым.

извлечь архив в линукс

Часть 3: Продвинутые техники и полезные опции

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

# Извлечь только файл readme.txt из архива
tar -xzvf project.tar.gz project/docs/readme.txt
извлечь архив в линуксе

2. Добавление файла в существующий архив (-r)
ВНИМАНИЕ: Эта опция не работает для сжатых архивов (.tar.gz). Она работает только для простых .tar архивов.

touch new_file.txt
# tar -rvf [имя_архива] [что_добавить]
tar -rvf project.tar new_file.txt

3. Исключение файлов и каталогов (--exclude)
Очень полезно при создании бэкапов, чтобы не включать в архив ненужные файлы кэша, временные файлы и т.д.

# Заархивировать домашний каталог, но исключить папку Downloads
# tar -czvf my_home.tar.gz --exclude='Downloads' ~

# Можно использовать шаблоны и указывать несколько исключений
# tar -czvf project.tar.gz --exclude='*.log' --exclude='tmp/' project/

4. Архивирование из стандартного ввода и вывод в стандартный вывод
Это очень мощная техника для копирования целых деревьев каталогов одной командой, сохраняя все права.

# Копируем каталог project/ в /tmp/project_copy/
mkdir -p /tmp/project_copy
tar -c -f - -C project . | tar -x -f - -C /tmp/project_copy

Разбор магии:

  • tar -c -f - -C project .: Создать (-c) архив, вывести его в стандартный вывод (-f -), перед этим сменив каталог на project (-C project), и заархивировать всё в нем (.).

  • |: Передаем поток с архивом дальше.

  • tar -x -f - -C /tmp/project_copy: Извлечь (-x) архив из стандартного ввода (-f -), предварительно сменив каталог на /tmp/project_copy (-C ...).

Часть 4: Заключение

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

На следующем, 21-м уроке, мы перейдем к одной из самых волшебных тем в автоматизации - планировщику задач cron. Мы научимся заставлять наши скрипты (например, скрипт для архивации) запускаться автоматически по расписанию: каждую ночь, раз в неделю или в любое другое заданное вами время. Это и есть настоящая автоматизация, когда сервер работает на вас 24/7 без вашего участия.

Перейти к просмотру - УРОК №21.

подарок Промо-код: PROMO15 - скидка 15%! огонь

Введите при оформлении первого заказа на сайте: Hosting-VDS.com

авторское право цифровые решения

Помог ли вам данный ответ? 0 Пользователи нашли это полезным (0 голосов)