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

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

  • 1 год спустя...
  • Ответов 82
  • Создана
  • Последний ответ

Топ авторов темы

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

есть ли возможность сохранять прошивку с версией в названии файла, как это сейчас происходит при сохранении через веб?.

Опубликовано
17 часов назад, Orbit сказал:

есть ли возможность сохранять прошивку с версией в названии файла, как это сейчас происходит при сохранении через веб?.

Это не сложно. Можно заменить блок кода в скрипте, где делается бэкап прошивки на код следующего вида:

Скрытый текст

# Делаем архив прошивки
if [ "$IsFirm" = "1" ]
    then
        logger -t $TAG "Starting backup firmware"
        REL=`ndmq -p 'show version' -P 'release'`
        ndmq -p "copy flash:/firmware ${BACFIRMDIR}firmware-${DATE}" -P message
        if [ -f "${BACSTORDIR}firmware-$REL" ]
            then
                CMPFIRM=`cmp ${BACSTORDIR}firmware-$REL ${BACSTORDIR}firmware-${DATE}`
                if [ -n "$CMPFIRM" ]
                    then
                        logger -t $TAG "Firmware is changed. Do new copy."
                        cp -f ${BACSTORDIR}firmware-${DATE} ${BACSTORDIR}firmware-$REL-new
                        mv -f ${BACSTORDIR}firmware-$REL ${BACSTORDIR}firmware-${DATE}
                        mv ${BACSTORDIR}firmware-$REL-new ${BACSTORDIR}firmware-$REL
                    else
                        logger -t $TAG "Firmware is not changed. Renew current firmware copy."
                        mv -f ${BACSTORDIR}firmware-${DATE} ${BACSTORDIR}firmware-$REL
                fi
            else
                logger -t $TAG "Current firmware copy not found. Is it first run? Do firmware copy."
                cp ${BACSTORDIR}firmware-${DATE} ${BACSTORDIR}firmware-$REL
        fi
    else
        logger -t $TAG "Skiping backup firmware"
fi

 

Ключевой элемент здесь - получение номера версии прошивки: REL=`ndmq -p 'show version' -P 'release'`

У себя код поменял. Вроде работает.

Отредактировать первое сообщение уже не могу. Так что меняйте, проверяйте и у себя.

  • 3 месяца спустя...
Опубликовано
find $BACSTORDIR -mtime +${DAYSTOR} -delete

А здесь поправить, чтоб файлы типа   firmware-3.05.A.18.0-0 и тп вообще не удалялись.

Опубликовано
21 час назад, Orbit сказал:

find $BACSTORDIR -mtime +${DAYSTOR} -delete

А здесь поправить, чтоб файлы типа   firmware-3.05.A.18.0-0 и тп вообще не удалялись.

Тоже несложно. Достаточно мануал на команду find посмотреть. Выглядететь будет примерно так:

find $BACSTORDIR -mtime +${DAYSTOR} -a ! -name 'firmware*' -delete

 

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

Камрады подскажите почему скрипт бэкапит прошивку и конфиг странно? Конфиг в архиве и без и файл прошивки под разными именами.  

Скрытый текст

1862169285_.jpg.be7da0c70c856d498bd181a06cf34e57.jpg

 

Изменено пользователем batonskij
Опубликовано (изменено)
12 часа назад, batonskij сказал:

Камрады подскажите почему скрипт бэкапит прошивку и конфиг странно? Конфиг в архиве и без и файл прошивки под разными именами.  

Достаточно было почитать предыдущие сообщения. Комрады хотели (просили), чтобы предыдущие файлы прошивки не удалялись, а именовались по номеру прошивки и оставались на диске. Но по коду скрипта сама прошивка в архив вообще не кладется. Непонятно, почему у вас так происходит.

Что касается конфига, то его последняя версия кладется в файл  -cur. Если были изменения от текущего его содержимого (а у вас, наверное, конфиг изменялся), старая версия конфига как раз перемещается в архив с датой.

Не исключаю, что где-то в скрипте есть баг и нарушена логика именования файлов. У меня например вот такое текущее содержимое каталога с бэкапами (конфиг давно не менялся):

Скрытый текст

