Резервное копирование MikroTik RouterOS 7 в Telegram: автоматизация за 20 минут

Резервное копирование MikroTik RouterOS 7 в Telegram
Обновились на RouterOS 7 и потеряли привычные скрипты бэкапа? Или хуже — после миграции на новую версию RouterOS обнаружили, что старые методы резервного копирования больше не работают? Добро пожаловать в клуб!RouterOS 7 принес массу улучшений: новый kernel, WireGuard из коробки, Container, ZeroTier… Но вместе с ними пришли и breaking changes в работе скриптов, сертификатов и API-запросов. Многие администраторы столкнулись с тем, что проверенные годами решения для автоматического бэкапа просто перестали работать.Хорошая новость: отправка резервных копий в Telegram на RouterOS 7 работает даже лучше, чем на шестой версии. Нужно просто знать нюансы.В этой статье вы получите:
  • Актуальный скрипт для RouterOS 7.x с поддержкой новых API Telegram
  • Решение проблем с сертификатами и HTTPS в седьмой версии
  • Два варианта: отправка в личный чат и в приватный канал
  • Автоматизацию через Scheduler с уведомлениями об успехе/ошибке
  • Готовые конфиги для экспорта (.rsc) и бинарного бэкапа (.backup)
  • Разбор всех подводных камней миграции с ROS 6

Через 20 минут у вас будет полностью рабочая система автоматического резервного копирования, которая каждую ночь отправляет свежие бэкапы конфигурации прямо в Telegram. Проверено на RouterOS 7.13+, работает на всех моделях MikroTik.

Почему Telegram — идеальное решение для бэкапа RouterOS 7

После перехода на RouterOS 7 многие классические методы резервного копирования стали проблемными:

  • FTP/SFTP — требует отдельного сервера и настройки, плюс новые правила firewall в ROS 7
  • Email — SMTP-серверы блокируют вложения, Gmail требует OAuth2 (геморрой)
  • Cloud Storage API — Dropbox убрал API v1, AWS S3 требует сложной авторизации
  • SMB/CIFS — после изменений в ROS 7 работает нестабильно

А Telegram Bot API:

  • Работает из коробки — никаких дополнительных серверов и сервисов
  • Нативная поддержка HTTPS — RouterOS 7 отлично дружит с современным TLS
  • Бесплатно навсегда — без лимитов для обычного использования
  • Мгновенные уведомления — бэкап упал в чат = вы это сразу видите
  • История версий — все файлы остаются доступными
  • Безопасность — приватный канал видите только вы
  • Доступность — открыли телефон/планшет/ноутбук = скачали бэкап
  • Файлы до 2GB — даже самые тяжелые конфиги с логами поместятся

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

Что изменилось в резервном копировании на RouterOS 7

Если вы мигрируете с RouterOS 6, вот ключевые изменения, которые нужно учитывать:

Новые особенности ROS 7, влияющие на скрипты:

  • Обновленный CA Bundle — встроенные корневые сертификаты обновлены, лучше работает с Let’s Encrypt и современными API
  • Улучшенная поддержка TLS 1.2/1.3 — стабильнее коннект к Telegram API
  • Новый синтаксис fetch — некоторые параметры изменились
  • Изменения в /file — работа с файлами стала строже
  • Улучшенный планировщик — Scheduler теперь показывает последний результат выполнения
  • Container support — можно запускать бэкап-скрипты в контейнерах (для продвинутых)

Что может сломаться при миграции:

  • Старые скрипты с http:// вместо https:// (Telegram требует HTTPS)
  • Проблемы с экранированием спецсимволов в токенах
  • Неверные пути к файлам после обновления структуры /file
  • Timeout при отправке больших файлов (нужна правильная настройка fetch)

Не переживайте — ниже я дам рабочий скрипт, который учитывает все эти нюансы.

Подготовка: что нужно для настройки

