Linux Labs

Хранилище / Ступень 9 из 11

Архив есть — проверь восстановление

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 2 из 7 · теория · 6 мин

Что попадает в архив

Разберём, по какому списку tar собирает архив и где по дороге потерялся .release.

tar собирает файлы и каталоги в один файл-архив. Ключ -c создаёт архив, -f задаёт имя его файла. Каждый сохранённый файл или каталог — элемент архива: путь, содержимое, права, владелец и время изменения.

Ночной скрипт создаёт архив так:

bash
cd ~/backup-lab/live
tar -cf /srv/backup-lab/app.tar app/*

app/* — шаблон имён: Bash заменяет его списком подходящих имён ещё до запуска tar, как в уроке «Справка и оболочка». Имена, которые начинаются с точки, шаблон * не подставляет. tar получил app/bin, app/config, app/data и app/secret.env, а о .release не узнал.

Каталог, названный целиком, tar обходит сам — со всеми файлами, скрытыми тоже:

bash
tar -cf /srv/backup-lab/app.tar -C ~/backup-lab/live app

-C переходит в каталог до того, как tar прочитает следующие имена. Поэтому пути внутри архива начинаются с app/. Какие пути записаны в архиве, такие и появятся при распаковке:

Команда Пути в архиве
tar -cf a.tar app/* app/bin/…, app/secret.env; без .release
tar -cf a.tar -C live app app/, app/.release, app/bin/…
tar -cf a.tar live/app live/app/… — лишний уровень
Проверь себя 1 вопрос

Ты в домашнем каталоге student. Нужно сохранить его целиком, вместе с .bashrc. Какая команда это сделает?

  • tar сохраняет всё, что получил, а шаблон * отдаёт ему список без скрытых имён.

  • Тот же шаблон *: Bash подставит имена без точки в начале, и .bashrc в архив не попадёт.

  • Шаблон * раскрывает Bash, и имена с точкой в начале в список не попадут. Проверь: echo /home/student/* не покажет .bashrc.

Каталог, названный целиком, tar обходит сам и сохраняет все имена, включая .bashrc. Шаблон * раскрывает Bash до запуска tar, и скрытые имена в список не попадают.

Главное в шаге

  • tar сохраняет только те имена, которые получил; каталог, названный целиком, он обходит со всеми файлами, включая скрытые.
  • Шаблон * раскрывает Bash до запуска tar, и имена с точкой в начале в список не попадают.
  • Пути внутри архива задаёт команда: с -C live app они начинаются с app/.
Ubuntu 24.04
Загрузка…