-rw-r--r--    1 root     root         12710 Oct 29 04:11 config-cur
-rw-r--r--    1 root     root      61940493 Oct 17 04:11 entware-2020-10-17.tgz
-rw-r--r--    1 root     root      61905163 Oct 18 04:11 entware-2020-10-18.tgz
-rw-r--r--    1 root     root      61900733 Oct 19 04:11 entware-2020-10-19.tgz
-rw-r--r--    1 root     root      62372808 Oct 20 04:11 entware-2020-10-20.tgz
-rw-r--r--    1 root     root      62372381 Oct 21 04:11 entware-2020-10-21.tgz
-rw-r--r--    1 root     root      62364753 Oct 22 04:11 entware-2020-10-22.tgz
-rw-r--r--    1 root     root      62357246 Oct 23 04:12 entware-2020-10-23.tgz
-rw-r--r--    1 root     root      61511681 Oct 24 04:11 entware-2020-10-24.tgz
-rw-r--r--    1 root     root      61622223 Oct 25 04:11 entware-2020-10-25.tgz
-rw-r--r--    1 root     root      61732790 Oct 26 04:11 entware-2020-10-26.tgz
-rw-r--r--    1 root     root      61726866 Oct 27 04:11 entware-2020-10-27.tgz
-rw-r--r--    1 root     root      61719782 Oct 28 04:11 entware-2020-10-28.tgz
-rw-r--r--    1 root     root      61741802 Oct 29 04:11 entware-2020-10-29.tgz
-rw-r--r--    1 root     root      12648508 Oct 22 04:11 firmware-2.16.D.6.0-1
-rw-r--r--    1 root     root      12648508 Oct 28 04:11 firmware-2.16.D.7.0-0
-rw-r--r--    1 root     root      12648508 Oct 29 04:12 firmware-2.16.D.7.0-1
-rw-r--r--    1 root     root      12648508 Oct 23 04:12 firmware-2020-10-23
-rw-r--r--    1 root     root      12648508 Oct 29 04:12 firmware-2020-10-29

На всякий случай выкладываю полный код скрипта последней версии (в первом собщении изменить уже не могу):

Скрытый текст

#!/opt/bin/sh

# VERSION 2.1

# Скрипт сохраняет резервную копию entware, конфига роутера и прошивки

prefix="/opt"
PATH=${prefix}/bin:${prefix}/sbin:/sbin:/bin:/usr/sbin:/usr/bin

#=====================================================================================
# Конфигурационные параметры скрипта
#=====================================================================================
# Префикс для записи сообщений в syslog
TAG=Backup

# Каталог, куда сохранять бэкапы
BACSTORDIR=/tmp/mnt/ADATA/backup/

# Какие компоненты бэкапить (1|0)
# Entware. Всегда сохраняется новая копия
IsEnt=1
# Конфигурация роутера. Сохраняется копия, если были изменения в конфиге
IsConf=1
# Прошивка. Создается резервная копия, если прошивка изменялась
IsFirm=1

# Префикс для имени файла с бэкапом
BACNAME=entware

# Что архивировать
BACDIR=/opt/

# Какие каталоги пропускать при бэкапе entware
EXCLUDE="
tmp
var/log
share/nginx/html
var/mysql
"

# При определении изменялся ли конфиг, не учитывать данные строки (через экраннированн[Kсимвол "Иm{И" -> "\|".
# При сравнении копий конфига не учитываются служебные строки, начинающиеся на '! $$$', и с
трока 'clock date', т.к. она обновляется при считывании конфига
# m{учше не трогать :)
EXCLCONFCMD='\! \$\$\$\|clock date'

# Путь к резервной копии прошивки на USB FLASH. Определить в CLI по команде 'ls ?'. Обычно это мет
ка диска в виде 'LABEL:/'
BACFIRMDIR=ADATA:/backup/

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

#=====================================================================================
# Начало скрипта
#=====================================================================================
# Текущая дата для формирования имени файла с архивом
DATE=`date +%Y-%m-%d`

logger -t $TAG "Starting process"
cd $BACDIR

# Делаем архив entware
if [ "$IsEnt" = "1" ]
    then
        logger -t $TAG "Starting backup entware"
        echo "$EXCLUDE" | tar -X - -cf - * | gzip > ${BACSTORDIR}${BACNAME}-${DATE}.tgz
    else
        logger -t $TAG "Skiping backup entware"
fi

# Делаем архив конфига
if [ "$IsConf" = "1" ]
    then
        logger -t $TAG "Starting backup config"
        ndmq -p "show running-config" -P message > ${BACSTORDIR}config-${DATE}
        if [ -f "${BACSTORDIR}config-cur" ]
            then
                OLDCONF=`grep -v "${EXCLCONFCMD}" ${BACSTORDIR}config-cur`
                CURCONF=`grep -v "${EXCLCONFCMD}" ${BACSTORDIR}config-${DATE}`
                if [ "$OLDCONF" != "$CURCONF" ]
                    then
                        logger -t $TAG "Config is changed. Do new copy."
                        cp -f ${BACSTORDIR}config-${DATE} ${BACSTORDIR}config-cur-new
                        mv -f ${BACSTORDIR}config-cur ${BACSTORDIR}config-${DATE}
                        gzip -f ${BACSTORDIR}config-${DATE}
                        mv ${BACSTORDIR}config-cur-new ${BACSTORDIR}config-cur
                    else
                        logger -t $TAG "Config is not changed. Renew current config copy."
                        mv -f ${BACSTORDIR}config-${DATE} ${BACSTORDIR}config-cur
                fi
            else
                logger -t $TAG "Current config copy not found. Is it first run? Do config copy."
                cp ${BACSTORDIR}config-${DATE} ${BACSTORDIR}config-cur
                gzip -f ${BACSTORDIR}config-${DATE}
        fi
    else
        logger -t $TAG "Skiping backup config"
fi
# Делаем архив прошивки
if [ "$IsFirm" = "1" ]
    then
        logger -t $TAG "Starting backup firmware"
        REL=`ndmq -p 'show version' -P 'release'`
        ndmq -p "copy flash:/firmware ${BACFIRMDIR}firmware-${DATE}" -P message
        if [ -f "${BACSTORDIR}firmware-$REL" ]
            then
                CMPFIRM=`cmp ${BACSTORDIR}firmware-$REL ${BACSTORDIR}firmware-${DATE}`
                if [ -n "$CMPFIRM" ]
                    then
                        logger -t $TAG "Firmware is changed. Do new copy."
                        cp -f ${BACSTORDIR}firmware-${DATE} ${BACSTORDIR}firmware-$REL-new
                        mv -f ${BACSTORDIR}firmware-$REL ${BACSTORDIR}firmware-${DATE}
                        mv ${BACSTORDIR}firmware-$REL-new ${BACSTORDIR}firmware-$REL
                    else
                        logger -t $TAG "Firmware is not changed. Renew current firmware copy."
                        mv -f ${BACSTORDIR}firmware-${DATE} ${BACSTORDIR}firmware-$REL
                fi
            else
                logger -t $TAG "Current firmware copy not found. Is it first run? Do firmware copy."
                cp ${BACSTORDIR}firmware-${DATE} ${BACSTORDIR}firmware-$REL
        fi
    else
        logger -t $TAG "Skiping backup firmware"
fi

logger -t $TAG "Finished"
cd $BACSTORDIR

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

 

Можно переместить текущее содержимое бэкапов в другой каталог и проверить функционал по новой.

Изменено пользователем gvan
  • 3 месяца спустя...
Опубликовано
10 минут назад, roma33region сказал:

подскажите как сделать чтоб сохранение бекампа было например на гугл диск

В рамках данного решения (скрипта) этого не предусмотрено. Посмотрите каталог готовых решений для opkg. Возможно, что-то найдете для копирования (переноса) данных на облачные сервисы. Например, упоминается rclone.

Соответственно, если получится его настроить, то в конец скрипта добавите необходимые строки для синхронизации локального каталога с бэкапами на облако.

  • 3 недели спустя...
Опубликовано
В 29.10.2020 в 08:31, gvan сказал:

На всякий случай выкладываю полный код скрипта последней версии (в первом собщении изменить уже не могу):

Приветствую
Можно попросить выложить файлом, а то здесь форматирование бъётся

Скрытый текст

