Резервное копирование файлов серверов
Для резервного копирования файлов с удаленного сервера на сервер Nextcloud можно использовать программу rclone и простой скрипт резервного копирования.
В скрипте также предусмотрено прикрепление ссылки для быстрой загрузки
Для настройки надо ссылки на быструю загрузку необходимо указать корректную ссылку на сервер nextcloud.
Настройка rclone для Nextcloud
Создание скрипта
Установка программы архиватора:
apt install zip
Создадим скрипт:
nano /root/backup_script.sh
Скрипт для резервного копирования:
#!/bin/bash
# Переменные для Telegram
TELEGRAM_BOT_TOKEN=""
TELEGRAM_CHAT_ID=""
TELEGRAM_THREAD_ID=""
# Настройки rclone
TARGET_DIR="Backups/Selectl_SPB"
RCLONE_NAME="Nextcloud"
#Базовая ссылка Nextcloud
NEXTCLOUD_URL="https://nextcloud.domein.ru/remote.php/dav/files"
NEXTCLOUD_USER="user"
# Папки для архивации
SRC_DIRS=("/home/deniom/docker")
# Данные сервера
SERVER_NAME="ServerName"
# Папка для хранения архива
DEST_DIR="/root"
# Имя архива с датой и временем
DATE=$(date +'%Y-%m-%d_%H-%M-%S')
ARCHIVE_NAME="${SERVER_NAME}_backup_$DATE.zip"
ARCHIVE_PATH="$DEST_DIR/$ARCHIVE_NAME"
# Создание архива
zip -r "$ARCHIVE_PATH" "${SRC_DIRS[@]}"
RCLONE_TARGET="$RCLONE_NAME:$TARGET_DIR"
# Функция для отправки уведомления в 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 parse_mode="Markdown" \
-d message_thread_id="${TELEGRAM_THREAD_ID}" -d text="${MESSAGE}"
}
# Загрузка архива и отправка уведомления
if rclone copy "$ARCHIVE_PATH" "$RCLONE_TARGET"; then
send_telegram_message "✅ Создана [резервная копия]($NEXTCLOUD_URL/$NEXTCLOUD_USER/$TARGET_DIR/$ARCHIVE_NAME) сервера $SERVER_NAME"
# Удаление локального архива после копирования
rm "$ARCHIVE_PATH"
else
send_telegram_message "❌ Ошибка резервного копирования сервера $SERVER_NAME"
fi
# Ротация архивов (оставить только за последние 7 дней)
rclone delete --min-age 7d "$RCLONE_TARGET"
Настройка скрипта
TELEGRAM_BOT_TOKEN
- токен телеграмм бота для уведомлений
TELEGRAM_CHAT_ID
- id чата для отправки сообщений
TELEGRAM_THREAD_ID
- тема супер группы
Если не надо использовать темы для отправки сообщений то необходимо удалить -d message_thread_id="${TELEGRAM_THREAD_ID}"
TARGET_DIR
- папка хранения файлов в Nextcloud
RCLONE_NAME
- имя задания rclone указанное на первом шаге мастера настройки
NEXTCLOUD_URL
- адрес nextcloud
NEXTCLOUD_USER
- имя пользователя с маленькой буквы
Параметры NEXTCLOUD_URL
и NEXTCLOUD_USER
являются необязательными и используются для формирования ссылки загрузки в сообщении телеграмм. Если данная ссылка не нужна надо заменить [резервная копия]($NEXTCLOUD_URL/$NEXTCLOUD_USER/$TARGET_DIR/$ARCHIVE_NAME)
на резервная копия
SRC_DIRS
- папки для резервного копирования, может быть задано как несколько папок. Пример: ("/opt/test" "/var/lib/test")
SERVER_NAME
- имя сервера, используется в названии архива и в сообщении
DEST_DIR
- временная папка хранения архива, после отправки архив удаляется
Автоматический запуск
Для автоматического запуска необходимо добавить запись в crontab
crontab -e
0 5 * * * /root/backup_script.sh >/dev/null 2>&1