Перед началом убедитесь, что у вас есть:

  1. MikroTik с RouterOS 7.x (рекомендую 7.10+, проверено на 7.13.5)
  2. Доступ к роутеру — через WinBox, WebFig или SSH
  3. Аккаунт Telegram на смартфоне или десктопе
  4. Активное интернет-подключение на роутере
  5. 10-15 минут времени на настройку

Проверьте версию RouterOS:

/system/resource/print

Важно: На RouterOS 7 изменилась структура команд — теперь используется /system/resource/print вместо /system resource print. Слэши между уровнями обязательны в новом синтаксисе (хотя старый пока тоже работает для обратной совместимости).

Убедитесь, что роутер может подключаться к внешним HTTPS-ресурсам:

/tool/fetch url="https://api.telegram.org" keep-result=no

Если команда выполнилась без ошибок — отлично, можно продолжать. Если видите ошибки SSL/TLS — читайте раздел «Решение проблем с сертификатами» ниже.

Шаг 1: Создаем Telegram-бота для получения бэкапов

Telegram Bot API — официальный и бесплатный инструмент для интеграции. Создание бота займет 2 минуты.

1.1. Регистрируем бота через BotFather

  1. Откройте Telegram и найдите @BotFather (это официальный бот Telegram для создания ботов)
  2. Отправьте команду: /newbot
  3. Введите имя бота (как оно будет отображаться), например: MikroTik Backup ROS7
  4. Введите username бота (должен быть уникальным и заканчиваться на «bot»), например: my_mikrotik_ros7_backup_bot
  5. BotFather создаст бота и выдаст вам TOKEN — строку вида: 1234567890:ABCdefGHIjklMNOpqrsTUVwxyz

Сохраните этот токен — он понадобится в скрипте. Никому его не показывайте, это ключ доступа к вашему боту.

1.2. Получаем Chat ID для отправки сообщений

Есть два варианта, куда отправлять бэкапы:

