Code Monkey home page Code Monkey logo

borgbackup's Introduction

Backups

Настроить стенд Vagrant с двумя виртуальными машинами: backup_server и client.
Настроить удаленный бекап каталога /etc c сервера client при помощи borgbackup. Резервные копии должны соответствовать следующим критериям:

* директория для резервных копий /var/backup. Это должна быть отдельная точка монтирования. В данном случае для демонстрации размер не принципиален, достаточно будет и 2GB;
* репозиторий для резервных копий должен быть зашифрован ключом или паролем - на ваше усмотрение;
* имя бекапа должно содержать информацию о времени снятия бекапа;
* глубина бекапа должна быть год, хранить можно по последней копии на конец месяца, кроме последних трех. Последние три месяца должны содержать копии на каждый день. Т.е. должна быть правильно настроена политика удаления старых бэкапов;
* резервная копия снимается каждые 5 минут. Такой частый запуск в целях демонстрации;
* написан скрипт для снятия резервных копий. Скрипт запускается из соответствующей Cron джобы, либо systemd timer-а - на ваше усмотрение;
* настроено логирование процесса бекапа. Для упрощения можно весь вывод перенаправлять в logger с соответствующим тегом. Если настроите не в syslog, то обязательна ротация логов.

Запустите стенд на 30 минут.
Убедитесь что резервные копии снимаются.
Остановите бекап, удалите (или переместите) директорию /etc и восстановите ее из бекапа.
Для сдачи домашнего задания ожидаем настроенные стенд, логи процесса бэкапа и описание процесса восстановления.
Формат сдачи ДЗ - vagrant + ansible

Стенд Vagrant с двумя виртуальными машинами: backup_server и client.

  • Клонируем репозиторий: git clone https://github.com/mmmex/borgbackup.git

  • Переходим в директорию borgbackup и выполняем запуск: cd borgbackup; vagrant up

  • Демонстрация запуска:

asciicast

  • После выполнения стенд полностью готов к демонстрации.

Настройка резервного копирования каталога /etc с хоста client на удаленный сервер backup_server при помощи borgbackup.

Согласно техническому заданию, Ansible настроит две ВМ: client и backup_server.

  • Демонстрация настроек и выполнения ДЗ:

asciicast

Описание процесса восстановления каталога /etc

  • Выполним вход на ВМ client: vagrant ssh client

  • Останавливаем службу таймера резервного копирования: systemctl stop borg-backup.timer

  • Убедимся что у нас имеется резервная копия:

[root@client ~]# borg list                                                                                                        
etc-2023-01-08_13:50:14              Sun, 2023-01-08 13:50:16 [0ce09afadd14227fd23b11fe0a0dcae5ae92f6a4d3d52fa56d9d2ce9de7df42f]
  • Удаляем каталог /etc:
[root@client ~]# rm -rf /etc                                                                                                      
rm: cannot remove '/etc': Device or resource busy
  • Проверяем что действительно содержимое каталога отсутствует:
[root@client ~]# ls -al /etc                                                                                                      
total 0                                                                                                                           
drwxr-xr-x.  2 0 0   6 Jan  8 11:41 .                                                                                             
dr-xr-xr-x. 18 0 0 255 Jan  8 10:03 ..
  • Пробуем получить перечень копий из репозитория:
[root@client ~]# borg list                                                                                                        
Connection closed by remote host. Is borg working on the server?
  • Проблема в том, что теперь ОС не может выполнить соединения с удаленным сервером из-за отсутствия в конфигурации пользователя root, добавляем:
[root@client ~]# echo "root:x:0:0:root:/root:/bin/bash" > /etc/passwd 
  • Также в нашем окружении добавлена переменная BORG_REPO, в которой содержится имя хоста и соответственно необходимо его добавить в файл /etc/hosts:
[root@client ~]# echo "192.168.56.2 server" > /etc/hosts
  • Теперь можно выполнить запрос на получение доступа к удаленному репозиторию и можно выполнить восстановление из последней копии:
[root@client ~]# borg list                                                                                                        
etc-2023-01-08_13:50:14              Sun, 2023-01-08 10:50:16 [0ce09afadd14227fd23b11fe0a0dcae5ae92f6a4d3d52fa56d9d2ce9de7df42f]
[root@client ~]# cd /;borg extract ::etc-2023-01-08_13:50:14                                                                      
Warning: File system encoding is "ascii", extracting non-ascii filenames will not be supported.                                   
Hint: You likely need to fix your locale setup. E.g. install locales and use: LANG=en_US.UTF-8
  • Можем сравнить содержимое архива с локальной папкой:
[root@client /]# borg export-tar ::etc-2023-01-08_13:50:14 - | tar --compare -f - -C /

borgbackup's People

Contributors

mmmex avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.