# При определении изменялся ли конфиг, не учитывать данные строки (через экраннированн[Kсимвол "Иm{И" -> "\|".
# При сравнении копий конфига не учитываются служебные строки, начинающиеся на '! $$$', и с
трока 'clock date', т.к. она обновляется при считывании конфига
# m{учше не трогать :)

 


 

Опубликовано
3 часа назад, yrzorg сказал:

Можно попросить выложить файлом, а то здесь форматирование бъётся

Да, вижу, что кое-что побилось. Выкладываю файл backup.zip

  • 11 месяцев спустя...
Опубликовано
В 14.03.2021 в 12:56, gvan сказал:

Да, вижу, что кое-что побилось. Выкладываю файл backup.zip

Подскажите, почему может игнорироваться выполнение строки
 

FILES=`find $BACSTORDIR -mtime +${DAYSTOR} -print -delete`

В логе роутера вижу что якобы идет удаление лишних файлов, но ничего не удаляется

Спасибо

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

Попробуйте, заменив переменные пути и времени хранения файлов реальными значениями, выполнить команду find из командной строки. Только уберите кавычки. Как выглядит команда в командной строке, и что выводится при ее выполнении?

Если понятнее не станет, выложите свой скрипт сюда. 

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

Понял в чем дело . В последней секции скрипта мы переходим в $BACSTORDIR и потом ищем опять в find  $BACSTORDIR.
Получается производим поиск find  в $BACSTORDIR/$BACSTORDIR/фильтр_поиска

а такой директории не существует

cd $BACSTORDIR - лишний

Скрытый текст

 

logger -t $TAG "Finished"
cd $BACSTORDIR

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

 

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

Вы так и не показали свой скрипт. Или хотя бы чему у вас равна переменная $BACSTORDIR. 

У меня именно такой скрипт, как я привел в примере. Предварительный переход в каталог команде find мешать никак не может. Да, наверно можно обойтись и без него. 

Опубликовано (изменено)
4 минуты назад, gvan сказал:

Вы так и не показали свой скрипт. Или хотя бы чему у вас равна переменная $BACSTORDIR. 

У меня именно такой скрипт, как я привел в примере. Предварительный переход в каталог команде find мешать никак не может. Да, наверно можно обойтись и без него. 

Скрытый текст

#!/opt/bin/sh

# VERSION 2.1

# Скрипт сохраняет резервную копию entware, конфига роутера и прошивки

prefix="/opt"
PATH=${prefix}/bin:${prefix}/sbin:/sbin:/bin:/usr/sbin:/usr/bin

#=====================================================================================
# Конфигурационные параметры скрипта
#=====================================================================================
# Префикс для записи сообщений в syslog
TAG="Backup"

# Каталог, куда сохранять бэкапы
BACSTORDIR=backup/

# Какие компоненты бэкапить (1|0)
# Entware. Всегда сохраняется новая копия
IsEnt=1
# Конфигурация роутера. Сохраняется копия, если были изменения в конфиге
IsConf=1
# Прошивка. Создается резервная копия, если прошивка изменялась
IsFirm=1

# Префикс для имени файла с бэкапом
BACNAME=entware

# Что архивировать
BACDIR=/opt/

# Какие каталоги пропускать при бэкапе entware
EXCLUDE="
tmp
var/log
var/cache
share/nginx/html
var/mysql
backup
"

# При определении изменялся ли конфиг, не учитывать данные строки (через экраннированный символ "ИЛИ" -> "\|".
# При сравнении копий конфига не учитываются служебные строки, начинающиеся на '! $$$', и строка 'clock date', т.к. она обновляется при считывании конфига
# Лучше не трогать :)
EXCLCONFCMD='\! \$\$\$\|clock date'

# Путь к резервной копии прошивки на USB FLASH. Определить в CLI по команде 'ls ?'. Обычно это метка диска в виде 'LABEL:/'
BACFIRMDIR=OS:/backup/

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

#=====================================================================================
# Начало скрипта
#=====================================================================================

# Текущая дата для формирования имени файла с архивом
DATE=`date +%Y-%m-%d`

logger -t $TAG "Starting process"
cd $BACDIR