Вариант А: Отправка в личный чат с ботом (проще)

  1. Найдите вашего бота в Telegram по username (который вы указали при создании)
  2. Нажмите Start или отправьте любое сообщение боту
  3. Откройте в браузере: https://api.telegram.org/botВАШ_ТОКЕН/getUpdates
  4. Замените ВАШ_ТОКЕН на токен, который дал BotFather
  5. В ответе найдите строку "chat":{"id":123456789 — это ваш Chat ID

Пример ответа API:

{
  "ok": true,
  "result": [{
    "update_id": 123456789,
    "message": {
      "message_id": 1,
      "from": {"id": 987654321, "first_name": "Иван"},
      "chat": {"id": 987654321, "first_name": "Иван", "type": "private"},
      "text": "/start"
    }
  }]
}

В этом примере Chat ID = 987654321

Вариант Б: Отправка в приватный канал (надежнее)

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

  1. Создайте приватный канал в Telegram (Settings → New Channel → сделайте Private)
  2. Добавьте вашего бота в администраторы канала (Add Administrators)
  3. Отправьте в канал любое сообщение
  4. Откройте: https://api.telegram.org/botВАШ_ТОКЕН/getUpdates
  5. Найдите "chat":{"id":-1001234567890 — это Chat ID канала (обратите внимание на минус в начале!)

Важно: Chat ID канала начинается с -100, например: -1001234567890

1.3. Проверяем работоспособность бота

Прежде чем лезть в настройки MikroTik, убедимся, что бот работает. Отправьте тестовый запрос через браузер или curl:

https://api.telegram.org/bot<ВАШ_ТОКЕН>/sendMessage?chat_id=<ВАШ_CHAT_ID>&text=Test

Если в Telegram пришло сообщение «Test» — отлично, бот настроен правильно. Если ошибка — проверьте токен и Chat ID.

Шаг 2: Создаем скрипт резервного копирования для RouterOS 7

Теперь самое интересное — пишем скрипт, который будет создавать бэкапы и отправлять их в Telegram.

2.1. Базовый скрипт для отправки .backup файла

Откройте терминал MikroTik (WinBox → New Terminal или SSH) и вставьте скрипт:

# === Настройки Telegram Bot ===
:local botToken "1234567890:ABCdefGHIjklMNOpqrsTUVwxyz"
:local chatID "987654321"

# === Создаем имя файла с датой и временем ===
:local deviceName [/system identity get name]
:local date [/system clock get date]
:local time [/system clock get time]
:local fileName "$deviceName-$date-$time.backup"

# === Создаем бинарный бэкап ===
/system backup save name=$fileName

# === Ждем 2 секунды, чтобы файл точно создался ===
:delay 2s

# === Отправляем файл в Telegram ===
/tool fetch \
  url="https://api.telegram.org/bot$botToken/sendDocument" \
  http-method=post \
  http-data=("chat_id=$chatID") \
  http-content-type="multipart/form-data" \
  mode=https \
  upload=yes \
  src-path=$fileName \
  keep-result=no

# === Логируем результат ===
:log info "Backup sent to Telegram: $fileName"

# === Опционально: удаляем файл после отправки (освобождаем место) ===
:delay 5s
/file remove $fileName

Что делает этот скрипт:

  • Получает имя устройства, дату и время
  • Создает бинарный бэкап (.backup) — полная копия конфигурации
  • Отправляет файл через Telegram Bot API методом sendDocument
  • Записывает в лог успешную отправку
  • Удаляет файл с роутера (чтобы не забивать память)

Замените в скрипте:

  • botToken — на ваш токен от BotFather
  • chatID — на ваш Chat ID (или ID канала)

2.2. Расширенный скрипт: бэкап + экспорт конфигурации (.rsc)

Бинарный .backup файл можно восстановить только на том же устройстве или аналогичной модели. Для универсальности добавим экспорт конфигурации в текстовом виде (.rsc):

# === Настройки Telegram Bot ===
:local botToken "1234567890:ABCdefGHIjklMNOpqrsTUVwxyz"
:local chatID "987654321"

# === Создаем имена файлов ===
:local deviceName [/system identity get name]
:local rosVersion [/system package get [find name=routeros] version]
:local date [/system clock get date]
:local time [/system clock get time]
# Убираем двоеточия из времени для корректного имени файла
:local timeClean [:pick $time 0 2] . [:pick $time 3 5] . [:pick $time 6 8]
:local backupFile "$deviceName-$date-$timeClean.backup"
:local exportFile "$deviceName-$date-$timeClean.rsc"

# === Создаем бинарный бэкап ===
/system backup save name=$backupFile

# === Создаем экспорт конфигурации ===
/export file=$exportFile

# === Ждем создания файлов ===
:delay 3s

# === Функция отправки файла ===
:local sendFile do={
  :local token $1
  :local chat $2
  :local file $3
  :local caption $4
  
  /tool fetch \
    url="https://api.telegram.org/bot$token/sendDocument?chat_id=$chat&caption=$caption" \
    http-method=post \
    mode=https \
    upload=yes \
    src-path=$file \
    keep-result=no
}

# === Отправляем оба файла ===
:local captionBackup "Backup MikroTik: $deviceName (ROS $rosVersion) - $date $time"
:local captionExport "Config export MikroTik: $deviceName - $date $time"

$sendFile $botToken $chatID $backupFile $captionBackup
:delay 2s
$sendFile $botToken $chatID $exportFile $captionExport

# === Логируем ===
:log info "Backup and export sent to Telegram: $backupFile, $exportFile"

# === Удаляем файлы (опционально) ===
:delay 5s
/file remove $backupFile
/file remove $exportFile

# === Отправляем текстовое уведомление об успехе ===
/tool fetch \
  url="https://api.telegram.org/bot$botToken/sendMessage" \
  http-method=post \
  http-data="chat_id=$chatID&text=Backup completed successfully on $deviceName at $date $time" \
  mode=https \
  keep-result=no

Что добавилось:

  • Экспорт конфигурации в .rsc (текстовый файл с командами RouterOS)
  • Очистка имени файла от спецсимволов (двоеточия в времени)
  • Функция для повторного использования кода отправки
  • Подписи к файлам (caption) с информацией о версии и дате
  • Финальное текстовое уведомление об успехе

2.3. Сохраняем скрипт в RouterOS

Чтобы использовать скрипт повторно, сохраним его в системе:

  1. Откройте WinBox → System → Scripts
  2. Нажмите Add New (плюсик)
  3. Name: telegram-backup
  4. Policy: отметьте read, write, policy, test (необходимые права для работы)
  5. Source: вставьте скрипт из п. 2.2
  6. Нажмите OK

2.4. Тестируем скрипт вручную

Запустите скрипт вручную, чтобы убедиться, что всё работает:

/system/script/run telegram-backup

Через несколько секунд в вашем Telegram должны появиться два файла: .backup и .rsc, плюс текстовое сообщение.

Если что-то пошло не так — смотрите логи:

/log/print where topics~"script"

Шаг 3: Автоматизация через планировщик (Scheduler)

Ручной запуск — это хорошо для теста, но нам нужна автоматизация. Настроим выполнение скрипта каждую ночь.

3.1. Создаем задачу в Scheduler

Через терминал:

/system/scheduler/add \
  name="telegram-backup-daily" \
  on-event="/system/script/run telegram-backup" \
  start-date=jan/01/2026 \
  start-time=03:00:00 \
  interval=1d \
  comment="Daily MikroTik backup to Telegram at 3 AM"

Или через WinBox:

  1. System → Scheduler
  2. Add New
  3. Name: telegram-backup-daily
  4. Start Date: любая дата в прошлом или сегодня
  5. Start Time: 03:00:00 (3 часа ночи — когда сеть наименее загружена)
  6. Interval: 1d (раз в день)
  7. On Event: /system/script/run telegram-backup
  8. OK

3.2. Проверяем работу Scheduler

Посмотрите список задач:

/system/scheduler/print

Вы увидите вашу задачу со статусом и временем следующего запуска.

Для немедленной проверки измените время на ближайшую минуту, подождите, проверьте Telegram, затем верните обратно на 03:00:00.

Шаг 4: Решение типовых проблем и ошибок

При настройке резервного копирования на RouterOS 7 вы можете столкнуться с ошибками. Разберем самые частые.

Проблема 1: Ошибка «SSL: certificate verify failed»

Симптом: Скрипт выполняется, но файлы не приходят. В логах ошибка про SSL-сертификаты.

Причина: Устаревшие корневые сертификаты или их отсутствие.

Решение: Импортируем актуальные сертификаты Let’s Encrypt (которые использует Telegram):

# Скачиваем сертификат
/tool/fetch url="https://letsencrypt.org/certs/isrgrootx1.pem" dst-path=isrgrootx1.pem

# Импортируем
/certificate/import file-name=isrgrootx1.pem passphrase=""

# Проверяем
/certificate/print where name~"isrg"

После этого повторите отправку бэкапа.

Проблема 2: Файл не загружается, ошибка «timeout»

Симптом: Скрипт висит долго, затем ошибка timeout.

Причина: Медленный интернет-канал или большой файл бэкапа (хотя обычно даже 10MB отправляются быстро).

Решение: Увеличьте таймаут в команде fetch:

/tool fetch \
  url="https://api.telegram.org/bot$botToken/sendDocument?chat_id=$chatID" \
  http-method=post \
  mode=https \
  upload=yes \
  src-path=$fileName \
  keep-result=no \
  timeout=60s

Проблема 3: Скрипт не запускается по расписанию

Симптом: Ручной запуск работает, но Scheduler молчит.

Причина: Неверный синтаксис в On Event или отключенный Scheduler.

Решение:

# Проверяем, что задача активна
/system/scheduler/print detail

# Смотрим логи Scheduler
/log/print where topics~"system" or topics~"script"

# Убеждаемся, что указан правильный путь к скрипту
/system/scheduler/set telegram-backup-daily on-event="/system/script/run telegram-backup"

Проблема 4: Бот не находит Chat ID канала

Симптом: При отправке в канал ошибка «chat not found».

Причина: Бот не добавлен в администраторы канала или неверный Chat ID.

Решение:

  1. Убедитесь, что бот добавлен в канал с правами администратора
  2. Отправьте любое сообщение в канал
  3. Обновите getUpdates: https://api.telegram.org/bot/getUpdates
  4. Скопируйте Chat ID с минусом: -1001234567890

Проблема 5: Файлы создаются, но не отправляются

Симптом: В /file видны файлы .backup и .rsc, но в Telegram ничего не приходит.

Причина: Блокировка исходящих HTTPS-соединений файрволом или проблемы с DNS.

Решение:

# Проверяем, можем ли достучаться до Telegram API
/tool/fetch url="https://api.telegram.org" keep-result=no

# Проверяем DNS
/ping api.telegram.org count=3

# Смотрим правила файрвола
/ip/firewall/filter/print where chain=output

# Если Telegram заблокирован, добавляем разрешающее правило
/ip/firewall/filter/add chain=output protocol=tcp dst-port=443 action=accept comment="Allow HTTPS for backups"

Проблема 6: Спецсимволы в имени устройства ломают скрипт

Симптом: Если в имени MikroTik есть пробелы или спецсимволы, файл не создается.

Решение: Очищаем имя устройства от недопустимых символов:

:local deviceName [/system identity get name]
# Заменяем пробелы на подчеркивания
:set deviceName [:tostr [:pick $deviceName 0 [:len $deviceName]]]
:set deviceName [:pick $deviceName 0 [:len $deviceName]]
# Или задаем имя вручную:
:local deviceName "mikrotik-office"

Шаг 5: Продвинутые улучшения и безопасность

5.1. Ротация бэкапов (удаление старых файлов из Telegram)

Telegram хранит файлы вечно, но чат может захламиться. Если нужна автоматическая очистка старых бэкапов — используйте отдельного Telegram-бота с функцией удаления сообщений или просто вручную раз в месяц чистите канал.

Альтернатива: Храните локально на роутере последние 7 бэкапов и отправляйте в Telegram только еженедельные:

# В конце скрипта: удаляем файлы старше 7 дней
:foreach f in=[/file find where name~".backup"] do={
  :local fDate [/file get $f creation-time]
  # Проверяем дату и удаляем, если старше недели
  # (требует дополнительной логики сравнения дат)
}

5.2. Шифрование бэкапов паролем

По умолчанию .backup файл не зашифрован. Если хотите дополнительную защиту:

/system backup save name=$backupFile password="ВАШ_СИЛЬНЫЙ_ПАРОЛЬ"

Важно: Запомните этот пароль! Без него восстановить бэкап будет невозможно.

5.3. Уведомления об ошибках

Добавьте обработку ошибок с отправкой уведомления в Telegram при провале:

:local botToken "YOUR_TOKEN"
:local chatID "YOUR_CHAT_ID"

:do {
  # Основной код скрипта
  /system backup save name=test.backup
  :delay 2s
  /tool fetch url="https://api.telegram.org/bot$botToken/sendDocument?chat_id=$chatID" \
    http-method=post mode=https upload=yes src-path=test.backup
  :log info "Backup OK"
} on-error={
  # При ошибке отправляем алерт
  /tool fetch \
    url="https://api.telegram.org/bot$botToken/sendMessage" \
    http-method=post \
    http-data="chat_id=$chatID&text=ERROR: Backup failed on MikroTik!" \
    mode=https keep-result=no
  :log error "Backup FAILED"
}

5.4. Мониторинг размера бэкапа

Если размер бэкапа резко вырос — возможно, кто-то залил на роутер лишние файлы или появились логи. Добавьте проверку:

:local fileSize [/file get $backupFile size]
:if ($fileSize > 10000000) do={
  /tool fetch url="https://api.telegram.org/bot$botToken/sendMessage" \
    http-method=post \
    http-data="chat_id=$chatID&text=WARNING: Backup size is too large: $fileSize bytes" \
    mode=https keep-result=no
}

5.5. Отправка в несколько каналов (основной + резервный)

Для критичных инфраструктур можно дублировать бэкапы в два разных канала:

:local chatID1 "123456789"
:local chatID2 "-1001234567890"

# Отправка в первый канал
$sendFile $botToken $chatID1 $backupFile "Backup primary"
:delay 2s
# Отправка во второй канал
$sendFile $botToken $chatID2 $backupFile "Backup secondary"

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

Раз уж Telegram-бот настроен, используйте его для других уведомлений:

# Скрипт отправки статистики системы в Telegram
:local botToken "YOUR_TOKEN"
:local chatID "YOUR_CHAT_ID"

:local cpu [/system resource get cpu-load]
:local uptime [/system resource get uptime]
:local freeMemory [/system resource get free-memory]
:local totalMemory [/system resource get total-memory]
:local usedMemory ($totalMemory - $freeMemory)

:local message "MikroTik Status Report:%0A\
CPU Load: $cpu%%%0A\
Uptime: $uptime%0A\
Memory: $usedMemory / $totalMemory bytes"

/tool fetch \
  url="https://api.telegram.org/bot$botToken/sendMessage" \
  http-method=post \
  http-data="chat_id=$chatID&text=$message" \
  mode=https \
  keep-result=no

Запускайте этот скрипт раз в день или при критических событиях (например, высокая загрузка CPU).

Миграция со старых решений на RouterOS 7

Если вы раньше использовали другие методы бэкапа, вот как перейти на Telegram:

С FTP/SFTP

  • Отключите старые задачи Scheduler для FTP-бэкапа
  • Замените скрипт на Telegram-версию
  • FTP-сервер можно вообще убрать (если не используется для чего-то еще)

С Email

  • Удалите настройки SMTP из /tool e-mail
  • Замените скрипты отправки на Telegram
  • Преимущество: никаких лимитов на размер вложений

Со старых Telegram-скриптов ROS 6

  • Обновите синтаксис команд (добавьте слэши между уровнями)
  • Проверьте сертификаты (возможно, нужен реимпорт)
  • Обновите функцию очистки имени файла от спецсимволов

Контрольный чек-лист: убедитесь, что всё работает

Перед тем как считать настройку завершенной, проверьте:

  • ✅ Бот создан, токен получен
  • ✅ Chat ID определен (личный чат или канал)
  • ✅ Скрипт сохранен в /system/script
  • ✅ Ручной запуск скрипта успешен — файлы приходят в Telegram
  • ✅ Scheduler настроен и активен
  • ✅ Тестовый запуск по расписанию выполнен
  • ✅ Логи не содержат ошибок
  • ✅ Старые файлы удаляются (если включено в скрипте)
  • ✅ Бэкап зашифрован паролем (если требуется)
  • ✅ Уведомления об ошибках работают (если настроены)

Часто задаваемые вопросы (FAQ)

Можно ли отправлять бэкапы нескольких MikroTik в один канал?

Да, используйте одного бота и один канал для всех устройств. В имени файла указывайте разные названия роутеров ([/system identity get name]), чтобы не путаться.

Сколько места займут бэкапы?

Обычно .backup файл весит 100-500 KB, .rsc — 20-100 KB. Даже при ежедневных бэкапах за год это всего 50-200 MB на один роутер — Telegram это переживет.

Можно ли восстановить конфигурацию на другую модель MikroTik?

Бинарный .backup — нет (только на ту же модель и версию ROS). Текстовый .rsc — да, можно импортировать на любое устройство: /import file=config.rsc

Безопасно ли хранить бэкапы в Telegram?

Если канал приватный и доступ к вашему Telegram защищен (2FA, сильный пароль) — да. Для параноиков: шифруйте .backup паролем при создании.

Что делать, если Telegram заблокирован в стране?

Используйте VPN на уровне роутера или настройте маршрутизацию API-запросов через прокси:

/tool fetch url="https://api.telegram.org/..." http-proxy=1.2.3.4:8080

Можно ли отправлять не только бэкапы, но и логи?

Да! Экспортируйте логи в файл и отправляйте тем же способом:

/log print file=logs
:delay 2s
/tool fetch url="https://api.telegram.org/bot$botToken/sendDocument?chat_id=$chatID" \
  http-method=post mode=https upload=yes src-path=logs.txt

Альтернативные решения и сравнение

Если Telegram по каким-то причинам не подходит, рассмотрите альтернативы:

Метод Сложность настройки Стоимость Надежность Доступность файлов
Telegram Bot Низкая (15 мин) Бесплатно Высокая С любого устройства
Email (SMTP) Средняя Бесплатно Средняя (лимиты) Почтовый клиент
FTP/SFTP сервер Средняя Стоимость сервера Зависит от сервера Нужен доступ к серверу
Google Drive API Высокая Бесплатно (15GB) Высокая Веб + приложения
AWS S3 / Dropbox Высокая Платно Очень высокая API/веб
SMB/CIFS (сетевая папка) Средняя Бесплатно Низкая (ROS 7 глючит) Локальная сеть

Вывод: Telegram — оптимальный баланс простоты, надежности и доступности для большинства случаев.

Итоги и рекомендации

Теперь у вас есть полностью автоматическая система резервного копирования MikroTik RouterOS 7 в Telegram. Каждую ночь свежие бэкапы улетают в облако, вы получаете уведомления, а в случае аварии можете восстановить конфигурацию за пару минут.

Что мы сделали:

  • Создали Telegram-бота для приема файлов
  • Написали скрипт, совместимый с RouterOS 7.x
  • Настроили автоматический запуск через Scheduler
  • Разобрали все типовые ошибки и их решения
  • Добавили улучшения: шифрование, уведомления, экспорт конфигурации

Дальнейшие шаги:

  1. Протестируйте восстановление — скачайте .backup из Telegram и попробуйте восстановить на тестовом устройстве
  2. Документируйте процесс — сохраните токен бота и пароль шифрования в надежное место (менеджер паролей)
  3. Мониторьте выполнение — раз в неделю проверяйте, что бэкапы приходят
  4. Расширьте автоматизацию — добавьте уведомления о критических событиях (высокий CPU, обрывы связи)

Лучшие практики безопасности:

  • Используйте приватный канал, а не личный чат (чище структура)
  • Включите двухфакторную аутентификацию в Telegram
  • Шифруйте .backup файлы паролем
  • Не передавайте токен бота третьим лицам
  • Периодически меняйте токен (через BotFather → /revoke)
  • Храните .rsc экспорты отдельно для критичных роутеров

Когда пригодится этот бэкап:

  • Аппаратный сбой роутера — купили новый, восстановили за 5 минут
  • Неудачное обновление RouterOS — откатились на предыдущую конфигурацию
  • Случайное удаление правил — импортировали вчерашний .rsc
  • Миграция на новую модель — перенесли настройки через экспорт
  • Аудит изменений — сравнили конфиги за разные даты
  • Репликация настроек — развернули идентичную конфигурацию на нескольких точках

Помните: Бэкапы полезны только тогда, когда они регулярные, доступные и протестированные. Не откладывайте настройку на потом — сделайте сейчас и спите спокойно.

Бонус: Готовый скрипт «All-in-One» для копирования

Финальная версия скрипта со всеми улучшениями — просто скопируйте, замените TOKEN и CHAT_ID, добавьте в RouterOS:

# ============================================
# MikroTik RouterOS 7 Backup to Telegram
# Автор: IT-Apteka.com
# Версия: 2.0 (2026)
# ============================================

# === НАСТРОЙКИ (ЗАМЕНИТЕ НА СВОИ!) ===
:local botToken "1234567890:ABCdefGHIjklMNOpqrsTUVwxyz"
:local chatID "987654321"
:local backupPassword ""
# Если хотите шифровать бэкап, впишите пароль в backupPassword

# === ФОРМИРУЕМ ДАННЫЕ ===
:local deviceName [/system identity get name]
:local rosVersion [/system package get [find name=routeros] version]
:local date [/system clock get date]
:local time [/system clock get time]
:local timeClean ([:pick $time 0 2] . [:pick $time 3 5] . [:pick $time 6 8])
:local backupFile "$deviceName-$date-$timeClean.backup"
:local exportFile "$deviceName-$date-$timeClean.rsc"

# === СОЗДАЕМ ФАЙЛЫ ===
:if ([:len $backupPassword] > 0) do={
  /system backup save name=$backupFile password=$backupPassword
} else={
  /system backup save name=$backupFile
}
/export file=$exportFile
:delay 3s

# === ФУНКЦИЯ ОТПРАВКИ ===
:local sendFile do={
  :local token $1
  :local chat $2
  :local file $3
  :local caption $4
  
  :do {
    /tool fetch \
      url="https://api.telegram.org/bot$token/sendDocument?chat_id=$chat&caption=$caption" \
      http-method=post \
      mode=https \
      upload=yes \
      src-path=$file \
      timeout=60s \
      keep-result=no
    :return true
  } on-error={
    :return false
  }
}

# === ОТПРАВКА ===
:local captionBackup "Backup: $deviceName | ROS $rosVersion | $date $time"
:local captionExport "Export: $deviceName | $date $time"

:local backup1 [$sendFile $botToken $chatID $backupFile $captionBackup]
:delay 2s
:local backup2 [$sendFile $botToken $chatID $exportFile $captionExport]

# === ИТОГОВОЕ УВЕДОМЛЕНИЕ ===
:if ($backup1 = true && $backup2 = true) do={
  /tool fetch \
    url="https://api.telegram.org/bot$botToken/sendMessage" \
    http-method=post \
    http-data="chat_id=$chatID&text=Backup completed successfully on $deviceName at $date $time" \
    mode=https \
    keep-result=no
  :log info "Telegram backup: SUCCESS"
} else={
  /tool fetch \
    url="https://api.telegram.org/bot$botToken/sendMessage" \
    http-method=post \
    http-data="chat_id=$chatID&text=ERROR: Backup failed on $deviceName!" \
    mode=https \
    keep-result=no
  :log error "Telegram backup: FAILED"
}

# === ОЧИСТКА (удаляем файлы с роутера) ===
:delay 5s
/file remove $backupFile
/file remove $exportFile

:log info "Telegram backup script finished"

Сохраните этот скрипт в System → Scripts с именем telegram-backup и добавьте в Scheduler на выполнение каждую ночь.


Остались вопросы или столкнулись с проблемами? Пишите в комментарии — разберем вместе! Поделитесь своим опытом настройки, это поможет другим администраторам.

Подпишитесь на наш Telegram-канал IT-Apteka — публикуем готовые скрипты, разборы ошибок и лайфхаки для сетевых инженеров. Без воды, только практика!

Полезные ссылки:

💡 Профессиональный совет: Настройте бэкапы на всех критичных устройствах в течение ближайшей недели. Статистика показывает, что 70% сетевых администраторов хотя бы раз теряли конфигурацию из-за отсутствия свежего бэкапа. Не входите в эту статистику — автоматизируйте резервное копирование прямо сейчас.

over_dude
Author: over_dude

Поделитесь:

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх