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

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

Опубликовано (изменено)

IMG_0504.thumb.png.09309e0fd51fc045ecbec44af61784b9.png

KeenSnap - Бэкап конфигурации KeeneticOS

 

Возможности:

Спойлер

1. Бэкап нескольких объектов: Firmware, Startup-Config, Entware, WG private key

2. Архив можно сохранить/отправить в Telegram и/или смонтированный раздел (например внешний накопитель)

3. Запуск бэкапа через расписание (Создаётся самостоятельно, вешать его на что-либо необязательно)

4. При пороге архива в 49МБ он будет поделён на части для отправки в Telegram 

Установка:

Спойлер

Из под SSH ввести команду:

opkg update && opkg install curl && curl -L -s "https://raw.githubusercontent.com/spatiumstas/keensnap/main/install.sh" > /tmp/install.sh && sh /tmp/install.sh

Ручной запуска скрипта через keensnap или ./KeenSnap/keensnap.sh

Настройка:

Спойлер

1. Создать расписание

2. После запуска скрипта выбрать Настроить конфигурацию. В предложенном списке выбрать нужное расписание для частоты бэкапа. При первом запуске создастся файл конфигурации, в дальнейшем в нём записываются все настройки. Также скрипт спросит, где сохранять архив с копией устройства.

3. Перейти в Параметры бэкапа и выбрать нужные параметры. DELETE_ARCHIVE_AFTER_BACKUP - удаляет созданный архив. SEND_BACKUP_TG - отправляет в Telegram

4. В разделе Подключить Telegram можно указать данные, необходимые для отправки архива.

 

Репозиторий: https://github.com/spatiumstas/KeenSnap

Изменено пользователем spatiumstas
Опубликовано

Мне интересно просто... бекап этот вернёт прям к исходному состоянию при полнейшем сбросе устройства?

Опубликовано
41 минуту назад, MDP сказал:

Мне интересно просто... бекап этот вернёт прям к исходному состоянию при полнейшем сбросе устройства?

Почти. Mesh-систему только заново придется собирать.

Опубликовано
2 минуты назад, kaguyashaa сказал:

Бэкапить на уже подключенный usb диск где стоит Entware невозможно?

Если место позволяет - возможно

Опубликовано
9 минут назад, spatiumstas сказал:

Если место позволяет - возможно

Мне предложил только на 0. Встроенное хранилище (может не хватить места)
Ну и очевидно что бэкап падает в ошибку так как места не хватает.

Опубликовано
39 минут назад, kaguyashaa сказал:

Мне предложил только на 0. Встроенное хранилище (может не хватить места)
Ну и очевидно что бэкап падает в ошибку так как места не хватает.

Нужен вывод ‘show media’ в CLI

Опубликовано
Спойлер

(config)> show media

            media:
                 name: Media0

                  usb:
                     port: 2
                  version: 2.10

                state: ACTIVE
         manufacturer: Ugreen
              product: Ugreen Storage Device
               serial: 
                 size: 250059350016

            partition:
                     uuid: ff05caec-720e-41c3-85ea-6f75b4551069
                    label:
                   fstype: swap
                    state: MOUNTED
                    total: 2147479552
                     free: 2139041792

            partition:
                     uuid: d288b581-e087-45fa-a9f6-221a18777eb3
                    label:
                   fstype: ext4
                    state: MOUNTED
                    total: 201157316608
                     free: 200553148416

 

Опубликовано

Должно стать лучше.

Проблема была в завязке на label + uuid. 

31 минуту назад, kaguyashaa сказал:

  label:

Теперь если label пустой, отобразит 

31 минуту назад, kaguyashaa сказал:

manufacturer: Ugreen

 

Опубликовано

Приветствую, попробовал снова запустить и бэкап entware уходит в ошибку:
2025-02-26 12:58:32 [INFO] Запуск скрипта для расписания manual
2025-02-26 12:58:32 [INFO] Бэкап Entware...
2025-02-26 13:00:40 [ERROR] Ошибка при сохранении Entware
2025-02-26 13:00:40 [INFO] Бэкап startup-config...
2025-02-26 13:00:40 [SUCCESS] startup-config сохранён
2025-02-26 13:00:40 [INFO] Бэкап firmware...
2025-02-26 13:00:49 [SUCCESS] firmware сохранена
2025-02-26 13:00:49 [INFO] Бэкап WireGuard-Private-Key...
2025-02-26 13:00:49 [SUCCESS] WireGuard-Private-Key сохранён
2025-02-26 13:00:49 [INFO] Создание архива...
2025-02-26 13:01:40 [SUCCESS] Архив создан
2025-02-26 13:01:40 [INFO] Архив удалён
2025-02-26 13:01:40 [INFO] Скрипт завершил работу

Раздел выбран верно, по месту тоже всё ОК
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       202G  628M  191G   1% /tmp/mnt/d288b581-e087-45fa-a9f6-221a18777eb3
/dev/sda2       202G  628M  191G   1% /opt

Ещё момент, скрипт предлагает в качестве раздела для сохранения бэкапа SWAP

Конфиг: /opt/root/KeenSnap/log.txt
LOG_FILE="/opt/root/KeenSnap/log.txt"
PATH_SNAPD="/opt/root/KeenSnap/keensnap-init"
SCHEDULE_NAME="schedule1"
SELECTED_DRIVE="/tmp/mnt/d288b581-e087-45fa-a9f6-221a18777eb3"
BOT_TOKEN=""
CHAT_ID=""
BACKUP_STARTUP_CONFIG=true
BACKUP_FIRMWARE=true
BACKUP_ENTWARE=true
BACKUP_WG_PRIVATE_KEY=true
DELETE_ARCHIVE_AFTER_BACKUP=true
SEND_BACKUP_TG=false

Опубликовано
10 минут назад, kaguyashaa сказал:

Ошибка при сохранении Entware

Попробовать вручную

tar cvzf /tmp/mnt/d288b581-e087-45fa-a9f6-221a18777eb3/test_Entware.tar.gz -C /opt .

 

  • 4 месяца спустя...
Опубликовано (изменено)

Подскажите пожалуйста по работе KeenSnap. Поставил на keenetic ultra, настроил на бэкап на другой диск, подключенный к keenetic. Бэкап в telegramm не нужен.

Есть нексолько вопросов

При ручном бэкапе - архив создается в корне диска и по окончании работы скрипта - удаляется. Это баг или я что-то делаю не так?

Сам протупил.

Как-то можно делать копию не в корень, а в выбранную на диске для бэкапов папку? Переделал. Вроде ок.

Скрипт как-то удаляет старые архивы? Видимо нет

Изменено пользователем G V
Опубликовано (изменено)
37 минут назад, G V сказал:

При ручном бэкапе - архив создается в корне диска и по окончании работы скрипта - удаляется

В 23.02.2025 в 12:14, spatiumstas сказал:

DELETE_ARCHIVE_AFTER_BACKUP - удаляет созданный архив

 

37 минут назад, G V сказал:

Как-то можно делать копию не в корень, а в выбранную на диске для бэкапов папку?

Нет, но подумаю над предложением

37 минут назад, G V сказал:

Скрипт как-то удаляет старые архивы?

Нет

Изменено пользователем spatiumstas
Опубликовано

Спасибо. Добавить удаление старых архивов как тут и будет идеально.

 

Если решите дописать - выцепил нужное чтбы не искать:

Нужно добавить параметр в config

# Сколько дней хранить бэкапы.
DAYSTOR=15

 

И удаление старых файлов по дате

# Выводим в лог список удаленных файлов-архивов
logger -t $TAG "Remove old archives"
FILES=`find $BACSTORDIR -mtime +${DAYSTOR} -print -delete`
logger -t $TAG "Removed: $FILES"
logger -t $TAG "Exiting"

 

  • 1 месяц спустя...
Опубликовано

Спасибо, наконец настроил, после того как затер "лишний" файл конфигурации :D

Еще было бы полезно добавить хук (вызов внешнего скрипта) после создания архива, чтобы можно было заливать бэкап в любое место (rclone, scp, ...), без правки скрипта. Плюс другие действия, вроде ротации бэкапов.
Локально сделал. Если доберусь до меню настройки, то пулл-реквест отправлю =)

  • 1 месяц спустя...
