From 1c50e9aa3c3a3def0f7052ffd5226da2157d6b5a Mon Sep 17 00:00:00 2001 From: alex Date: Sun, 22 Feb 2026 20:04:43 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..c05c48d --- /dev/null +++ b/README.md @@ -0,0 +1,105 @@ +# Домашнее задание 27 + +## Резервное копирование + +Для выполнение задания используется vagrant box Ubuntu 22.04 + +### Создание Vagrantfile + +Зададим следующие характеристики для VM + +- CPU - 1 +- Memory - 512mb + +Для VM **backup-server** добавим дополнительный диск размером 2Gb + + +Только после того, как создасться VM **backup-server** запуститься provision через ansible. + +Готовый [Vagrantfile](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](ansible.yml) + +### Cоздание template_backup.sh + +Шаблон для создания бэкапов. При копирования ansile автоматически подставит пароль сгенерированный при инициализации borg. + +Скрипт выполняем следующие действия. + +1. Создает бэкап каталога /etc +2. Проверяет, создался бэкап и делает соотвтсвующую запись в логи +3. Удаляет старые бэкапы + + +Готовый [template_backup.sh](template_backup.sh) + +### Проверка + +Запускаем vagrant +```bash +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 минут, и проверим +```bash +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] +``` + +Все готово! \ No newline at end of file