Настройка бекап на B2

https://www.backblaze.com/

  1. Создайте аккаунт в системе https://www.backblaze.com/

  2. После нужно создать App key который сможет только делать запись без возможности удалять уже созданный бекап к сожалению через панель это сделать не получится поэтому мы сделали готовый скрипт который умеет создавать безопасный ключ через API backblaze) Для этого необходимо:

    1. Клонировать репо:

      cd /root/
      git clone https://gitlab.com/BoxExchanger-public/b2-backups.git
    2. Перейти в папку с проектом:

      cd b2-backups
    3. Установить пакеты:

      npm i
    4. Создать ключ:

      npm run new-key

      B2 application key ID: keyID полученный на предыдущем шаге B2 application key: applicationKey полученный на предыдущем шаге

    5. Пересоздаем ключ полученный на 4.4 шаге для того чтоб старый был более не доступен (копировать его уже не нужно)

  3. Установить rclone на сервер.

  4. Установить полученные ключи на сервер для этого используем следующие команды:

    rclone config

    Далее нас запросит ответить на вопросы:

    e/n/d/r/c/s/q> n
    name> b2
    Storage> 5
    account> (App Key Id c шага 4.6)
    key> (App Key c шага 4.6)
  5. Конфигурируем backup.sh для правильного создания бекап и уведомления администратора.

    cd /root/b2-backups
    nano backup.sh

    Конфигурируем блок # -- Configuration --

    backup.sh
    # rclone remote name.
    RCLONE_REMOTE="b2"
    # b2 bucket name.
    B2_BUCKET="name-project"
    # Telegram Bot Token
    BOT_TOKEN="1234567890:ABCDEF1234567890ABCDEF1234567890ABC"
    # (list) of Telegram Chat IDs.
    # e.g: CHAT_IDS=("1234567890" "0987654321")
    CHAT_IDS=("1234567890")

    Описание конфигураций: RCLONE_REMOTE - имя конфигурации rclone (6 шаг указали как name> b2) B2_BUCKET - имя корзины в BackBlaze (3 шаг) BOT_TOKEN - Токен телеграм бота полученный в @BotFather в котором вы нажали кнопку /start CHAT_IDS - ид клиентов telegram которые должны получать уведомление о бекап статусе получить свой ид можно в телеграм боте @myidbot

  6. Даем права на запуск bash-script файлу backup.sh

    chmod +x backup.sh

    Если скрипт выполнил работу верно последняя строка будет: Backup completed successfully. Также в .телеграм вам должно прийти сообщение: 📦 Backup on hostname completed successfully.

  7. Проверяем работу бекап скрипта

    ./root/b2-backups/backup.sh
  8. Устанавливаем авто бекап по крону (в примере каждый день в 4 ночи по времени сервера обычно по GMT)

    (crontab -l; echo "0 */4 * * * bash /root/b2-backups/backup.sh >> /tmp/bk.log 2>&1") | crontab -

Для работы скрипта необходимы права root. По умолчанию скрипт ищет конфигурацию API в папке /var/www/exchanger-api/config/app_config.json. Если у вас иной путь исправьте BOXEXCHANGER_API_PATH в файле backup.sh в разделе # -- Init Default Vars -- В файле конфигурации обязательно должен быть uri к mongodb

Last updated