2026-02-22 20:06:19 +03:00
2026-02-22 20:04:43 +03:00
2026-02-22 20:05:17 +03:00

Домашнее задание 27

Резервное копирование

Для выполнение задания используется vagrant box Ubuntu 22.04

Создание Vagrantfile

Зададим следующие характеристики для VM

  • CPU - 1
  • Memory - 512mb

Для VM backup-server добавим дополнительный диск размером 2Gb

Только после того, как создасться VM backup-server запуститься provision через ansible.

Готовый Vagrantfile

Cоздание ansible.yml

Сценарий для Ansible будет выполнять следующие действия:

На всех VM:

  1. Создания пользователя backup-user
  2. Обновление пакетов
  3. Установка borgbackup

На VM client:

  1. Генерация ssh ключа
  2. Генерируют пароль для шифрование бэкапов (и сохраняет в файле pass)
  3. Инициализация borg сервера
  4. Копирование скрипта для бэкапа
  5. Настройка крон для запуска скрипта для бэкапа

На VM backup-server:

  1. Форматирует подлюченный hdd d ext4
  2. Монтирует по пути /var/hdd-backup
  3. Копирует публичный ключ для backup-user

Готовый ansible.yml

Cоздание template_backup.sh

Шаблон для создания бэкапов. При копирования ansile автоматически подставит пароль сгенерированный при инициализации borg.

Скрипт выполняем следующие действия.

  1. Создает бэкап каталога /etc
  2. Проверяет, создался бэкап и делает соотвтсвующую запись в логи
  3. Удаляет старые бэкапы

Готовый template_backup.sh

Проверка

Запускаем vagrant

alex@ubuntu-pc:~/Документы/27$ vagrant up 
Bringing machine 'client' up with 'virtualbox' provider...
Bringing machine 'backup-server' up with 'virtualbox' provider...
==> client: Importing base box 'ubuntu/jammy64'...
==> client: Matching MAC address for NAT networking...
==> client: Checking if box 'ubuntu/jammy64' version '20241002.0.0' is up to date...
==> client: Setting the name of the VM: 27_client_1771777438146_29216
==> client: Clearing any previously set network interfaces...
==> client: Preparing network interfaces based on configuration...
    client: Adapter 1: nat
...

...

TASK [show pass] ***************************************************************
ok: [client] => {
    "msg": "ВНИМАНИЕ!!! Сохраните сгенерированный пароль: PASSSSSS"
}

TASK [borg initialization] *****************************************************
changed: [client]

TASK [create backup script] ****************************************************
changed: [client]

TASK [create cron] *************************************************************
changed: [client]

PLAY RECAP *********************************************************************
backup-server              : ok=12   changed=10   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
client                     : ok=16   changed=11   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

Обязательно сохраним пароль из задачи show pass!

Ждем 5 минут, и проверим

root@client:/opt# borg list backup-user@192.168.80.30:/var/hdd-backup/backup
Enter passphrase for key ssh://backup-user@192.168.80.30/var/hdd-backup/backup: <<<<ТУТ_ВВОДИМАРОЛЬЗАЙЛА_PASS>>>>
backup_dir_etc-2026.02.22_16:50:01   Sun, 2026-02-22 16:50:03 [307e46ddb5eae2d003e41869f328a0ff61a9bcf86df8d568279da9e81b816cb5]

Все готово!

Description
Резервное копирование
Readme 33 KiB
Languages
Shell 100%