# Делаем архив entware
if [ "$IsEnt" = "1" ]
    then
    logger -t $TAG "Starting backup entware"
    echo "$EXCLUDE" | tar -X - -cf - * | gzip > ${BACSTORDIR}${BACNAME}-${DATE}.tgz
    else
    logger -t $TAG "Skiping backup entware"
fi

# Делаем архив конфига
if [ "$IsConf" = "1" ]
    then
    logger -t $TAG "Starting backup config"
    ndmq -p "show running-config" -P message > ${BACSTORDIR}config-${DATE}
    if [ -f "${BACSTORDIR}config-cur" ]
        then
        OLDCONF=`grep -v "${EXCLCONFCMD}" ${BACSTORDIR}config-cur`
        CURCONF=`grep -v "${EXCLCONFCMD}" ${BACSTORDIR}config-${DATE}`
        if [ "$OLDCONF" != "$CURCONF" ]
            then
            logger -t $TAG "Config is changed. Do new copy."
            cp -f ${BACSTORDIR}config-${DATE} ${BACSTORDIR}config-cur-new
            mv -f ${BACSTORDIR}config-cur ${BACSTORDIR}config-${DATE}
            gzip -f ${BACSTORDIR}config-${DATE}
            mv ${BACSTORDIR}config-cur-new ${BACSTORDIR}config-cur
            else
            logger -t $TAG "Config is not changed. Renew current config copy."
            mv -f ${BACSTORDIR}config-${DATE} ${BACSTORDIR}config-cur
        fi
        else
        logger -t $TAG "Current config copy not found. Is it first run? Do config copy."
        cp ${BACSTORDIR}config-${DATE} ${BACSTORDIR}config-cur
        gzip -f ${BACSTORDIR}config-${DATE}
    fi
    else
    logger -t $TAG "Skiping backup config"
fi

# Делаем архив прошивки
if [ "$IsFirm" = "1" ]
    then
        logger -t $TAG "Starting backup firmware"
        REL=`ndmq -p 'show version' -P 'release'`
        ndmq -p "copy flash:/firmware ${BACFIRMDIR}firmware-${DATE}" -P message
        if [ -f "${BACSTORDIR}firmware-$REL" ]
            then
                CMPFIRM=`cmp ${BACSTORDIR}firmware-$REL ${BACSTORDIR}firmware-${DATE}`
                if [ -n "$CMPFIRM" ]
                    then
                        logger -t $TAG "Firmware is changed. Do new copy."
                        cp -f ${BACSTORDIR}firmware-${DATE} ${BACSTORDIR}firmware-$REL-new
                        mv -f ${BACSTORDIR}firmware-$REL ${BACSTORDIR}firmware-${DATE}
                        mv ${BACSTORDIR}firmware-$REL-new ${BACSTORDIR}firmware-$REL
                    else
                        logger -t $TAG "Firmware is not changed. Renew current firmware copy."
                        mv -f ${BACSTORDIR}firmware-${DATE} ${BACSTORDIR}firmware-$REL
                fi
            else
                logger -t $TAG "Current firmware copy not found. Is it first run? Do firmware copy."
                cp ${BACSTORDIR}firmware-${DATE} ${BACSTORDIR}firmware-$REL
        fi
    else
        logger -t $TAG "Skiping backup firmware"
fi

logger -t $TAG "Finished"  
# Выводим в лог список удаленных файлов-архивов
logger -t $TAG "Remove old archives"
FILES=`find $BACSTORDIR -mtime +${DAYSTOR} -print -delete`
logger -t $TAG "Removed: $FILES"
logger -t $TAG "Copying to Yandex Disk..."
rclone copy $BACKSTORDIR  rem:/KN-1010_backup --log-file backup.log
logger -t $TAG "Backup and Sync finishes"
logger -t $TAG "Exiting"

У меня вот такой теперь. в моем случае, что бы работало как у вас, переменную
BACSTORDIR=backup/
надо указывать как BACSTORDIR=/opt/backup/

 

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

Ну, вот. Ошибка в переменной $BACSTORDIR. 

Она должна содержать полный путь к каталогу бэкапов. Т. е. начинаться со слэша. 

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

Спасибо за скрипт

Только установил Entware, и при выполнении скрипта вылезли ошибки:

