← Back to course

Архивы и Сжатие

Архивы и Сжатие

С возвращением.

В предыдущем уроке ты научился проверять сетевые соединения из терминала.

Теперь возвращаемся к файлам.

Но на этот раз будем их упаковывать.

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

Хочется один архив.

Чисто. Переносимо. Организованно.

Очень по-взрослому.

Что Ты Изучишь

В этом уроке ты научишься:

Миссия

Твоя миссия простая:

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

Без магии.

Просто файлы в чемодане.

Архив vs Сжатие

Архив собирает много файлов в один файл.

Сжатие делает файлы меньше.

Это не совсем одно и то же.

Пример:

.tar      только архив
.tar.gz   архив + сжатие
.zip      архив + сжатие

Файл .tar — это как положить много документов в одну папку.

Файл .tar.gz — это как положить эту папку в вакуумный пакет.

Linux это обожает.

Возможно, даже слишком.

Создай Папку для Практики

Перейди в папку для практики:

cd ~/terminal-practice

Если её нет, создай:

mkdir -p ~/terminal-practice
cd ~/terminal-practice

Создай папку для этого урока:

mkdir lesson9-archive
cd lesson9-archive

Создай несколько файлов:

echo "Linux archive practice" > notes.txt
echo "Remember to extract carefully" > reminder.txt
echo "Compression is useful" > compression.txt

Проверь:

ls

Ты должен увидеть:

compression.txt  notes.txt  reminder.txt

Хорошо.

Теперь есть что упаковывать.

Создай tar Архив

Перейди на уровень выше:

cd ..

Создай .tar архив:

tar -cf lesson9-archive.tar lesson9-archive

Теперь покажи файлы:

ls

Ты должен увидеть:

lesson9-archive
lesson9-archive.tar

Архив создан.

Опции означают:

-c = create
-f = file

То есть команда означает:

Создай архивный файл lesson9-archive.tar из папки lesson9-archive.

Очень логично.

Очень Linux.

Посмотреть, Что Внутри tar Архива

Чтобы посмотреть содержимое .tar архива:

tar -tf lesson9-archive.tar

Опции означают:

-t = показать содержимое архива
-f = file

Ты должен увидеть файлы внутри архива.

Это полезно перед распаковкой.

Потому что распаковывать неизвестные архивы вслепую — это способ превратить чистую папку в цифровой борщ.

Распаковать tar Архив

Создай папку для распаковки:

mkdir extracted-tar

Распакуй архив туда:

tar -xf lesson9-archive.tar -C extracted-tar

Опции означают:

-x = extract
-f = file
-C = распаковать в эту директорию

Теперь проверь:

tree extracted-tar

Если tree не установлен, используй:

ls -R extracted-tar

Ты должен снова увидеть свои файлы.

Архив сработал.

Ничего не взорвалось.

Прекрасный день.

Создай Сжатый tar.gz Архив

Теперь создай сжатый архив:

tar -czf lesson9-archive.tar.gz lesson9-archive

Опции означают:

-c = create
-z = gzip compression
-f = file

.tar.gz очень распространён в Linux.

Также можно увидеть .tgz.

Это фактически та же идея, просто короче.

Потому что, очевидно, даже расширения файлов хотят иметь прозвища.

Распаковать tar.gz Архив

Создай ещё одну папку:

mkdir extracted-targz

Распакуй:

tar -xzf lesson9-archive.tar.gz -C extracted-targz

Опции:

-x = extract
-z = gzip
-f = file
-C = целевая директория

Проверь:

ls -R extracted-targz

Ты должен увидеть распакованную папку и файлы.

Создай zip Архив

zip распространён, когда нужно поделиться файлами с пользователями Windows, macOS или людьми, которые думают, что .tar.gz выглядит как медицинский диагноз.

Создай zip архив:

zip -r lesson9-archive.zip lesson9-archive

Опция -r означает recursive.

Она включает файлы внутри папки.

Если zip не установлен, установи его.

Arch Linux

sudo pacman -S zip unzip

Ubuntu или Debian

sudo apt install zip unzip

Fedora

sudo dnf install zip unzip

Распаковать zip Архив

Создай папку:

mkdir extracted-zip

Распакуй zip:

unzip lesson9-archive.zip -d extracted-zip

Опция -d означает директорию назначения.

Проверь:

ls -R extracted-zip

Твои файлы должны быть там.

Типичные Команды для Архивов

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

tar -cf archive.tar folder
tar -tf archive.tar
tar -xf archive.tar
tar -czf archive.tar.gz folder
tar -xzf archive.tar.gz
zip -r archive.zip folder
unzip archive.zip

Этого достаточно для большинства повседневных задач.

Не нужно запоминать всё сразу.

Твой мозг заслуживает милосердия.

Частые Ошибки

Распаковывать не в той папке

Перед распаковкой проверь, где ты:

pwd

Потом покажи файлы:

ls

Распаковывать архивы в случайных местах — это способ превратить домашнюю папку в гаражную распродажу.

Забыть -r с zip

Это может неправильно включить содержимое папки:

zip archive.zip folder

Используй:

zip -r archive.zip folder

-r заставляет zip взять всё, что внутри.

Путать создание и распаковку

Создать:

tar -czf archive.tar.gz folder

Распаковать:

tar -xzf archive.tar.gz

Маленькая разница.

Большой результат.

Одно упаковывает файлы.

Другое их распаковывает.

Не путай, если хаос не является твоим стилем жизни.

Практика

Попробуй:

cd ~/terminal-practice
mkdir archive-practice
cd archive-practice
echo "File one" > one.txt
echo "File two" > two.txt
echo "File three" > three.txt
cd ..
tar -czf archive-practice.tar.gz archive-practice
mkdir test-extract
tar -xzf archive-practice.tar.gz -C test-extract
ls -R test-extract

Затем ответь:

  1. Что делает tar -cf?
  2. Что делает tar -xf?
  3. Что означает -z?
  4. Что делает zip -r?
  5. Почему нужно проверять, где ты, перед распаковкой?

Мини-Задание

Создай такую папку:

backup-demo/
├── notes.txt
├── tasks.txt
└── config/
    └── app.conf

Затем:

  1. Создай backup-demo.tar.
  2. Покажи его содержимое.
  3. Создай backup-demo.tar.gz.
  4. Создай backup-demo.zip.
  5. Распакуй каждый архив в отдельную папку.
  6. Проверь, что все файлы на месте.

Без мышки.

Мышка теперь просто декоративный предмет.

Итог

Сегодня ты узнал, что:

Архивы повсюду в Linux.

Теперь, когда ты видишь .tar.gz, не нужно паниковать.

Это не монстр.

Это просто чемодан с ремнём.

Следующий Урок

В следующем уроке мы изучим переменные окружения, alias и основы shell.

Именно там терминал начинает помнить вещи за тебя.

Как полезный ассистент.

Но с меньшим количеством мнений.