В этой статье мы рассмотрим, как настроить автоматическое резервное копирование данных с использованием 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.
РФ карты не принимает.
НО без проблем принимает карты от Cashinout, сервис который я упоминал в этой статье:
Вы можете сделать хитро.
Оформить карту в Cashinout, пройти верификацию в CF, а затем удалить свою карту (деньги находящиеся на ней вернутся на ваш счет аккаунта Cashinout)
Для начала работы с Cloudflare R2 выполните следующие шаги:
Создайте аккаунт Cloudflare: Зарегистрируйтесь на сайте Cloudflare и войдите в свой аккаунт. (этот шаг я пропускаю, понимая что у вас он уже есть)
Создайте R2 хранилище:
В панели управления Cloudflare перейдите в раздел R2.
Создайте новый бакет, указав его имя и настройки.
Создайте API токен:
Перейдите в раздел API Tokens.
Нажмите кнопку Create Token.
Выберите Введите имя и укажите параметры так как на скриншоте
Нажмите Create Token и сохраните ваш токен. (можете пока просто не закрывать окно)
Установка и настройка Rclone
Установка и настройка Rclone
Установите Rclone:
curl https://rclone.org/install.sh | sudo bash
Настройте Rclone:
rclone config
Следуйте инструкциям для создания нового удаленного подключения:
n)New remote
name> s3cf
Type of storage to configure.Enter a string value.PressEnterfor the default("").Storage> s3
AWS AccessKey ID> YOUR_CLOUDFLARE_ACCESS_KEY
AWS SecretAccessKey> YOUR_CLOUDFLARE_SECRET_KEY
Region to connect to.Enter a string value.PressEnterfor the default("").
region>Endpointfor S3 API.Optional.Use an empty string for the default endpoint.Enter a string value.PressEnterfor 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.
Когда нужно будет указать в последнем этапе endpoint, вы можете взять их из настроек бакета.
openode (из моего примера) вводить не нужно!
Готово!
Чтобы проверить подключение, вы можете ввести команду:
rclone ls s3cf:openode
В данном случае s3cf - Это название конфига которое вы создавали на первом шаге rclone config
А openode - Это имя бакета которое вы создавали в CF.
Создание и настройка bash-скрипта
Для создания архива в скрипте будем использовать пакет zip для этого установим его:
apt install zip
Создайте файл скрипта 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 дней находящиеся в вашей папке!
Вы можете написать сейчас и зарегистрироваться позже.
Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.
Введение
В этой статье мы рассмотрим, как настроить автоматическое резервное копирование данных с использованием Rclone и Cloudflare R2. Мы создадим bash-скрипт, который будет создавать архив, загружать его в Cloudflare R2 и отправлять уведомления через Telegram. Также добавим этот скрипт в crontab для регулярного выполнения каждые 4 часа. Все это будет создавать архивы нашего мэйн сервера Marzban.
Что такое Rclone?
Rclone – это клиент командной строки для обеспечения работы и синхронизации файлов и директорий с облачными хранилищами. Облачный провайдер поддерживает множество, включая Amazon S3, Google Drive, Dropbox, и, конечно, Cloudflare R2. Rclone используется для резервного копирования файлов, синхронизации файлов между различными облачными и локальными хранилищами.
Различные функции Rclone включают:
Что такое Cloudflare R2?
Cloudflare R2 – это хранилище объектов, предоставляемое облачной службой безопасности Cloudflare. Оно предназначено для хранения больших объемов данных с минимальными затратами и высокой производительностью. R2 предоставляет доступ к данным через API, совместимый с S3, что позволяет использовать такие инструменты, как Rclone, для управления файлами.
Преимущества Cloudflare R2:
Настройка Cloudflare R2
К сожалению, первым делом, даже чтобы воспользоваться бесплатно, вам нужно будет привязать банковскую карту к своему аккаунту CF.
РФ карты не принимает.
НО без проблем принимает карты от Cashinout, сервис который я упоминал в этой статье:
Вы можете сделать хитро.
Оформить карту в Cashinout, пройти верификацию в CF, а затем удалить свою карту (деньги находящиеся на ней вернутся на ваш счет аккаунта Cashinout)
Для начала работы с Cloudflare R2 выполните следующие шаги:
Установка и настройка Rclone
Установка и настройка Rclone
Установите Rclone:
Настройте Rclone:
rclone configСледуйте инструкциям для создания нового удаленного подключения:
AWS Access Key ID> YOUR_CLOUDFLARE_ACCESS_KEY
AWS Secret Access Key> YOUR_CLOUDFLARE_SECRET_KEY
Эти параметры мы получаем из нашего окна с API ключами CF.
Когда нужно будет указать в последнем этапе endpoint, вы можете взять их из настроек бакета.
openode (из моего примера) вводить не нужно!
Готово!
Чтобы проверить подключение, вы можете ввести команду:
В данном случае s3cf - Это название конфига которое вы создавали на первом шаге rclone config
А openode - Это имя бакета которое вы создавали в CF.
Создание и настройка bash-скрипта
Для создания архива в скрипте будем использовать пакет zip для этого установим его:
apt install zipСоздайте файл скрипта backup_script.sh в папке /root/:
Вставьте следующий код:
Сохраняем.
Пояснение:
Здесь функция rclone которая будет автоматически следить за ротацией.
Имейте ввиду, что эта функция удалить ВСЕ файлы старше 7 дней находящиеся в вашей папке!
Здесь нам нужно обязательно задать наши ID для уведомлений в телеграм об успешном копировании.
ARCHIVE_NAME="OPENODE_backup_$DATE.zip" - тут можно задать свое имя архива
TARGET_DIR="s3cf:openode" - тут задаются ваши параметры из пунктов выше.
Сделайте скрипт исполняемым:
Можем попробовать запустить:
Если все прошло хорошо, и уведомления получены в телеграм, то можно настроить crontab:
Вставляем в пустую строку:
Готово!
Каждые 4 часа будут собираться архивы и приходить уведомления.
TOP HOSTERS: KAMATERA (30 дней бесплатного теста!)
Универсальный хостер №1 - 4VPS.su (2Гб\с сервера) - 10% скидка на первый заказ или 15% бонус на первое пополнение