ndmq: not found

Как выяснилось, пакет ndmq перенесен в архив и больше не входит в установку Entware, чтобы не устанавливать его из архива, я переделал скрипт на rci, изменения в строках 75, 104-105

Предварительно нужно установить пакет jq для разбора json

opkg install jq

Скрипт во вложении в архиве

backup_rci.zip

  • 2 недели спустя...
Опубликовано

Скриптом пользуюсь давно, все устраивало, но недавно заметил что невозможно восстановить при наличии в архиве Home Assistant. Что надо подправить? 

Скрытый текст
#!/opt/bin/sh

# VERSION 2.1

# Скрипт сохраняет резервную копию entware, конфига роутера и прошивки

prefix="/opt"
PATH=${prefix}/bin:${prefix}/sbin:/sbin:/bin:/usr/sbin:/usr/bin

#=====================================================================================
# Конфигурационные параметры скрипта
#=====================================================================================
# Префикс для записи сообщений в syslog
TAG=Backup

# Каталог, куда сохранять бэкапы
BACSTORDIR=/tmp/mnt/HDD/Backup/Entware/

# Какие компоненты бэкапить (1|0)
# Entware. Всегда сохраняется новая копия
IsEnt=1
# Конфигурация роутера. Сохраняется копия, если были изменения в конфиге
IsConf=1
# Прошивка. Создается резервная копия, если прошивка изменялась
IsFirm=1

# Префикс для имени файла с бэкапом
BACNAME=entware

# Что архивировать
BACDIR=/opt/

# Какие каталоги пропускать при бэкапе entware
# EXCLUDE="
# tmp
# var/log
# share/nginx/html
# var/mysql
# "

# При определении изменялся ли конфиг, не учитывать данные строки (через экраннированный символ "ИЛИ" -> "\|".
# При сравнении копий конфига не учитываются служебные строки, начинающиеся на '! $$$', и строка 'clock date', т.к. она обновляется при считывании конфига
# Лучше не трогать :)
EXCLCONFCMD='\! \$\$\$\|clock date'

# Путь к резервной копии прошивки на USB FLASH. Определить в CLI по команде 'ls ?'. Обычно это метка диска в виде 'LABEL:/'
BACFIRMDIR=HDD:/Backup/Entware/

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

#=====================================================================================
# Начало скрипта
#=====================================================================================
# Текущая дата для формирования имени файла с архивом
DATE=`date +%Y-%m-%d`

logger -t $TAG "Starting process"
cd $BACDIR

# Делаем архив entware
if [ "$IsEnt" = "1" ]
    then
        logger -t $TAG "Starting backup entware"
        echo "$EXCLUDE" | tar -X - -cf - * | gzip > ${BACSTORDIR}${BACNAME}-${DATE}.tgz
    else
        logger -t $TAG "Skiping backup entware"
fi

# Делаем архив конфига
if [ "$IsConf" = "1" ]
    then
        logger -t $TAG "Starting backup config"
        ndmq -p "show running-config" -P message > ${BACSTORDIR}config-${DATE}
        if [ -f "${BACSTORDIR}config-cur" ]
            then
                OLDCONF=`grep -v "${EXCLCONFCMD}" ${BACSTORDIR}config-cur`
                CURCONF=`grep -v "${EXCLCONFCMD}" ${BACSTORDIR}config-${DATE}`
                if [ "$OLDCONF" != "$CURCONF" ]
                    then
                        logger -t $TAG "Config is changed. Do new copy."
                        cp -f ${BACSTORDIR}config-${DATE} ${BACSTORDIR}config-cur-new
                        mv -f ${BACSTORDIR}config-cur ${BACSTORDIR}config-${DATE}
                        gzip -f ${BACSTORDIR}config-${DATE}
                        mv ${BACSTORDIR}config-cur-new ${BACSTORDIR}config-cur
                    else
                        logger -t $TAG "Config is not changed. Renew current config copy."
                        mv -f ${BACSTORDIR}config-${DATE} ${BACSTORDIR}config-cur
                fi
            else
                logger -t $TAG "Current config copy not found. Is it first run? Do config copy."
                cp ${BACSTORDIR}config-${DATE} ${BACSTORDIR}config-cur
                gzip -f ${BACSTORDIR}config-${DATE}
        fi
    else
        logger -t $TAG "Skiping backup config"
