Практическое задание

Эта задача — шаг 10 курса «Архивы и бэкапы»

Бэкап конфигов nginx с датой

средне~10 мин

Напиши скрипт /usr/local/bin/backup-nginx, который упаковывает каталог /etc/nginx в архив /var/backups/nginx/nginx-ГГГГММДД.tgz (дата сегодняшняя, без дефисов, например nginx-20260315.tgz). Каталог /var/backups/nginx скрипт создаёт сам, если его нет. Дату не вписывай в скрипт руками — он должен работать и завтра. Запусти скрипт. Скрипт удобно написать во вкладке «Редактор» над терминалом — каталог /usr/local/bin открыт в ней слева.

Что потренируешь:
  • date +FORMAT
  • подстановка команд
  • tar
  • mkdir -p
  • бэкап конфигов

Разбор темы

Бэкап-скрипт ценен тем, что каждый запуск создаёт новый архив, не затирая прошлые, — поэтому дата в имени собирается в момент запуска, а не пишется руками. date печатает текущую дату по шаблону из директив вида %Y, %m, %d, а подстановка команд $( ) вставляет этот вывод прямо в путь. Каталог для архивов создают идемпотентно (mkdir -p не ошибается, если он уже есть), а tar с ключом -C упаковывает каталог относительным путём — при распаковке он не перезапишет живой /etc.

Что проверяется

  1. backup-nginx исполняемый
  2. архив с сегодняшней датой создан
  3. в архиве конфиги nginx
  4. дата вычисляется, а не вписана
  5. скрипт сам создаёт каталог для архивов

Как это выглядит