Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Практические руководства
  • Веб-сервис
    • Все руководства
    • Статический сайт в Object Storage
    • Сайт на LAMP- или LEMP-стеке
    • Отказоустойчивый сайт с балансировкой нагрузки с помощью Network Load Balancer
    • Отказоустойчивый сайт с балансировкой нагрузки с помощью Application Load Balancer
    • Сайт на базе Joomla с БД PostgreSQL
    • Создание сайта на WordPress
    • Сайт на WordPress с БД MySQL
    • Перенос WordPress сайта с хостинга в Yandex Cloud
    • Сайт на базе 1С-Битрикс
    • Организация виртуального хостинга
    • Создание балансировщика с защитой от DDoS
    • Публикация обновлений для игр с помощью Cloud CDN
    • Интеграция L7-балансировщика с Cloud CDN и Object Storage
    • Сине-зеленое и канареечное развертывание версий сервиса
    • Терминирование TLS-соединений
  • Интернет-магазины
    • Все руководства
    • Интернет-магазин на 1С-Битрикс
    • Интернет-магазин на OpenCart
  • Архив данных
    • Все руководства
    • Однонодовый файловый сервер
    • Настройка SFTP-сервера на Centos 7
    • Резервное копирование в Object Storage через Acronis
    • Резервное копирование в Object Storage с помощью CloudBerry Desktop Backup
    • Резервное копирование в Object Storage через Duplicati
    • Резервное копирование в Object Storage с помощью Bacula
    • Резервное копирование в Object Storage с помощью Veritas Backup Exec
    • Распознавание архива изображений в Vision
  • Тестовая среда
    • Все руководства
    • Тестирование приложений с помощью GitLab
    • Создание тестовых ВМ через GitLab CI
    • Высокопроизводительные вычисления на прерываемых ВМ
    • Эмуляция множества IoT-устройств
    • Нагрузочное тестирование gRPC-сервиса
    • Развертывание и нагрузочное тестирование gRPC-сервиса с масштабированием
    • HTTPS-тест с постоянной нагрузкой с помощью Phantom
    • HTTPS-тест со ступенчатой нагрузкой с помощью Pandora
    • Нагрузочное тестирование с нескольких агентов
  • Управление инфраструктурой
    • Все руководства
    • Начало работы с Terraform
    • Загрузка состояний Terraform в Object Storage
    • Начало работы с Packer
    • Сборка образа ВМ с набором инфраструктурных инструментов с помощью Packer
    • Автоматизация сборки образов с помощью Jenkins и Packer
    • Непрерывное развертывание контейнеризованных приложений с помощью GitLab
    • Создание кластера Linux-серверов «1С:Предприятия» с кластером Managed Service for PostgreSQL
    • Миграция в Yandex Cloud с помощью Hystax Acura
    • Защита от сбоев с помощью Hystax Acura
    • Настройка синхронизации часов с помощью NTP
    • Работа с группой ВМ с автомасштабированием
    • Масштабирование группы ВМ по расписанию
    • Автомасштабирование группы ВМ для обработки сообщений из очереди Message Queue
    • Обновление группы ВМ под нагрузкой
    • Передача логов с ВМ в Cloud Logging
    • Резервное копирование ВМ с помощью Hystax Acura Backup
    • Настройка отказоустойчивой архитектуры в Yandex Cloud
    • Создание SAP-программы в Yandex Cloud
    • Настройка локального кеширующего DNS-резолвера
    • Миграция DNS-зон из Яндекс 360 в Cloud DNS
    • Интеграция Cloud DNS и корпоративного сервиса DNS
    • Создание веб-хука резолвера ACME для ответов на DNS01-проверки
    • Запись логов балансировщика в PostgreSQL
    • Создание триггера для бюджетов, который вызывает функцию для остановки ВМ
  • Построение Data Platform
    • Все руководства
    • Миграция БД из стороннего кластера Apache Kafka® в Managed Service for Apache Kafka®
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse с помощью Data Transfer
    • Перенос данных между кластерами Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for Apache Kafka® в Managed Service for YDB с помощью Data Transfer
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Debezium
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Debezium
    • Настройка Kafka Connect для работы с кластером Managed Service for Apache Kafka®
    • Управление схемами данных в Managed Service for Apache Kafka®
    • Использование Managed Schema Registry с Managed Service for Apache Kafka®
    • Использование Confluent Schema Registry с Managed Service for Apache Kafka®
    • Миграция базы данных из MySQL в ClickHouse с помощью Data Transfer
    • Асинхронная репликация данных из PostgreSQL в ClickHouse
    • Обмен данными между Managed Service for ClickHouse и Data Proc
    • Настройка Managed Service for ClickHouse для Graphite
    • Получение данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse
    • Поставка данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse с помощью Data Transfer
    • Получение данных из RabbitMQ в Managed Service for ClickHouse
    • Сохранение потока данных Data Streams в Managed Service for ClickHouse
    • Использование гибридного хранилища в Managed Service for ClickHouse
    • Шардирование таблиц Managed Service for ClickHouse
    • Настройка Cloud DNS для доступа к кластерам управляемых баз данных из других облачных сетей
    • Настройка Cloud DNS для доступа к кластеру Managed Service for ClickHouse из других облачных сетей
    • Обмен данными между Managed Service for ClickHouse и Data Proc
    • Импорт данных из Managed Service for MySQL в Data Proc с помощью Sqoop
    • Импорт данных из Managed Service for PostgreSQL в Data Proc с помощью Sqoop
    • Использование скриптов инициализации для настройки GeeseFS в Data Proc
    • Миграция данных из стороннего кластера Elasticsearch в Managed Service for Elasticsearch с помощью Reindex API
    • Миграция коллекций из стороннего кластера MongoDB в Managed Service for MongoDB
    • Миграция данных в Managed Service for MongoDB
    • Шардирование коллекций MongoDB
    • Анализ производительности и оптимизация MongoDB
    • Миграция БД из стороннего кластера MySQL в кластер Managed Service for MySQL
    • Анализ производительности и оптимизация Managed Service for MySQL
    • Синхронизация данных из стороннего кластера MySQL в Managed Service for MySQL с помощью Data Transfer
    • Миграция БД из Managed Service for MySQL в сторонний кластер MySQL
    • Миграция БД из Managed Service for MySQL в Object Storage с помощью Data Transfer
    • Импорт данных из Managed Service for MySQL в Data Proc с помощью Sqoop
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Debezium
    • Миграция БД из Managed Service for MySQL в Managed Service for YDB с помощью Data Transfer
    • Создание кластера PostgreSQL для «1С:Предприятия»
    • Анализ производительности и оптимизация Managed Service for PostgreSQL
    • Миграция БД из Managed Service for PostgreSQL
    • Миграция БД из стороннего кластера PostgreSQL в Managed Service for PostgreSQL
    • Асинхронная репликация данных из PostgreSQL в ClickHouse
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Debezium
    • Импорт данных из Managed Service for PostgreSQL в Data Proc с помощью Sqoop
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for YDB с помощью Data Transfer
    • Миграция БД из Managed Service for PostgreSQL в Object Storage
    • Миграция БД из Greenplum® в ClickHouse
    • Миграция БД из Greenplum® в PostgreSQL
    • Миграция БД из стороннего кластера Redis в Managed Service for Redis
    • Использование кластера Managed Service for Redis в качестве хранилища сессий PHP
  • Продукты Microsoft в Yandex Cloud
    • Все руководства
    • Развертывание Active Directory
    • Развертывание Microsoft Exchange
    • Развертывание Remote Desktop Services
    • Развертывание группы доступности Always On с внутренним сетевым балансировщиком
    • Развертывание Remote Desktop Gateway
  • Сетевая инфраструктура
    • Все руководства
    • Архитектура и защита базового интернет-сервиса
    • Настройки DHCP для работы с корпоративным DNS-сервером
    • Маршрутизация с помощью NAT-инстанса
    • Создание туннеля IPSec VPN
    • Установка виртуального роутера Cisco CSR 1000v
    • Установка виртуального роутера Mikrotik CHR
    • Соединение с облачной сетью при помощи OpenVPN
    • Создание и настройка шлюза UserGate в режиме прокси-сервера
    • Создание и настройка шлюза UserGate в режиме межсетевого экрана
    • Настройка сети для Data Proc
  • Визуализация и анализ данных
    • Все руководства
    • Визуализация данных из файла
    • Создание и публикация диаграммы с картой Москвы из CSV-файла
    • Анализ продаж сети магазинов из БД ClickHouse
    • Анализ открытых данных ДТП на дорогах России
    • Анализ продаж и локаций пиццерий на данных из БД ClickHouse и Cloud Marketplace
    • Веб-аналитика с подключением к Яндекс Метрике
    • Веб-аналитика с расчетом воронок и когорт на данных Яндекс Метрики
    • Аналитика мобильного приложения на данных AppMetrica
    • Анализ статистики подкастов Яндекс Музыки (для авторов подкастов)
    • Визуализация данных с помощью QL-чарта
    • Анализ customer journey мобильного приложения на данных AppMetrica
    • Анализ логов Object Storage при помощи DataLens
  • Интернет вещей
    • Руководства по работе с интернетом вещей
    • Мониторинг состояния географически распределенных устройств
    • Мониторинг показаний датчиков и уведомления о событиях
  • Бессерверные технологии
    • Сокращатель ссылок
    • Ввод данных в системы хранения
    • Хранение журналов работы приложения
    • Развертывание веб-приложения с использованием Java Servlet API
    • Разработка Slack-бота
    • Разработка Telegram-бота
    • Разработка пользовательской интеграции в API Gateway
    • Разработка CRUD API для сервиса фильмов
    • Разработка навыка Алисы и сайта с авторизацией
  1. Архив данных
  2. Резервное копирование в Object Storage с помощью Bacula

Резервное копирование в Yandex Object Storage с помощью Bacula

Статья создана
Yandex Cloud
,
улучшена
Dmitry A.
  • Перед началом работы
    • Необходимые платные ресурсы
    • Создайте бакет
    • Создайте сервисный аккаунт
    • Создайте статические ключи доступа
  • Создайте виртуальную машину
  • Настройте AWS CLI
  • Установите Bacula и дополнительные компоненты
  • Настройте базу данных MariaDB
  • Сконфигурируйте хранилище
    • Подготовьте папку для резервного копирования
    • Смонтируйте бакет в файловую систему
  • Настройте компоненты Bacula
    • Настройте Bacula Director
    • Настройте Storage Daemon
    • Создайте пароли для компонентов Bacula
    • Запустите компоненты Bacula
  • Запустите резервное копирование
    • Проверьте резервную копию
  • Восстановите файлы
    • Проверьте восстановленные файлы
  • Как удалить созданные ресурсы

Yandex Object Storage можно использовать для резервного копирования и восстановления данных виртуальной машины с помощью утилиты Bacula.

Bacula состоит из нескольких компонентов:

  • Bacula Director — контролирует резервное копирование и восстановление.
  • File Daemon — обеспечивает доступ к файлам для резервного копирования.
  • Storage Daemon — осуществляет чтение и запись файлов на жесткий диск.
  • Catalog — поддерживает каталог файлов для резервного копирования. Каталог хранится в базе данных MariaDB.
  • Bacula Console — консоль управления для взаимодействия с Bacula Director.

