Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • Changelogs
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Настройка
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    RouterOS
    Полностью работающий скрипт резервного копирования Mikrotik Router OS на локальное хранилище и загрузку на FTP

    Полностью работающий скрипт резервного копирования Mikrotik Router OS на локальное хранилище и загрузку на FTP

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Полностью работающий скрипт резервного копирования Mikrotik Router OS на локальное хранилище и загрузку на FTP, RouterOS
     
    fra81ita
    Guest
    #1
    0
    01.04.2020 15:32:00
    Всем привет! Я искал этот скрипт на форуме, но нашёл только кое-какие куски, которые не совсем подходили под мои задачи. Публикую его здесь просто для справки — может кому-то пригодится. У нас он в работе уже пару недель.

    Этот скрипт создаёт локальную резервную копию и экспорт (мы запускаем его ежедневно), а затем загружает файлы на внешний FTP-сервер с добавлением даты к имени файла. При этом на локальной машине остаётся версия файлов, которая заменяется каждый день, чтобы не копилось много файлов и не заканчивалось место (если хотите, можете раскомментировать 3 строки и удалять локальные бэкапы).

    Скопируйте и вставьте этот текст в свой скрипт.

    ### Задаём локальные переменные. Измените значение в кавычках "" под своё окружение. Кавычки не удаляйте.

    :local ftpserver "FTP-SERVER-FQDN_or_IP-ADDRESS"  
    :local username "FTP-SERVER-USERNAME"  
    :local password "FTP-SERVER-PASSWORD"  

    ### Устанавливаем переменные имён локального и удалённого файлов. Менять только если хотите сменить формат имени файла.  
    ### Локальное имя файла всегда одинаковое, чтобы не копилось много файлов и не заканчивалось место, а "remote" — с датой.

    :local hostname [/system identity get name]
    :local date ([:pick [/system clock get date] 7 11] . [:pick [/system clock get date] 0 3] . [:pick [/system clock get date] 4 6]);
    :local localfilename "$hostname-Backup-Daily";  
    :local remotefilename "$hostname-$date";  

    ### Для отладки раскомментируйте следующие строки (уберите решётки)  
    :log info "$localfilename";  
    :log info "$remotefilename";  
    :log info "$hostname";  
    :log info "$date";  

    ### Запускаем бэкап  
    :log info "STARTING BACKUP";  

    ### Создаём файл бэкапа и экспортируем настройки  
    export compact file="$localfilename"  
    /system backup save name="$localfilename"  
    :log info "Backup Created Successfully"  

    ### Загружаем конфигурационный файл на FTP  
    /tool fetch address=$ftpserver src-path="$localfilename.backup" user=$username mode=ftp password=$password dst-path="$remotefilename.backup" upload=yes  
    :log info "Config Uploaded Successfully"  

    ### Загружаем файл бэкапа на FTP  
    /tool fetch address=$ftpserver src-path="$localfilename.rsc" user=$username mode=ftp password=$password dst-path="$remotefilename.rsc" upload=yes  
    :log info "Backup Uploaded Successfully"  

    ### Ждём 2 секунды перед следующими действиями  
    delay 2;  

    ### Уберите решётки в следующих строках, если хотите удалить локальные бэкапы после загрузки. Я обычно их оставляю — удобно иметь их под рукой.  
    #/file remove "$localfilename.backup"  
    #/file remove "$localfilename.rsc"  
    #:log info "Local Backup Files Deleted Successfully"  

    ### Завершаем бэкап  
    :log info "BACKUP FINISHED";  

    Если вам удобнее, скопируйте и вставьте следующий текст в терминал — он создаст скрипт и ежедневное расписание, которое стартует в 22:00. Поменяйте переменные в первых строках.

     
    /system scheduler  
    add interval=1d name=Backup_Daily on-event="/system script run Backup_Daily" policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon start-date=jan/01/1970 start-time=22:00:00  
     
    /system script  
    add dont-require-permissions=no name=Backup_Daily owner=admin policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#  
    ## Задаём локальные переменные. Измените значения в \"\" под своё окружение. Кавычки не удаляйте.  
    :local ftpserver \"FTP-SERVER-FQDN_or_IP-ADDRESS\"  
    :local username \"FTP-SERVER-USERNAME\"  
    :local password \"FTP-SERVER-PASSWORD\"  
     
    ### Устанавливаем имена локальных и удалённых файлов. Меняйте только если хотите изменить формат имени файла.  
    ### Локальное имя файла всегда одинаковое, чтобы не копилось много файлов и не заканчивалось место.  
    :local hostname [/system identity get name]
    :local date ([:pick [/system clock get date] 7 11] \
    . [:pick [/system clock get date] 0 3] \
    . [:pick [/system clock get date] 4 6]);
    :local localfilename \"\$hostname-Backup-Daily\";  
    :local remotefilename \"\$hostname-\$date\";  
     
    ### Для отладки раскомментируйте строки ниже  
    :log info \"\$localfilename\";  
    :log info \"\$remotefilename\";  
    :log info \"\$hostname\";  
    :log info \"\$date\";  
     
    ### Запуск бэкапа  
    :log info \"STARTING BACKUP\";  
     
    # Создаём файл бэкапа и экспортируем конфигурацию.  
    export compact file=\"\$localfilename\"  
    /system backup save name=\"\$localfilename\"  
    :log info \"Backup Created Successfully\"  
     
    # Загружаем конфигурационный файл на FTP.  
    /tool fetch address=\$ftpserver src-path=\"\$localfilename.backup\" user=\$username mode=ftp password=\$password dst-path=\"\$remotefilename.backup\" upload=yes  
    :log info \"Config Uploaded Successfully\"  
     
    # Загружаем файл бэкапа на FTP.  
    /tool fetch address=\$ftpserver src-path=\"\$localfilename.rsc\" user=\$username mode=ftp password=\$password dst-path=\"\$remotefilename.rsc\" upload=yes  
    :log info \"Backup Uploaded Successfully\"  
     
    ### Ждём 2 секунды  
    delay 2;  
     
    ### Уберите решётки ниже, чтобы удалять локальные файлы после загрузки  
    #/file remove \"\$localfilename.backup\"  
    #/file remove \"\$localfilename.rsc\"  
    #:log info \"Local Backup Files Deleted Successfully\"  
     
    ### Завершаем бэкап  
    :log info \"BACKUP FINISHED\";  
    "  

    Надеюсь, это будет полезно всем.  
    Francesco Capuano
     
     
     
    rextended
    Guest
    #2
    0
    08.08.2021 23:58:00
    Если хотите сделать полный бэкап всего на RouterBOARD, используйте это как образец для резервного копирования всех остальных частей: http://forum.mikrotik.com/t/router-crashes-are-wiping-the-config/149189/7
     
     
     
    gogotha
    Guest
    #3
    0
    11.08.2021 00:38:00
    Выглядит здорово! Интересно, можно ли зашифровать резервные данные до загрузки через FTP или зашифровать скрипты, которые ты мне присылал по электронной почте? Я разговаривал с одним из наших консультантов и говорил, что тестирую загрузку через FTP, а он чуть не поморщился из-за самого FTP. Проверил загрузки — они не зашифрованы. Большую часть дел мы делаем через VPN, но у нас есть несколько устройств на границе сети.
     
     
     
    rextended
    Guest
    #4
    0
    11.08.2021 00:43:00
    Ничего не шифруется и не может быть зашифровано, кроме файла с расширением «.backup». Вы можете отправить FTP на другой RouterBOARD под вашим контролем вместо внешнего FTP, или же отправить резервную копию по электронной почте через TLS, либо использовать sftp, https и так далее, и тому подобное.
     
     
     
    oh3mbc
    Guest
    #5
    0
    27.03.2022 06:27:00
    Это действительно полезно, прямо сейчас запускаю это на всех своих устройствах! Вот одна идея, которая пришла мне в голову… Как насчёт того, чтобы отмечать версию ROS и держать один бэкап на случай изменения версии? Это могло бы пригодиться, если в новой версии появятся нежелательные функции или, не побоюсь сказать, даже ошибки. Тогда можно просто откатиться на предыдущую «последнюю рабочую» версию.
     
     
     
    rextended
    Guest
    #6
    0
    28.03.2022 00:51:00
    Просто добавь версию ROS в название файла…
     
     
     
    dustojnikhummer
    Guest
    #7
    0
    09.10.2022 16:28:00
    Мне это очень нравится, но можно ли загружать в подпапку, а не прямо в корень /?
     
     
     
    jjdperryman
    Guest
    #8
    0
    27.10.2022 16:51:00
    Думаю, этот скрипт сломан в Mikrotik OS 6.49. export compact file=“$localfilename” похоже не выполняется. Я запускал эту команду в терминале — всё работает нормально, но в скрипте она не нравится системе. Даже заменял на /export — результат тот же.
     
     
     
    jack2020
    Guest
    #9
    0
    11.02.2023 17:28:00
    Добрый день, пытался использовать этот скрипт на своём роутере с версией 7.7, но он не работает. Ничего не происходит. Будет ли он работать на этой версии? Спасибо за любую помощь.
     
     
     
    Jotne
    Guest
    #10
    0
    11.02.2023 18:23:00
    В RouterOS не хватает всего одной маленькой детали. После того как создаётся бэкап, сохранить файл и загрузить его. Также сделать хеш бэкап-файла. На следующий день, когда создаётся новый бэкап, сравнить его с вчерашним по хешу — если изменений нет, не отправлять файл на FTP.

    Используйте Splunk для логирования и мониторинга ваших роутеров MikroTik. —> MikroTik->Splunk  
    //data-discourse.cdn.mikrotik.com/original/2X/4/442e459c5ced45cb70e8a05e77e07cea6fee4928.gif

    Бэкап конфигурации на Gmail → Бэкап  
    Блокировка пользователей, которые пытаются использовать закрытые порты → Блокировка
     
     
     
    swits1109
    Guest
    #11
    0
    14.02.2023 07:48:00
    Согласен, кажется, этот скрипт больше не работает.
     
     
     
    jjdperryman
    Guest
    #12
    0
    01.03.2023 20:49:00
    Мне удалось запустить скрипт, изменив имя роутера — раньше он назывался ‘tower_site 12/04’. Как только я поменял его на ‘tower_site 12-04’, все мои резервные скрипты, включая этот FTP-бэкап, начали работать.
     
     
     
    diamuxin
    Guest
    #13
    0
    02.03.2023 16:51:00
    Очень интересная идея, а как мы можем сравнить хэш предыдущего файла? Мой текущий скрипт создаёт ежедневный файл с датой в имени, и я понимаю, что для сравнения по хэшу имя файла должно быть всегда одинаковым, верно? Мой скрипт будет выглядеть примерно так:

    :local time [/system clock get time]
    :local date [/system clock get date]
    :local sysname [/system identity get name]
    :local Version [/system resource get version]
    :local mydatetime  
    :local textfilename  
    :local backupfilename

    :local ftpserver "192.168.88.247"  
    :local username "mikrotik"  
    :local password "MyStrongPassword!"  
    :local port 2121

    :log info ">>> START FTP Backup <<<"

    :set mydatetime ($"date" . " " . $"time")  
    :set textfilename ($"mydatetime" . "-" . $"sysname" . ".rsc")  
    :set backupfilename ($"mydatetime" . "-" . $"sysname" . ".backup")

    :if ($Version~"^7") do={  
       :execute [/export file=$"textfilename" show-sensitive]
    } else={  
       :execute [/export file=$"textfilename"]
    }  
    :execute [/system backup save name=$"backupfilename"]

    :delay 3s  
    /tool fetch address=$ftpserver mode=ftp user=$username password=$password \  
       src-path=$textfilename dst-path=$textfilename upload=yes port=$port;  
    :log info "FTP Backup: Отправлен $textfilename через FTP"

    :delay 3s  
    /tool fetch address=$ftpserver mode=ftp user=$username password=$password \  
       src-path=$backupfilename dst-path=$backupfilename upload=yes port=$port;  
    :log info "FTP Backup: Отправлен $backupfilename через FTP"

    :delay 5s  
    /file remove $textfilename  
    /file remove $backupfilename

    # Модуль Telegram  
    :local MessageText "\F0\9F\92\BE $sysname: FTP Backup OK"  
    :local SendTelegramMessage [:parse [/system script get MyTGBotSendMessage source]]
    $SendTelegramMessage MessageText=$MessageText

    :log info ">>> FTP Backup OK <<<"

    Заранее спасибо!
     
     
     
    Jotne
    Guest
    #14
    0
    02.03.2023 18:08:00
    Это произошло, когда MT добавил хеш-функцию в RouterOS.
     
     
     
    rextended
    Guest
    #15
    0
    02.03.2023 23:45:00
    Имя файла не используется для вычисления хеша (или всё же используется???). .backup файлы каждый раз разные, потому что это не просто .rsc, там ещё содержится история терминала, логи и так далее. Почти невозможно получить два одинаковых бэкапа без копирования файла... Я каждый день экспортирую .rsc со всех устройств, и время от времени все файлы отправляю на внутренний FTP-сервер, а с помощью команды «diff», игнорируя первую строку, получаю ежедневный отчёт о том, что где-то что-то изменилось. Простое вычисление хеша для проверки содержимого файла на изменения возможно в RouterOS, что-то простое, без сложных алгоритмов типа CRC или SHA, просто чтобы увидеть, отличается ли что-то.
     
     
     
    Maggiore81
    Guest
    #16
    0
    13.01.2024 08:42:00
    Этот скрипт работает с ошибками начиная с версии 7.13 http://forum.mikrotik.com/t/v7-13-5-stable-is-released/171923/594
     
     
     
    rextended
    Guest
    #17
    0
    13.01.2024 09:04:00
    http://forum.mikrotik.com/t/v7-13-5-stable-is-released/171923/595
     
     
     
    Maggiore81
    Guest
    #18
    0
    13.01.2024 09:06:00
    Спасибо, rextended, я открыл SUP-140393.
     
     
     
    jaclaz
    Guest
    #19
    0
    13.01.2024 10:17:00
    Только в качестве маленького примечания: меня часто (как динозавра из эпохи DOS и зелёно-жёлтых мониторов) высмеивали (в других случаях, не связанных с Mikrotik) за то, что я всегда использую подчёркивание вместо пробелов в названиях файлов, систем и так далее. Я почти подумал бросить эту привычку, но (скорее из-за лени и упрямства, чем по другим причинам) так и не изменил её. После всех этих лет мы снова возвращаемся к истокам.
     
     
     
    gogotha
    Guest
    #20
    0
    08.08.2021 18:26:00
    Я понимаю, что это немного устарело, но ВАУ. Очень понравилось, спасибо, что поделились, работает идеально!!!
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры