iFinder Posted January 17, 2019 Share Posted January 17, 2019 Дельный совет от Александр Рыжов Восстанавливать можно, положив полученный архив на чистую флешку в папку install 1 Quote Link to comment Share on other sites More sharing options...
Orbit Posted May 19, 2020 Share Posted May 19, 2020 есть ли возможность сохранять прошивку с версией в названии файла, как это сейчас происходит при сохранении через веб?. Quote Link to comment Share on other sites More sharing options...
gvan Posted May 20, 2020 Author Share Posted May 20, 2020 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'` У себя код поменял. Вроде работает. Отредактировать первое сообщение уже не могу. Так что меняйте, проверяйте и у себя. 2 Quote Link to comment Share on other sites More sharing options...
Orbit Posted August 24, 2020 Share Posted August 24, 2020 find $BACSTORDIR -mtime +${DAYSTOR} -delete А здесь поправить, чтоб файлы типа firmware-3.05.A.18.0-0 и тп вообще не удалялись. Quote Link to comment Share on other sites More sharing options...
gvan Posted August 25, 2020 Author Share Posted August 25, 2020 21 час назад, Orbit сказал: find $BACSTORDIR -mtime +${DAYSTOR} -delete А здесь поправить, чтоб файлы типа firmware-3.05.A.18.0-0 и тп вообще не удалялись. Тоже несложно. Достаточно мануал на команду find посмотреть. Выглядететь будет примерно так: find $BACSTORDIR -mtime +${DAYSTOR} -a ! -name 'firmware*' -delete 1 Quote Link to comment Share on other sites More sharing options...
batonskij Posted October 28, 2020 Share Posted October 28, 2020 (edited) Камрады подскажите почему скрипт бэкапит прошивку и конфиг странно? Конфиг в архиве и без и файл прошивки под разными именами. Скрытый текст Edited October 28, 2020 by batonskij Quote Link to comment Share on other sites More sharing options...
gvan Posted October 29, 2020 Author Share Posted October 29, 2020 (edited) 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" Можно переместить текущее содержимое бэкапов в другой каталог и проверить функционал по новой. Edited October 29, 2020 by gvan 1 Quote Link to comment Share on other sites More sharing options...
roma33region Posted February 25, 2021 Share Posted February 25, 2021 привет подскажите как сделать чтоб сохранение бекампа было например на гугл диск Quote Link to comment Share on other sites More sharing options...
gvan Posted February 25, 2021 Author Share Posted February 25, 2021 10 минут назад, roma33region сказал: подскажите как сделать чтоб сохранение бекампа было например на гугл диск В рамках данного решения (скрипта) этого не предусмотрено. Посмотрите каталог готовых решений для opkg. Возможно, что-то найдете для копирования (переноса) данных на облачные сервисы. Например, упоминается rclone. Соответственно, если получится его настроить, то в конец скрипта добавите необходимые строки для синхронизации локального каталога с бэкапами на облако. Quote Link to comment Share on other sites More sharing options...
yrzorg Posted March 14, 2021 Share Posted March 14, 2021 В 29.10.2020 в 08:31, gvan сказал: На всякий случай выкладываю полный код скрипта последней версии (в первом собщении изменить уже не могу): Приветствую Можно попросить выложить файлом, а то здесь форматирование бъётся Скрытый текст # При определении изменялся ли конфиг, не учитывать данные строки (через экраннированн[Kсимвол "Иm{И" -> "\|". # При сравнении копий конфига не учитываются служебные строки, начинающиеся на '! $$$', и с трока 'clock date', т.к. она обновляется при считывании конфига # m{учше не трогать :) Quote Link to comment Share on other sites More sharing options...
gvan Posted March 14, 2021 Author Share Posted March 14, 2021 3 часа назад, yrzorg сказал: Можно попросить выложить файлом, а то здесь форматирование бъётся Да, вижу, что кое-что побилось. Выкладываю файл backup.zip 3 Quote Link to comment Share on other sites More sharing options...
aleeko Posted February 23, 2022 Share Posted February 23, 2022 В 14.03.2021 в 12:56, gvan сказал: Да, вижу, что кое-что побилось. Выкладываю файл backup.zip Подскажите, почему может игнорироваться выполнение строки FILES=`find $BACSTORDIR -mtime +${DAYSTOR} -print -delete` В логе роутера вижу что якобы идет удаление лишних файлов, но ничего не удаляется Спасибо Quote Link to comment Share on other sites More sharing options...
gvan Posted February 23, 2022 Author Share Posted February 23, 2022 (edited) Попробуйте, заменив переменные пути и времени хранения файлов реальными значениями, выполнить команду find из командной строки. Только уберите кавычки. Как выглядит команда в командной строке, и что выводится при ее выполнении? Если понятнее не станет, выложите свой скрипт сюда. Edited February 23, 2022 by gvan Quote Link to comment Share on other sites More sharing options...
aleeko Posted February 23, 2022 Share Posted February 23, 2022 Понял в чем дело . В последней секции скрипта мы переходим в $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" Quote Link to comment Share on other sites More sharing options...
gvan Posted February 23, 2022 Author Share Posted February 23, 2022 Вы так и не показали свой скрипт. Или хотя бы чему у вас равна переменная $BACSTORDIR. У меня именно такой скрипт, как я привел в примере. Предварительный переход в каталог команде find мешать никак не может. Да, наверно можно обойтись и без него. Quote Link to comment Share on other sites More sharing options...
aleeko Posted February 23, 2022 Share Posted February 23, 2022 (edited) 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/ Edited February 23, 2022 by aleeko Quote Link to comment Share on other sites More sharing options...
gvan Posted February 23, 2022 Author Share Posted February 23, 2022 Ну, вот. Ошибка в переменной $BACSTORDIR. Она должна содержать полный путь к каталогу бэкапов. Т. е. начинаться со слэша. Quote Link to comment Share on other sites More sharing options...
usan Posted April 14, 2022 Share Posted April 14, 2022 Спасибо за скрипт Только установил Entware, и при выполнении скрипта вылезли ошибки: ndmq: not found Как выяснилось, пакет ndmq перенесен в архив и больше не входит в установку Entware, чтобы не устанавливать его из архива, я переделал скрипт на rci, изменения в строках 75, 104-105 Предварительно нужно установить пакет jq для разбора json opkg install jq Скрипт во вложении в архиве backup_rci.zip 6 Quote Link to comment Share on other sites More sharing options...
batonskij Posted April 23, 2022 Share Posted April 23, 2022 Скриптом пользуюсь давно, все устраивало, но недавно заметил что невозможно восстановить при наличии в архиве 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" Quote Link to comment Share on other sites More sharing options...
gvan Posted April 26, 2022 Author Share Posted April 26, 2022 В 23.04.2022 в 20:18, batonskij сказал: Скриптом пользуюсь давно, все устраивало, но недавно заметил что невозможно восстановить при наличии в архиве Home Assistant. Что надо подправить? Недостаточно информации. Сам бэкап отрабатыает задачу и ошибок нет? Что значит невозможно восстановить? Какая ошибка возникает? Quote Link to comment Share on other sites More sharing options...
batonskij Posted April 26, 2022 Share Posted April 26, 2022 16 минут назад, gvan сказал: Сам бэкап отрабатыает задачу и ошибок нет Все верно, с этим никаких проблем. 17 минут назад, gvan сказал: Что значит невозможно восстановить? Какая ошибка возникает? Обычно делаю так, форматирую флеш, если что-то пошло не так, создаю на ней папку install, туда закидывают файл бэкапа. Жму кнопки в веб морде роутера и жду, обычно все в течении 4-5 мин разворачивается. Но если в файле бэкапа есть установленный HA, то все идет иначе, веб морда висит минут 10, далее на флешке в разделе под OPKG появляются не все папки и некоторая их часть зачеркнута. Quote Link to comment Share on other sites More sharing options...
gvan Posted April 26, 2022 Author Share Posted April 26, 2022 5 часов назад, batonskij сказал: Жму кнопки в веб морде роутера и жду, обычно все в течении 4-5 мин разворачивается. Мне добавить к предыдущему сообщению нечего. Видимо, вопрос нужно задать веб-морде и кнопкам😄 Я сам, когда пробовал восстанавливать архив, для распаковки использовал команду tar, как указано в инструкции на первой странице. Про функционал в веб-морды, в котором это можно сделать, мне ничего неизвестно. Возможно речь идет о "Приложение-Файлы и папки"? Но тогда вопрос больше к разработчикам прошивки. Полагаю, что при включении HA в архив его размер становится больше, и для обработки архива функционалом самой прошивки не хватает памяти. Quote Link to comment Share on other sites More sharing options...
batonskij Posted April 26, 2022 Share Posted April 26, 2022 (edited) 2 часа назад, gvan сказал: Полагаю, что при включении HA в архив его размер становится больше, и для обработки архива функционалом самой прошивки не хватает памяти. Очень похоже на то, потому что разница между без HA и с HA развернутых пакетов 80 мб против 450 мб. Попробую командой tar когда в следующий раз сломаю. 2 часа назад, gvan сказал: Возможно речь идет о "Приложение-Файлы и папки"? нет, речь идет о штатном установщике OPKG пакетов Скрытый текст Edited April 26, 2022 by batonskij Quote Link to comment Share on other sites More sharing options...
gvan Posted April 28, 2022 Author Share Posted April 28, 2022 В 26.04.2022 в 16:43, batonskij сказал: нет, речь идет о штатном установщике OPKG пакетов Но тогда это вообще мимо кассы. Фактически создаваемый скриптом архив не является пакетом OPKG. Каким образом архив обрабатывает бинарник opkg, и почему на архивах малого размера это срабатывало, мне неизвестно. Соответственно, как и писал выше, для распаковки архива нужно использовать команду tar. 1 Quote Link to comment Share on other sites More sharing options...
batonskij Posted April 29, 2022 Share Posted April 29, 2022 В 28.04.2022 в 10:37, gvan сказал: для распаковки архива нужно использовать команду tar. Воспользовался вашим советом, использовал tar, но при восстановлении все-равно что-то идет не так ((( Скрытый текст Quote Link to comment Share on other sites More sharing options...
gvan Posted May 2, 2022 Author Share Posted May 2, 2022 В 29.04.2022 в 22:03, batonskij сказал: Воспользовался вашим советом, использовал tar, но при восстановлении все-равно что-то идет не так Можно почитать в инете мануал по tar и перед распаковкой проверить содержимое архива. Например, список файлов сохранить в текстовый файл и посмотреть есть ли в нем все необходимое. Или вообще через менеджер файлов midnight commander войти внутрь архива (будет очень долгий процесс) и "походить" по структуре каталалогов-файлов. Да и смоневаюсь я, что при распаковке архива tar-ом у вас не высветилось ни одной ошибки, если "что-то идет не так". Quote Link to comment Share on other sites More sharing options...
batonskij Posted May 4, 2022 Share Posted May 4, 2022 В 02.05.2022 в 11:00, gvan сказал: Да и сомневаюсь я, что при распаковке архива tar-ом у вас не высветилось ни одной ошибки, если "что-то идет не так". Итак, все перепроверил, но все-равно у меня не выходит каменный цветочек ¯_(ツ)_/¯ Ошибок при распаковке нет, все файлы на месте, проверил и в проводнике и в mc содержимое, во время распаковки в морде кинетика видно что папка bin присутствует, после окончания процесса она зачеркивается. Скрытый текст Quote Link to comment Share on other sites More sharing options...
gvan Posted May 4, 2022 Author Share Posted May 4, 2022 58 минут назад, batonskij сказал: папка bin присутствует, после окончания процесса она зачеркивается. Я не знаю, что для морды означает зачеркнуто. Больше пользы было бы от вывода команды ls, где видны права на уже распакованную папку bin. Возможно по какой-то причине они не проставляются должным образом. Quote Link to comment Share on other sites More sharing options...
batonskij Posted May 5, 2022 Share Posted May 5, 2022 (edited) 19 часов назад, gvan сказал: Больше пользы было бы от вывода команды ls Скрытый текст Скрытый текст Ух ты, все заработало, прошу прощения что морочил голову зачеркнутой папкой bin в морде. Прост включил использование вновь распакованного OPKG, папка "расчеркнулась" и все завелось! Edited May 5, 2022 by batonskij bin Quote Link to comment Share on other sites More sharing options...
gvan Posted August 7, 2022 Author Share Posted August 7, 2022 (edited) В 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 Edited August 7, 2022 by gvan 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.