Опубликовано (изменено)

Спасибо за скрипт. На свежем kn-1012 отлично работает!

А вот на древнем giga II kng_rb (Версия ОС2.16.D.12.0-11) пришлось обращаться за помощью к gemini.

Скрипт не хотел ни в какую видеть флешку dev/sda.

ndmc -c show media

на этой прошивке не работает.


Определяется через 

ndmc -c show usb

Сам диалог

Спойлер

Спасибо, что предоставили код исполняемого файла бэкапа (keensnap-init). Теперь мы можем точно локализовать и устранить проблему.

Вы совершенно правы — ошибка [ERROR] Выбранный накопитель backup не подключён возникает именно из-за логики проверки в этом скрипте, а не из-за фактического монтирования диска.

🛠️ Решение: Обход логики проверки диска
Проблемный код находится в функции main() (примерно строка 365) и использует устаревшую или ненадёжную в вашей версии NDMS команду ndmc -c show media:

Bash

# Исходная проблемная проверка в main():
# ...
        local device_uuid=$(echo "$SELECTED_DRIVE" | awk -F'/' '{print $4}')
        if [ -z "$SELECTED_DRIVE" ] || ([ "$SELECTED_DRIVE" != "/storage" ] && ! ndmc -c show media 2>/dev/null | grep -q "uuid: $device_uuid"); then
          drive_name=$(basename "$SELECTED_DRIVE")
          error "Выбранный накопитель $drive_name не подключён"
# ...
Поскольку мы знаем, что путь /opt/KeenSnap/backup (который вы, надеюсь, теперь используете) существует, мы можем заменить эту проверку на простую проверку существования каталога.

➡️ Ваш следующий шаг (Правка keensnap-init)
Откройте файл /opt/root/KeenSnap/keensnap-init для редактирования.

Найдите функцию main() (начинается примерно со строки 359).

Замените весь блок if/then/else на новую, более надёжную проверку:

Bash

# Строка ~365:
# ИСХОДНЫЙ КОД (ПРОБЛЕМНЫЙ):
# local device_uuid=$(echo "$SELECTED_DRIVE" | awk -F'/' '{print $4}')
# if [ -z "$SELECTED_DRIVE" ] || ([ "$SELECTED_DRIVE" != "/storage" ] && ! ndmc -c show media 2>/dev/null | grep -q "uuid: $device_uuid"); then
#   drive_name=$(basename "$SELECTED_DRIVE")
#   error "Выбранный накопитель $drive_name не подключён"
#   if [ "$SEND_BACKUP_TG" = "true" ]; then
#     send_to_telegram " Выбранный накопитель $drive_name не подключён" ""
#   fi
#   return 1
# fi

# НОВЫЙ КОД (НАДЁЖНАЯ ПРОВЕРКА):

if [ -z "$SELECTED_DRIVE" ]; then
  error "Путь к накопителю не задан в конфигурации"
  return 1
fi

# Проверка, существует ли папка и доступна ли она для записи
if [ ! -d "$SELECTED_DRIVE" ]; then
  drive_name=$(basename "$SELECTED_DRIVE")
  error "Выбранный накопитель $drive_name не подключён или путь не существует: $SELECTED_DRIVE"
  if [ "$SEND_BACKUP_TG" = "true" ]; then
    send_to_telegram " Выбранный накопитель $drive_name не подключён или путь не существует" ""
  fi
  return 1
fi
# Конец новой проверки
Примечание: Если вы уже перенастроили путь на /opt/KeenSnap/backup (как мы договорились в предыдущем шаге), эта проверка гарантированно пройдет, так как /opt всегда доступен, когда Entware запущен.

Сохраните файл.

Очистите и запустите:

Bash

dos2unix /opt/root/KeenSnap/keensnap-init
keensnap
# Выберите 4. Ручной бэкап
Если бэкап снова не запустится, это означает, что у вас нет доступа к Entware (/opt), или в системе отсутствует какая-то базовая утилита (tar, awk, curl), которая вызывает сбой.

Бекап работает.

KeenSnap_kng-rb.zip

Изменено пользователем rusC60
Спрятал под спойлер

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...

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

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.