Чтобы настроить резервное копирование и восстановление с помощью Bacula:

  1. Подготовьте облако к работе.
  2. Создайте виртуальную машину.
  3. Настройте AWS CLI.
  4. Установите Bacula и дополнительные компоненты.
  5. Настройте базу данных MariaDB.
  6. Сконфигурируйте хранилище.
  7. Настройте компоненты Bacula.
  8. Запустите резервное копирование.
  9. Восстановите файлы.

Если созданные ресурсы вам больше не нужны, удалите их.

Перед началом работы

Перед работой нужно зарегистрироваться в Yandex Cloud и создать платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь, если вы еще не зарегистрированы.
  2. На странице биллинга убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсы

В стоимость поддержки резервного копирования и восстановления входит:

  • плата за вычислительные ресурсы и диски ВМ (см. тарифы Yandex Compute Cloud);
  • плата за хранение данных в бакете и операции с ними (см. тарифы Yandex Object Storage);
  • плата за использование динамического или статического внешнего IP-адреса (см. тарифы Yandex Virtual Private Cloud).

Создайте бакет

Чтобы создать бакет для резервного копирования в Object Storage:

Консоль управления
  1. Перейдите в консоль управления Yandex Cloud и выберите каталог, в котором будете выполнять операции.
  2. На странице каталога нажмите кнопку Создать ресурс и выберите Бакет.
  3. В поле Имя введите имя бакета: bacula-bucket.
  4. В поле Доступ к бакету выберите Ограниченный.
  5. В поле Класс хранилища выберите Холодное.
  6. Нажмите кнопку Создать бакет.

Создайте сервисный аккаунт

Создайте сервисный аккаунт и назначьте ему роль editor.

Создайте статические ключи доступа

Создайте статические ключи доступа.

Сразу сохраните идентификатор key_id и секретный ключ secret. Получить значение ключа снова будет невозможно.

Создайте виртуальную машину

Чтобы создать ВМ:

Консоль управления
  1. В консоли управления на странице каталога нажмите кнопку Создать ресурс и выберите Виртуальная машина.
  2. В поле Имя введите имя ВМ: bacula-vm.
  3. Выберите зону доступности, в которой будет находиться ВМ.
  4. В блоке Выбор образа/загрузочного диска перейдите на вкладку Cloud Marketplace и выберите публичный образ CentOS 7.
  5. В блоке Вычислительные ресурсы выберите параметры:
    • Платформа — Intel Cascade Lake.
    • Гарантированная доля vCPU — 20%.
    • vCPU — 2.
    • RAM — 2 ГБ.
  6. В блоке Сетевые настройки выберите сеть и подсеть, к которым нужно подключить ВМ. Если сети нет, создайте ее:
    1. Выберите пункт Создать сеть.

    2. В открывшемся окне укажите имя сети и каталог, в котором она будет создана.

    3. (опционально) Для автоматического создания подсетей выберите опцию Создать подсети.

    4. Нажмите кнопку Создать.

      У каждой сети должна быть как минимум одна подсеть. Если подсети нет, создайте ее, выбрав пункт Добавить подсеть.

  7. В поле Публичный адрес оставьте значение Автоматически, чтобы назначить ВМ случайный внешний IP-адрес из пула Yandex Cloud, или выберите статический адрес из списка, если вы зарезервировали его заранее.
  8. Укажите данные для доступа на ВМ:
    • В поле Логин введите имя пользователя.

    • В поле SSH-ключ вставьте содержимое файла открытого ключа.

      Пару ключей для подключения по SSH необходимо создать самостоятельно, см. Создание пары ключей SSH.

  9. Нажмите кнопку Создать ВМ.
  10. Дождитесь перехода ВМ в статус RUNNING.

Настройте AWS CLI

Чтобы настроить утилиту AWS CLI на ВМ bacula-vm:

  1. В консоли управления перейдите на страницу ВМ и узнайте ее публичный IP-адрес.

  2. Подключитесь к ВМ по протоколу SSH.

    Рекомендуемый способ аутентификации при подключении по SSH — с помощью пары ключей. Настройте использование созданной пары ключей: закрытый ключ должен соответствовать открытому ключу, переданному на ВМ.

  3. Обновите установленные в системе пакеты, для этого в терминале выполните команду:

    yum update -y
    
  4. Установите AWS CLI:

    yum install awscli -y
    
  5. Настройте AWS CLI:

    sudo aws configure
    

    Укажите значения параметров:

    • AWS Access Key ID — идентификатор key_id, который вы получили при создании статического ключа.
    • AWS Secret Access Key — секретный ключ secret, который вы получили при создании статического ключа.
    • Default region name — ru-central1.
    • Default output format — json.
  6. Проверьте, что файл /root/.aws/credentials содержит правильные значения параметров key_id и secret:

    sudo cat /root/.aws/credentials
    
  7. Проверьте, что файл /root/.aws/config содержит правильные значения параметров Default region name и Default output format:

    sudo cat /root/.aws/config
    

Установите Bacula и дополнительные компоненты

  1. Установите компоненты Bacula:

    sudo yum install -y bacula-director bacula-storage bacula-console bacula-client
    
  2. Установите базу данных MariaDB:

    sudo yum install -y mariadb-server
    
  3. Установите утилиту s3fs для монтирования бакета Object Storage в файловую систему:

    sudo yum install -y epel-release
    sudo yum install -y s3fs-fuse
    
  4. Установите текстовый редактор nano:

    sudo yum install -y nano
    

Настройте базу данных MariaDB

  1. Запустите MariaDB:

    sudo systemctl start mariadb
    
  2. Проверьте, что MariaDB запущена:

    sudo systemctl status mariadb | grep Active
    
  3. Включите запуск MariaDB при старте системы:

    sudo systemctl enable mariadb
    
  4. Создайте таблицы БД и настройте права доступа:

    /usr/libexec/bacula/grant_mysql_privileges
    /usr/libexec/bacula/create_mysql_database -u root
    /usr/libexec/bacula/make_mysql_tables -u bacula    
    
  5. Настройте безопасность БД:

    sudo mysql_secure_installation
    

    При следующих запросах:

    • Enter current password for root (enter for none) — чтобы пропустить поле, нажмите клавишу Enter.
    • Set root password? [Y/n] — введите Y, установите и подтвердите пароль для суперпользователя. Пароль понадобится на следующем шаге.
    • Remove anonymous users? [Y/n] — чтобы принять значение по умолчанию, нажмите клавишу Enter.
    • Disallow root login remotely? [Y/n] — чтобы принять значение по умолчанию, нажмите клавишу Enter.
    • Remove test database and access to it? [Y/n] — чтобы принять значение по умолчанию, нажмите клавишу Enter.
    • Reload privilege tables now? [Y/n] — чтобы принять значение по умолчанию, нажмите клавишу Enter.
  6. Войдите в командную строку БД и введите пароль суперпользователя root, созданный на предыдущем шаге:

    mysql -u root -p
    
  7. Создайте пароль bacula_db_password для пользователя bacula:

    UPDATE mysql.user SET Password=PASSWORD('bacula_db_password') WHERE User='bacula';
    FLUSH PRIVILEGES;
    exit
    
  8. Настройте использование MySQL-библиотеки для Bacula:

    sudo alternatives --config libbaccats.so
    

    Введите 1, чтобы выбрать MySQL:

      Selection    Command
    -----------------------------------------------
       1           /usr/lib64/libbaccats-mysql.so
       2           /usr/lib64/libbaccats-sqlite3.so
    *+ 3           /usr/lib64/libbaccats-postgresql.so
    
    Enter to keep the current selection[+], or type selection number: 1
    

Сконфигурируйте хранилище

Подготовьте папку для резервного копирования

  1. Создайте папку для резервного копирования /tmp/bacula:

    sudo mkdir /tmp/bacula
    
  2. Настройте права доступа к папке /tmp/bacula:

    sudo chown -R bacula:bacula /tmp/bacula
    sudo chmod -R 700 /tmp/bacula  
    sudo semanage permissive -a bacula_t 
    

Смонтируйте бакет в файловую систему

  1. Смонтируйте бакет с помощью утилиты s3fs, чтобы загружать резервные копии в Object Storage:

    sudo s3fs bacula-bucket /tmp/bacula \
      -o url=https://storage.yandexcloud.net \
      -o use_path_request_style \
      -o allow_other \
      -o nonempty \
      -o uid=133,gid=133,mp_umask=077
    

    Где:

    • bacula-bucket — название бакета в Object Storage.
    • uid=133 — идентификатор пользователя bacula из файла /etc/passwd.
    • gid=133 — идентификатор группы bacula из файла /etc/passwd.
  2. Проверьте права доступа к папке /tmp/bacula:

    sudo ls -la /tmp/bacula/
    

    Результат:

    drwx------.  2 bacula bacula        31 Sep 18 09:16 .
    drwxrwxrwt. 10 root   root         265 Sep 18 08:59 ..
    
  3. Проверьте, что пользователь bacula может создавать файлы в папке /tmp/bacula:

    1. Временно включите оболочку bash для пользователя bacula:

      sudo sed -i "/^bacula/ s@/sbin/nologin@/bin/bash@" /etc/passwd 
      
    2. Создайте произвольный файл в папке /tmp/bacula:

      sudo runuser -l  bacula -c 'touch /tmp/bacula/test.test' 
      
    3. Убедитесь, что файл test.test создан в папке /tmp/bacula:

      sudo ls -la /tmp/bacula | grep test.test 
      
    4. В консоли управления на странице каталога выберите сервис Object Storage и убедитесь, что файл test.test появился в бакете bacula-bucket.

    5. Удалите тестовый файл:

      sudo runuser -l  bacula -c 'rm -f /tmp/bacula/test.test' 
      
    6. Отключите оболочку bash для пользователя bacula:

      sudo sed -i "/^bacula/ s@/bin/bash@/sbin/nologin@" /etc/passwd 
      

Настройте компоненты Bacula

Настройте Bacula Director

  1. Откройте конфигурационный файл Bacula Director:

    sudo nano /etc/bacula/bacula-dir.conf
    
  2. Чтобы настроить соединение с Bacula Director, в блоке конфигурации Director добавьте строку DirAddress = 127.0.0.1:

    ...
    Director {                              # define myself
      Name = bacula-dir
      DIRport = 9101                        # Specify the port (a positive integer) on which the Director daemon will listen for Bacula Console connections.
                                            # This same port number must be specified in the Director resource of the Console configuration file.
                                            # The default is 9101, so normally this directive need not be specified.
                                            # This directive should not be used if you specify the DirAddresses (plural) directive.
      QueryFile = "/etc/bacula/query.sql"
      WorkingDirectory = "/var/spool/bacula"
      PidDirectory = "/var/run"
      Maximum Concurrent Jobs = 1
      Password = "@@DIR_PASSWORD@@"         # Console password
      Messages = Daemon
      DirAddress = 127.0.0.1
    }    
    ...
    
  3. Для удобства переименуйте задачу BackupClient1 на BackupFiles:

    ...
    Job {
      Name = "BackupFiles"
      JobDefs = "DefaultJob"
    }
    ...
    
  4. Чтобы назначить /tmp/bacula-restores папкой для восстановленных файлов, в конфигурации задачи RestoreFiles добавьте строку Where = /tmp/bacula-restores:

    ...
    Job {
      Name = "RestoreFiles"
      Type = Restore
      Client=bacula-fd
      FileSet="Full Set"
      Storage = File
      Pool = Default
      Messages = Standard
      Where = /tmp/bacula-restores
    }
    ...
    
  5. В блоке конфигурации FileSet с именем Full Set, в разделе Include:

    • Добавьте строку compression = GZIP в раздел Options для сжатия при резервировании.
    • Укажите File = / для резервирования всей файловой системы.
    ...
    FileSet {
      Name = "Full Set"
      Include {
    	Options {
    	  signature = MD5
    	  compression = GZIP
    	}
    	File = /
      }
      Exclude {
    	File = /var/spool/bacula
    	File = /tmp
    	File = /proc
    	File = /tmp
    	File = /.journal
    	File = /.fsck
      }
    }
    ...
    
  6. В консоли управления перейдите на страницу ВМ и узнайте ее внутренний IP-адрес.

  7. Чтобы настроить исходящее подключение к Storage Daemon, в блоке конфигурации Storage в поле Address укажите внутренний IP-адрес ВМ:

    ...
    Storage {
      Name = File
    # Do not use "localhost" here
      Address = <внутренний_IP-адрес_ВМ>  # N.B. Use a fully qualified name here
      SDPort = 9103
      Password = "@@SD_PASSWORD@@"
      Device = FileStorage
      Media Type = File
    }
    ...
    
  8. Для подключения к БД в блоке конфигурации Catalog укажите пароль для БД dbpassword = "bacula_db_password", созданный при настройке MariaDB:

    ...
    # Generic catalog service
    Catalog {
      Name = MyCatalog
    # Uncomment the following line if you want the dbi driver
    # dbdriver = "dbi:postgresql"; dbaddress = 127.0.0.1; dbport =
      dbname = "bacula"; dbuser = "bacula"; dbpassword = "bacula_db_password"
    }
    ...
    
  9. Сохраните файл.

  10. Проверьте, что в файле bacula-dir.conf нет синтаксических ошибок:

    sudo bacula-dir -tc /etc/bacula/bacula-dir.conf
    

    Если сообщений об ошибках нет, конфигурация корректна.

Настройте Storage Daemon

  1. Откройте конфигурационный файл Storage Daemon:

    sudo nano /etc/bacula/bacula-sd.conf
    
  2. Чтобы настроить входящее соединение со Storage Daemon, в блоке конфигурации Storage, в поле SDAddress укажите внутренний IP-адрес ВМ:

    ...
    Storage {                                      # definition of myself
      Name = BackupServer-sd
      SDPort = 9103                                # Specifies port number on which the Storage daemon listens for Director connections. The default is 9103.
      WorkingDirectory = "/var/spool/bacula"
      Pid Directory = "/var/run/bacula"
      Maximum Concurrent Jobs = 20
      SDAddress = <внутренний_IP-адрес_ВМ>         # This directive is optional, and if it is specified,
                                                   # it will cause the Storage daemon server (for Director and File daemon connections) to bind to the specified IP-Address,
                                                   # which is either a domain name or an IP address specified as a dotted quadruple.
                                                   # If this directive is not specified, the Storage daemon will bind to any available address (the default).
    }
    ...
    
  3. В блоке конфигурации Device укажите папку для резервного копирования Archive Device = /tmp/bacula:

    ...
    Device {
      Name = FileStorage
      Media Type = File
      Archive Device = /tmp/bacula 
      LabelMedia = yes;                   # lets Bacula label unlabeled media
      Random Access = Yes;
      AutomaticMount = yes;               # when device opened, read it
      RemovableMedia = no;
      AlwaysOpen = no;
    }
    ...
    
  4. Сохраните файл.

  5. Проверьте, что в файле bacula-sd.conf нет синтаксических ошибок:

    sudo bacula-sd -tc /etc/bacula/bacula-sd.conf
    

    Если сообщений об ошибках нет, конфигурация корректна.

Создайте пароли для компонентов Bacula

Bacula Director, Storage Daemon и File Daemon используют пароли для межкомпонентной аутентификации.

