Report post 01/17/2019 10:20 AM Дельный совет от Александр Рыжов Восстанавливать можно, положив полученный архив на чистую флешку в папку install Quote Share this post Link to post Share on other sites
Report post 05/19/2020 08:19 PM есть ли возможность сохранять прошивку с версией в названии файла, как это сейчас происходит при сохранении через веб?. Quote Share this post Link to post Share on other sites
Report post 05/20/2020 01:42 PM 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 Share this post Link to post Share on other sites
Report post 08/24/2020 08:33 AM find $BACSTORDIR -mtime +${DAYSTOR} -delete А здесь поправить, чтоб файлы типа firmware-3.05.A.18.0-0 и тп вообще не удалялись. Quote Share this post Link to post Share on other sites
Report post 08/25/2020 05:40 AM 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 Share this post Link to post Share on other sites
Report post 10/28/2020 05:11 PM (edited) Камрады подскажите почему скрипт бэкапит прошивку и конфиг странно? Конфиг в архиве и без и файл прошивки под разными именами. Скрытый текст Edited October 28, 2020 by batonskij Quote Share this post Link to post Share on other sites
Report post 10/29/2020 05:31 AM (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 Share this post Link to post Share on other sites
Report post 02/25/2021 05:55 AM привет подскажите как сделать чтоб сохранение бекампа было например на гугл диск Quote Share this post Link to post Share on other sites
Report post 02/25/2021 06:11 AM 10 минут назад, roma33region сказал: подскажите как сделать чтоб сохранение бекампа было например на гугл диск В рамках данного решения (скрипта) этого не предусмотрено. Посмотрите каталог готовых решений для opkg. Возможно, что-то найдете для копирования (переноса) данных на облачные сервисы. Например, упоминается rclone. Соответственно, если получится его настроить, то в конец скрипта добавите необходимые строки для синхронизации локального каталога с бэкапами на облако. Quote Share this post Link to post Share on other sites
Report post 03/14/2021 06:46 AM В 29.10.2020 в 08:31, gvan сказал: На всякий случай выкладываю полный код скрипта последней версии (в первом собщении изменить уже не могу): Приветствую Можно попросить выложить файлом, а то здесь форматирование бъётся Скрытый текст # При определении изменялся ли конфиг, не учитывать данные строки (через экраннированн[Kсимвол "Иm{И" -> "\|". # При сравнении копий конфига не учитываются служебные строки, начинающиеся на '! $$$', и с трока 'clock date', т.к. она обновляется при считывании конфига # m{учше не трогать :) Quote Share this post Link to post Share on other sites
Report post 03/14/2021 09:56 AM 3 часа назад, yrzorg сказал: Можно попросить выложить файлом, а то здесь форматирование бъётся Да, вижу, что кое-что побилось. Выкладываю файл backup.zip Quote Share this post Link to post Share on other sites