Перейти к содержанию

Автоматическое резервное копирование данных с помощью Rclone и Cloudflare R2 (на примере Marzban)


Рекомендуемые сообщения

  • Админы

Введение

В этой статье мы рассмотрим, как настроить автоматическое резервное копирование данных с использованием Rclone и Cloudflare R2. Мы создадим bash-скрипт, который будет создавать архив, загружать его в Cloudflare R2 и отправлять уведомления через Telegram. Также добавим этот скрипт в crontab для регулярного выполнения каждые 4 часа. Все это будет создавать архивы нашего мэйн сервера Marzban.

Что такое Rclone?
Rclone – это клиент командной строки для обеспечения работы и синхронизации файлов и директорий с облачными хранилищами. Облачный провайдер поддерживает множество, включая Amazon S3, Google Drive, Dropbox, и, конечно, Cloudflare R2. Rclone используется для резервного копирования файлов, синхронизации файлов между различными облачными и локальными хранилищами.

Различные функции Rclone включают:

  • Synchronization – синхронизация файлов между локальными хранилищами и облачными провайдерами.
  • Copy – копирование файлов между различными папками облачного хранилища.
  • Шифрование – шифрование файлов.
  • Automator – работа по расписанию с использованием скриптов и crontab.
  • Поддержка облачных провайдеров: Amazon S3, Google Drive, Dropbox, OneDrive, Cloudflare R2 и других.

Что такое Cloudflare R2?
Cloudflare R2 – это хранилище объектов, предоставляемое облачной службой безопасности Cloudflare. Оно предназначено для хранения больших объемов данных с минимальными затратами и высокой производительностью. R2 предоставляет доступ к данным через API, совместимый с S3, что позволяет использовать такие инструменты, как Rclone, для управления файлами.

Преимущества Cloudflare R2:

  • Низкие затраты: отсутствие платы за исходящий трафик.
  • Высокая производительность: быстрая доставка контента благодаря глобальной сети Cloudflare.
  • Совместимость с S3: возможность использования существующих инструментов и скриптов для работы с данными.
  • 10ГБ пространство доступно на каждом аккаунте (в сумме всех бакетов)

Настройка Cloudflare R2

К сожалению, первым делом, даже чтобы воспользоваться бесплатно, вам нужно будет привязать банковскую карту к своему аккаунту CF.

image.png

РФ карты не принимает.

НО без проблем принимает карты от Cashinout, сервис который я упоминал в этой статье:

Вы можете сделать хитро.
Оформить карту в Cashinout, пройти верификацию в CF, а затем удалить свою карту (деньги находящиеся на ней вернутся на ваш счет аккаунта Cashinout)

Для начала работы с Cloudflare R2 выполните следующие шаги:

  1. Создайте аккаунт Cloudflare: Зарегистрируйтесь на сайте Cloudflare и войдите в свой аккаунт. (этот шаг я пропускаю, понимая что у вас он уже есть)
  2. Создайте R2 хранилище:
    • В панели управления Cloudflare перейдите в раздел R2.
      image.png
    • Создайте новый бакет, указав его имя и настройки.
      image.png

      image.png
  3. Создайте API токен:
    • Перейдите в раздел API Tokens.
      image.png
    • Нажмите кнопку Create Token.
      image.png
    • Выберите Введите имя и укажите параметры так как на скриншоте
      image.png
    • Нажмите Create Token и сохраните ваш токен. (можете пока просто не закрывать окно)
       

Установка и настройка Rclone

Установка и настройка Rclone

  1. Установите Rclone:

    curl https://rclone.org/install.sh | sudo bash

    image.png

  2. Настройте Rclone:

    rclone config 
  3. Следуйте инструкциям для создания нового удаленного подключения:
    image.png

  4. n) New remote
    name> s3cf
    Type of storage to configure.
    Enter a string value. Press Enter for the default ("").
    Storage> s3
    AWS Access Key ID> YOUR_CLOUDFLARE_ACCESS_KEY
    AWS Secret Access Key> YOUR_CLOUDFLARE_SECRET_KEY
    Region to connect to.
    Enter a string value. Press Enter for the default ("").
    region> 
    Endpoint for S3 API.
    Optional.
    Use an empty string for the default endpoint.
    Enter a string value. Press Enter for the default ("").
    endpoint> https://<account-id>.r2.cloudflarestorage.com

    AWS Access Key ID> YOUR_CLOUDFLARE_ACCESS_KEY
    AWS Secret Access Key> YOUR_CLOUDFLARE_SECRET_KEY
    Эти параметры мы получаем из нашего окна с API ключами CF.
    image.png


  5. Когда нужно будет указать в последнем этапе endpoint, вы можете взять их из настроек бакета.
    image.png
    openode (из моего примера) вводить не нужно!

Готово!

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

rclone ls s3cf:openode

В данном случае s3cf  - Это название конфига которое вы создавали на первом шаге rclone config

А openode - Это имя бакета которое вы создавали в CF.

 

Создание и настройка bash-скрипта

Создайте файл скрипта backup_script.sh в папке /root/:

nano /root/backup_script.sh

Вставьте следующий код:

#!/bin/bash

# Переменные для Telegram
TELEGRAM_BOT_TOKEN="YOUR_TELEGRAM_BOT_TOKEN"
TELEGRAM_CHAT_ID="YOUR_TELEGRAM_CHAT_ID"

# Папки для архивации
SRC_DIRS=("/opt/marzban" "/var/lib/marzban")

# Папка для хранения архива
DEST_DIR="/root"

# Имя архива с датой и временем
DATE=$(date +'%Y-%m-%d_%H-%M-%S')
ARCHIVE_NAME="OPENODE_backup_$DATE.zip"
ARCHIVE_PATH="$DEST_DIR/$ARCHIVE_NAME"

# Создание архива
zip -r "$ARCHIVE_PATH" "${SRC_DIRS[@]}"

# Целевая папка в Cloudflare R2
TARGET_DIR="s3cf:openode/"

# Функция для отправки уведомления в Telegram
send_telegram_message() {
    MESSAGE=$1
    curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" -d chat_id="${TELEGRAM_CHAT_ID}" -d text="${MESSAGE}"
}

# Загрузка архива в Cloudflare R2 и отправка уведомления
if rclone copy "$ARCHIVE_PATH" "$TARGET_DIR"; then
    send_telegram_message "Архив $ARCHIVE_NAME успешно загружен в Cloudflare R2."
    # Удаление локального архива после копирования
    rm "$ARCHIVE_PATH"
else
    send_telegram_message "Ошибка при загрузке архива $ARCHIVE_NAME в Cloudflare R2."
fi

# Ротация архивов в Cloudflare R2 (оставить только за последние 7 дней)
rclone delete --min-age 7d "$TARGET_DIR"

Сохраняем.


 

Пояснение:

 

# Ротация архивов в Cloudflare R2 (оставить только за последние 7 дней)
rclone delete --min-age 7d "$TARGET_DIR"

Здесь функция rclone которая будет автоматически следить за ротацией.

Имейте ввиду, что эта функция удалить ВСЕ файлы старше 7 дней находящиеся в вашей папке!

TELEGRAM_BOT_TOKEN="YOUR_TELEGRAM_BOT_TOKEN"
TELEGRAM_CHAT_ID="YOUR_TELEGRAM_CHAT_ID"

Здесь нам нужно обязательно задать наши ID для уведомлений в телеграм об успешном копировании.

ARCHIVE_NAME="OPENODE_backup_$DATE.zip"   - тут можно задать свое имя архива

TARGET_DIR="s3cf:openode" - тут задаются ваши параметры из пунктов выше.

 

 

Сделайте скрипт исполняемым:

chmod +x /root/backup_script.sh

Можем попробовать запустить:

./backup_script.sh

Если все прошло хорошо, и уведомления получены в телеграм, то можно настроить crontab:

crontab -e

Вставляем в пустую строку:

0 */4 * * * /root/backup_script.sh >/dev/null 2>&1

Готово!

Каждые 4 часа будут собираться архивы и приходить уведомления.

 

 

Ссылка на комментарий
  • Админы

Спасибо @RandomVPN за уточнение и проверку, для использования бесплатными 10Гб нужно в любом случае подвязать карту.

Можете воспользоваться сервисом cashinout, или любым другим. Как выпустить карту, писал в этой статье

К слову сказать, я бы рекомендовал вам пользоваться сервисом CF, в том числе для покупки доменов. Так что будет не лишним иметь там привязанную карту.

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...

Важная информация

Вы принимаете наши Условия использования, Политика конфиденциальности, Правила. А также использование Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.

Яндекс.Метрика