fi
# Делаем архив прошивки
if [ "$IsFirm" = "1" ]
    then
        logger -t $TAG "Starting backup firmware"
        REL=`ndmq -p 'show version' -P 'release'`
        ndmq -p "copy flash:/firmware ${BACFIRMDIR}firmware-${DATE}" -P message
        if [ -f "${BACSTORDIR}firmware-$REL" ]
            then
                CMPFIRM=`cmp ${BACSTORDIR}firmware-$REL ${BACSTORDIR}firmware-${DATE}`
                if [ -n "$CMPFIRM" ]
                    then
                        logger -t $TAG "Firmware is changed. Do new copy."
                        cp -f ${BACSTORDIR}firmware-${DATE} ${BACSTORDIR}firmware-$REL-new
                        mv -f ${BACSTORDIR}firmware-$REL ${BACSTORDIR}firmware-${DATE}
                        mv ${BACSTORDIR}firmware-$REL-new ${BACSTORDIR}firmware-$REL
                    else
                        logger -t $TAG "Firmware is not changed. Renew current firmware copy."
                        mv -f ${BACSTORDIR}firmware-${DATE} ${BACSTORDIR}firmware-$REL
                fi
            else
                logger -t $TAG "Current firmware copy not found. Is it first run? Do firmware copy."
                cp ${BACSTORDIR}firmware-${DATE} ${BACSTORDIR}firmware-$REL
        fi
    else
        logger -t $TAG "Skiping backup firmware"
fi

logger -t $TAG "Finished"
cd $BACSTORDIR

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

 

 

Опубликовано
В 23.04.2022 в 20:18, batonskij сказал:

Скриптом пользуюсь давно, все устраивало, но недавно заметил что невозможно восстановить при наличии в архиве Home Assistant. Что надо подправить? 

Недостаточно информации. Сам бэкап отрабатыает задачу и ошибок нет? Что значит невозможно восстановить? Какая ошибка возникает?

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

Сам бэкап отрабатыает задачу и ошибок нет

Все верно, с этим никаких проблем. 

 

17 минут назад, gvan сказал:

Что значит невозможно восстановить? Какая ошибка возникает?

Обычно делаю так, форматирую флеш, если что-то пошло не так, создаю на ней  папку install, туда закидывают файл бэкапа. Жму кнопки в веб морде роутера и жду, обычно все в течении 4-5 мин разворачивается.

Но если в файле бэкапа есть установленный HA, то все идет иначе, веб морда висит минут 10, далее на флешке в разделе под OPKG появляются не все папки и некоторая их часть зачеркнута. 

Опубликовано
5 часов назад, batonskij сказал:

Жму кнопки в веб морде роутера и жду, обычно все в течении 4-5 мин разворачивается.

Мне добавить к предыдущему сообщению нечего. Видимо, вопрос нужно задать веб-морде и кнопкам😄

Я сам, когда пробовал восстанавливать архив, для распаковки использовал команду tar, как указано в инструкции на первой странице.

Про функционал в веб-морды, в котором это можно сделать, мне ничего неизвестно. Возможно речь идет о "Приложение-Файлы и папки"? Но тогда вопрос больше к разработчикам прошивки. 

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

Опубликовано (изменено)
2 часа назад, gvan сказал:

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

Очень похоже на то, потому что разница между без HA и с HA развернутых пакетов 80 мб против 450 мб.  

Попробую командой tar когда в следующий раз сломаю. 

  

2 часа назад, gvan сказал:

Возможно речь идет о "Приложение-Файлы и папки"?

нет, речь идет о штатном установщике OPKG пакетов 

Скрытый текст

giga.thumb.jpg.b25029c0876ad0a140edf041ba2ab0f3.jpg

 

Изменено пользователем batonskij
Опубликовано
В 26.04.2022 в 16:43, batonskij сказал:

нет, речь идет о штатном установщике OPKG пакетов

Но тогда это вообще мимо кассы. Фактически создаваемый скриптом архив не является пакетом OPKG. Каким образом архив обрабатывает бинарник opkg, и почему на архивах малого размера это срабатывало, мне неизвестно.