Чтобы установить пароли для компонентов Bacula:

  1. Сгенерируйте пароли для Bacula Director, Storage Daemon и File Daemon:

    DIR_PASSWORD=`date +%s | sha256sum | base64 | head -c 33`
    SD_PASSWORD=`date +%s | sha256sum | base64 | head -c 33`
    FD_PASSWORD=`date +%s | sha256sum | base64 | head -c 33`
    
  2. Поместите пароли в конфигурационные файлы:

    sudo sed -i "s/@@DIR_PASSWORD@@/${DIR_PASSWORD}/" /etc/bacula/bacula-dir.conf
    sudo sed -i "s/@@DIR_PASSWORD@@/${DIR_PASSWORD}/" /etc/bacula/bconsole.conf
    sudo sed -i "s/@@SD_PASSWORD@@/${SD_PASSWORD}/" /etc/bacula/bacula-sd.conf
    sudo sed -i "s/@@SD_PASSWORD@@/${SD_PASSWORD}/" /etc/bacula/bacula-dir.conf
    sudo sed -i "s/@@FD_PASSWORD@@/${FD_PASSWORD}/" /etc/bacula/bacula-dir.conf
    sudo sed -i "s/@@FD_PASSWORD@@/${FD_PASSWORD}/" /etc/bacula/bacula-fd.conf
    

Запустите компоненты Bacula

  1. Запустите компоненты Bacula:

    sudo systemctl start bacula-dir
    sudo systemctl start bacula-sd
    sudo systemctl start bacula-fd
    
  2. Проверьте, что компоненты Bacula запущены:

    sudo systemctl status bacula-dir
    sudo systemctl status bacula-sd
    sudo systemctl status bacula-fd
    
  3. Настройте запуск компонентов Bacula при старте системы:

    sudo systemctl enable bacula-dir
    sudo systemctl enable bacula-sd
    sudo systemctl enable bacula-fd
    

Запустите резервное копирование

  1. Откройте Bacula Console:

    sudo bconsole
    
  2. Чтобы настроить профиль резервного копирования, создайте метку:

    label
    
  3. Присвойте название MyVolume новому тому:

    Enter new Volume name: MyVolume
    
  4. Чтобы выбрать пул File, введите 2:

    Defined Pools:
         1: Default
         2: File
         3: Scratch
    Select the Pool (1-3): 2
    
  5. Запустите резервное копирование:

    run    
    

    Чтобы запустить задачу BackupFiles, выберите 1:

    A job name must be specified.
    The defined Job resources are:
        1: BackupFiles
        2: BackupCatalog
        3: RestoreFiles
    Select Job resource (1-3): 1    
    

    Чтобы подтвердить запуск, введите yes:

    OK to run? (yes/mod/no): yes 
    
  6. Проверьте статус резервного копирования:

    status director
    

    Результат, если резервное копирование выполняется:

    Running Jobs:
    Console connected at 12-Sep-19 07:22
     JobId Level   Name                       Status
    ======================================================================
         2 Full    BackupFiles.2019-09-12_07.22.56_03 is running
    

    Результат, если резервное копирование завершено:

    Running Jobs:
    Console connected at 12-Sep-19 07:25
    No Jobs running.
    ====
    
    Terminated Jobs:
     JobId  Level    Files      Bytes   Status   Finished        Name 
    ====================================================================
         2  Full     32,776    483.6 M  OK       12-Sep-19 07:24 BackupFiles    
    
  7. Дождитесь завершения резервного копирования и выйдите из Bacula Console:

    exit
    

Проверьте резервную копию

Чтобы убедиться, что резервное копирование выполнено:

Консоль управления
  1. В консоли управления на странице каталога выберите сервис Object Storage.
  2. Откройте бакет bacula-bucket.
  3. Убедитесь, что внутри находится объект MyVolume.

Восстановите файлы

  1. Чтобы проверить восстановление, предварительно удалите произвольный файл, например утилиту ping:

    sudo rm -f /bin/ping
    
  2. Убедитесь, что утилита ping удалена:

    ping
    

    Результат:

    bash: ping: command not found
    
  3. Войдите в Bacula Console:

    sudo bconsole
    
  4. Запустите полное восстановление:

    restore all
    

    Чтобы запустить восстановление из последней резервной копии, введите 5:

    To select the JobIds, you have the following choices:
        1: List last 20 Jobs run
        2: List Jobs where a given File is saved
        3: Enter list of comma separated JobIds to select
        4: Enter SQL list command
        5: Select the most recent backup for a client
        6: Select backup for a client before a specified time
        7: Enter a list of files to restore
        8: Enter a list of files to restore before a specified time
        9: Find the JobIds of the most recent backup for a client
        10: Find the JobIds for a backup for a client before a specified time
        11: Enter a list of directories to restore for found JobIds
        12: Select full restore to a specified Job date
        13: Cancel
    Select item:  (1-13): 5
    

    Чтобы подтвердить полное восстановление, введите done:

    You are now entering file selection mode where you add (mark) and
    remove (unmark) files to be restored. No files are initially added, unless
    you used the "all" keyword on the command line.
    Enter "done" to leave this mode.
    
    cwd is: /
    done
    

    Чтобы подтвердить запуск восстановления, введите yes:

    OK to run? (yes/mod/no): yes
    
  5. Проверьте статус восстановления:

    status director
    

    Результат, если восстановление выполняется:

    Running Jobs:
    Console connected at 12-Sep-19 07:25
     JobId Level   Name                       Status
    ======================================================================
         3         RestoreFiles.2019-09-12_07.27.42_05 is running
    

    Результат, если восстановление завершено:

    Terminated Jobs:
     JobId  Level    Files      Bytes   Status   Finished        Name 
    ====================================================================
         2  Full     32,776    483.6 M  OK       12-Sep-19 07:24 BackupFiles
         3           32,776    1.136 G  OK       12-Sep-19 07:27 RestoreFiles
    
  6. Дождитесь завершения восстановления и выйдите из Bacula Console:

    exit
    

Проверьте восстановленные файлы

  1. Убедитесь, что в папке /tmp/bacula-restores появились восстановленные файлы:

    sudo ls -la /tmp/bacula-restores
    

    Результат:

    total 16
    dr-xr-xr-x. 15 root   root    201 Sep 12 07:09 .
    drwx------.  4 bacula bacula   35 Sep 12 07:09 ..
    lrwxrwxrwx   1 root   root      7 Sep 12 07:27 bin -> usr/bin
    dr-xr-xr-x   5 root   root   4096 Sep 12 07:01 boot
    drwxr-xr-x   2 root   root      6 Sep 12 07:22 dev
    drwxr-xr-x  79 root   root   8192 Sep 12 07:07 etc
    drwxr-xr-x   3 root   root     18 Sep 12 07:01 home
    lrwxrwxrwx   1 root   root      7 Sep 12 07:27 lib -> usr/lib
    lrwxrwxrwx   1 root   root      9 Sep 12 07:27 lib64 -> usr/lib64
    drwxr-xr-x   2 root   root      6 Apr 11  2018 media
    drwxr-xr-x   2 root   root      6 Apr 11  2018 mnt
    drwxr-xr-x   2 root   root      6 Apr 11  2018 opt
    dr-xr-x---   3 root   root    217 Sep 12 07:21 root
    drwxr-xr-x   2 root   root      6 Sep 12 07:22 run
    lrwxrwxrwx   1 root   root      8 Sep 12 07:27 sbin -> usr/sbin
    drwxr-xr-x   2 root   root      6 Apr 11  2018 srv
    dr-xr-xr-x   2 root   root      6 Sep 12 07:22 sys
    drwxr-xr-x  13 root   root    155 Mar  4  2019 usr
    drwxr-xr-x  19 root   root    267 Sep 12 07:01 var
    
  2. Убедитесь, что утилита ping находится в папке /tmp/bacula-restores:

    sudo ls -la /tmp/bacula-restores/bin/ping
    

    Результат:

    -rwxr-xr-x 1 root root 66176 Aug  4  2017 /tmp/bacula-restores/bin/ping
    
  3. Скопируйте утилиту ping в основную файловую систему:

    sudo cp /tmp/bacula-restores/bin/ping /bin/ping
    
  4. Убедитесь, что ping работает:

    sudo ping 127.0.0.1 -c 1
    

    Результат:

    PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
    64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.016 ms
    
    --- 127.0.0.1 ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 0.016/0.016/0.016/0.000 ms
    
  5. Чтобы освободить место на диске, удалите копию восстановленных файлов:

    sudo rm -rfd /tmp/bacula-restores/*
    

Как удалить созданные ресурсы

Чтобы перестать платить за созданные ресурсы:

  1. Удалите ВМ.
  2. Удалите все объекты из бакета Object Storage.
  3. Удалите бакет Object Storage.
  4. Удалите статический публичный IP-адрес, если вы его зарезервировали.

Была ли статья полезна?

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Перед началом работы
  • Необходимые платные ресурсы
  • Создайте бакет
  • Создайте сервисный аккаунт
  • Создайте статические ключи доступа
  • Создайте виртуальную машину
  • Настройте AWS CLI
  • Установите Bacula и дополнительные компоненты
  • Настройте базу данных MariaDB
  • Сконфигурируйте хранилище
  • Подготовьте папку для резервного копирования
  • Смонтируйте бакет в файловую систему
  • Настройте компоненты Bacula
  • Настройте Bacula Director
  • Настройте Storage Daemon
  • Создайте пароли для компонентов Bacula
  • Запустите компоненты Bacula
  • Запустите резервное копирование
  • Проверьте резервную копию
  • Восстановите файлы
  • Проверьте восстановленные файлы
  • Как удалить созданные ресурсы