Соответственно, как и писал выше, для распаковки архива нужно использовать команду tar.

Опубликовано
В 28.04.2022 в 10:37, gvan сказал:

для распаковки архива нужно использовать команду tar.

Воспользовался вашим советом, использовал tar, но при восстановлении все-равно что-то идет не так (((

Скрытый текст

OPKGGiga.jpg.fc710e727ad3882a47420ab24fa9f70c.jpg

 

Опубликовано
В 29.04.2022 в 22:03, batonskij сказал:

Воспользовался вашим советом, использовал tar, но при восстановлении все-равно что-то идет не так

Можно почитать в инете мануал по tar и перед распаковкой проверить содержимое архива. Например, список файлов сохранить в текстовый файл и посмотреть есть ли в нем все необходимое. Или вообще через менеджер файлов midnight commander войти внутрь архива (будет очень долгий процесс) и "походить" по структуре каталалогов-файлов.

Да и смоневаюсь я, что при распаковке архива tar-ом у вас не высветилось ни одной ошибки, если "что-то идет не так".

Опубликовано
В 02.05.2022 в 11:00, gvan сказал:

Да и сомневаюсь я, что при распаковке архива tar-ом у вас не высветилось ни одной ошибки, если "что-то идет не так".

Итак, все перепроверил, но все-равно у меня не выходит каменный цветочек ¯_(ツ)_/¯

Ошибок при распаковке нет, все файлы на месте, проверил и в проводнике и в mc содержимое, во время распаковки в морде кинетика видно что  папка bin присутствует, после окончания процесса она зачеркивается. 

Скрытый текст

OPKGGiga1.thumb.jpg.665fe80f687813125190ed5265845809.jpgOPKGGiga2.thumb.jpg.d136614b3b055232d16e728498567322.jpgOPKGGiga3.jpg.526670f93f7e0897192f6e32b2daead9.jpg

 

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

папка bin присутствует, после окончания процесса она зачеркивается. 

Я не знаю, что для морды означает зачеркнуто. 

Больше пользы было бы от вывода команды ls, где видны права на уже распакованную папку bin. Возможно по какой-то причине они не проставляются должным образом. 

Опубликовано (изменено)
19 часов назад, gvan сказал:

Больше пользы было бы от вывода команды ls

Скрытый текст

817567645_OPKGGiga5.thumb.jpg.78e4862e1f10f14d10d3a7298c9d1857.jpg

Скрытый текст

OPKGGiga6OK.jpg.c13afdfc529209a3b295274982ba3a1d.jpg

Ух ты, все заработало, прошу прощения что морочил голову зачеркнутой папкой bin в морде.

Прост включил использование вновь распакованного OPKG, папка "расчеркнулась" и все завелось! 

Изменено пользователем batonskij
bin
  • 3 месяца спустя...
Опубликовано (изменено)
В 14.04.2022 в 18:08, usan сказал:

Спасибо за скрипт

Только установил Entware, и при выполнении скрипта вылезли ошибки:

ndmq: not found

Как выяснилось, пакет ndmq перенесен в архив и больше не входит в установку Entware, чтобы не устанавливать его из архива, я переделал скрипт на rci, изменения в строках 75, 104-105

Предварительно нужно установить пакет jq для разбора json

opkg install jq

Скрипт во вложении в архиве

backup_rci.zip 1 \u041a\u0431 · 31 downloads

Спасибо. Сам переустановил entware с нуля и тоже увидел, что пакт ndmq исчез.

Для тех, кто не захочет переходить на rci, можно установить ndmq из архива (у меня просто еще были скрипты на него завязаны):

opkg install curl
curl https://bin.entware.net/mipselsf-k3.4/keenetic/archive/libndm_1.8.0-1_mipsel-3.4_kn.ipk >libndm.ipk
opkg install libndm.ipk
curl https://bin.entware.net/mipselsf-k3.4/keenetic/archive/ndmq_1.0.2-7_mipsel-3.4_kn.ipk > ndmq.ipk
opkg install ndmq.ipk

 

Изменено пользователем gvan

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

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

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

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

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

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

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

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

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

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

×
×
  • Создать...

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

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