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

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

  • Ответов 88
  • Создана
  • Последний ответ

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

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

Вопрос, а зачем его конфиг так сложно вытаскивать, если он спокойно лежит "/flash/startup-config" берем куда надо, в место

# Делаем архив конфига
ndmq -p "show running-config" -P message | gzip > ${BACSTORDIR}config-${DATE}.gz

Да и Entware наверное не стоит копировать весь его (так как библиотеки и версии приложений тоже меняются) возможно достаточно /opt/etc

Изменено пользователем vasek00
Опубликовано
2 часа назад, vasek00 сказал:

Вопрос, а зачем его конфиг так сложно вытаскивать, если он спокойно лежит "/flash/startup-config" берем куда надо, в место

У меня это какой-то полубинарный файл. Если сделать:

cp /flash/startup-config /opt/tmp/test.txt

То вначале файла test.txt какая-то каша. Да и вариант с ndmq -p более универсальный (вдруг захочется сохранить в третьем файле результат вывода каких-либо других CLI команд).

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

Да и Entware наверное не стоит копировать весь его (так как библиотеки и версии приложений тоже меняются) возможно достаточно /opt/etc

Да, ничто не мешает изменить переменную BACDIR на 

BACDIR=/opt/etc/

Но у меня, например, кроме конфигов есть еще БД, которые лежат вне /opt/etc.

Также мой вариант, если вдруг умрет флэшка, позволяет за 15 минут развернуть новую entware, без танцев с бубном и без каких-либо установок дополнительных программ. Рассказываю как.

Есть переносимая флэшка, на которой развернут пустой entware. Ну, не совсем пустая. На ней есть fdisk, e2mkfs (и прочие дисковые утилиты).

Запускаю entware с нее. Создаю раздел на новом диске, форматирую его, запускаю распаковку созданного в первом сообщении .tgz на новую флэшку (еще надо будет создать var/log и tmp, т.к. в архиве их нет). Все. Можно монтировать entware на новой флэшке.

Уже несколько раз подобным образом переезжал.

Если нужна более подробная информация по шагам, то могу расписать и дополнить первое сообщение.

Опубликовано
/flash/startup-config

он же символьная ссылка /dev/mtdblock/...

11 ndmpart partitions found on MTD device raspi
Creating 11 MTD partitions on "raspi":
...
ххххххххххх: "Config"
....

 

Цитата

Но у меня, например, кроме конфигов есть еще БД, которые лежат вне /opt/etc.

Также мой вариант, если вдруг умрет флэшка, позволяет за 15 минут развернуть новую entware, без танцев с бубном и без каких-либо установок дополнительных программ. Рассказываю как.

Cогласен, что нужно только то что нужно. Для меня так же 15минут поставить новую entware (только ту которая текущая на данный момент времени, так как релизы имеют свойство изменяться, улучшаться и исправленные ошибки и не дочеты пред.версий), потом конфиги в /opt/etc.

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

Для меня так же 15минут поставить новую entware (только ту которая текущая на данный момент времени, так как релизы имеют свойство изменяться, улучшаться и исправленные ошибки и не дочеты пред.версий), потом конфиги в /opt/etc.

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

А по поводу изменений релизов, вообще не вижу проблем. Ведь указанный скрипт запускается каждую ночь и мы всегда получаем полный свежий слепок системы, причем в новом архиве. У меня он на данный момент занимает менее 20Мб.

А обновление того же самого софта opkg update/upgrade также можно добавить в cron.

Но каждый волен выбирать сам:D

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

А как можно создавать резервные копии только измененного конфига? Мне бы не хотелось бы иметь образно говоря сто одинаковых копий за опред. срок, а просто по одной копии всех версий конфига.. Что -то подсказывает, что надо вновь созданный резервный файл конфига сравнивать хотя бы с предыдущим каким - нибудь диффом, просьба к профи подмочь со скриптом)

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

А как можно создавать резервные копии только измененного конфига? Мне бы не хотелось бы иметь образно говоря сто одинаковых копий за опред. срок, а просто по одной копии всех версий конфига..

Ну, собственно говоря сто копий не хранится. Остаются архивы за последние несколько дней в зависимости от значения переменной DAYSTOR. Да и объем этих архивов конфигов небольшой.

Также при выполнении команды "show running-config" всегда изменяется MD5 конфига и строка "clock date". Так что задача не совсем тривиальная.

Первое сообщение дополнил кодом по сохранению только измененного конфига. Для этого при каждом запуске бэкапа сохраняется локальная так называемая текущая версия конфига. При последующих запусках содержимого полученного с роутера и сохраненного конфига сравнивается. При этом указанные выше строки не учитываются (переменная EXCLCONFCMD="Md5 checksum:\|clock date").

Т.к. логика скрипта усложнилась, то возможны какие-то неучтенные баги :-) Проверяйте.

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

Скрипт в первом сообщении темы изменен. 

Исправлен баг с сохранением конфигурации (не все копии конфигурации могли правильно сохраняться). А также в связи с тем, что разработчики фактически каждую неделю балуют нас отладочными версиями прошивок, то в функционал скрипта включена возможность сохранения копий прошивок.

Как показала практика, не все отладочные версии прошивок могут полюбиться пользователю с первого раза. Особенно, если предварительно не ознакомиться в соответствующей теме об исправлениях и дополнениях в прошивке, а также о ее возможных багах. ;)

Теперь, если перед обновлением прошивки забыл ее сохранить через веб, то есть возможность откатиться на предыдущую версию, взяв ее из резервной копии.

Опубликовано
В 23.01.2017 в 12:02, gvan сказал:

Исправлен баг с сохранением конфигурации

Доброго времени суток! Я извиняюсь, не могли бы уточнить что за баг и в каком месте был, просто я пользовался Вашим кодом как "учебником", то есть избирательно без полного копипаста и теперь хотелось бы внести правки в свои скриптики, т.к. я никаких багов не замечал. Заранее спасибо.

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

не могли бы уточнить что за баг и в каком месте был

Мне не понравилась предыдущая версия логики сохранения версий конфига (когда по подобию стал делать сохранение версий прошивки), если скрипт обнаружил, что она изменилась. Это кусок кода в условии "if [ "$OLDCONF" != "$CURCONF" ]"

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

Было:


if [ "$OLDCONF" != "$CURCONF" ]
            then
                logger -t $TAG "Config is changed. Do new copy."
                cp -f ${BACSTORDIR}config-${DATE} ${BACSTORDIR}config-cur
                gzip -f ${BACSTORDIR}config-${DATE}
            else
                logger -t $TAG "Config is not changed. Renew current config copy."
                cp -f ${BACSTORDIR}config-${DATE} ${BACSTORDIR}config-cur
                rm ${BACSTORDIR}config-${DATE}
fi

У меня тоже вроде проблем не возникало. Но по факту получается следующее. Есть вчерашняя версия конфига config-cur, получили свежую копию config-$DATE. Сравнили и, если есть различия, фактически затерли существующую версию конфига в архиве командой "cp -f ${BACSTORDIR}config-${DATE} ${BACSTORDIR}config-cur"

Поменял код на более логичный, когда предыдущая версия конфига точно "уйдет" в архив, а существующая версия станет config-cur


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

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

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

Запускаем восстановление entware и создаем каталоги, которые мы не включили в резервную копию:

 

При таком восстановлении у меня неправильно выставляются права на /opt - из-за чего ssh отказывал в авторизации по ключу с таким сообщением "Authentication refused: bad ownership or modes for directory /opt"  

 

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

Апплет tar ограничен по функционалу (хотя, и его достаточно для backup`a). Ставьте "пакетированный" tar и развлекайтесь с его ключами запуска.

+

В догонку про BackUp

Изменено пользователем TheBB
+
Опубликовано
В 20.03.2017 в 10:51, St_Pavel сказал:

При таком восстановлении у меня неправильно выставляются права на /opt - из-за чего ssh отказывал в авторизации по ключу с таким сообщением "Authentication refused: bad ownership or modes for directory /opt"

Как и отмечено в комментариях TheBB функциональности имеющего tar достаточно для поставленной задачи. Все права и владельцев для файлов и каталогов он нормально сохраняет в архиве, а при распаковке архива - восстанавливает. Вопрос действительно может касаться каталога /opt (в зависимости от того, каким образом он создавался изначально)

Если после проведения всех манипуляций по восстановлению, права на /opt не совпадают с 755 и владелец не root/root, то можно выполнить следующие команды:

chown root:root /opt
chmod 755 /opt

Или же у вас при восстановлении архива и внутри подкаталога /opt права и владельцы также посбивались?

  • 4 недели спустя...
Опубликовано
В 20.03.2017 в 11:33, TheBB сказал:

Апплет tar ограничен по функционалу (хотя, и его достаточно для backup`a). Ставьте "пакетированный" tar и развлекайтесь с его ключами запуска.

+

В догонку про BackUp

Подскажите пожалуйста как правильно добавить эту команду в cron:

tar cvzf /opt/`date "+%d-%m-%Y-%H-%M"`-backup.tar.gz -C /opt .  

делал вот так;

42 11 * * * root /opt/bin/tar 'cvzf /opt/`date "+%d-%m-%Y-%H-%M"`-backup.tar.gz -C /opt .'

Не срабатывает,архив не создаёт. Буду признателен за ответ. 
Опубликовано
3 часа назад, vlad сказал:

tar cvzf /opt/`date "+%d-%m-%Y-%H-%M"`-backup.tar.gz -C /opt

Зачем "-С /opt"? Так не будет работать. -C только при распаковке учитывается. Либо предварительно делать cd в каталог, который будет бэкапиться и бэкапить *, либо просто в конце указать /opt

У вас же это конструкция наверняка и не из cron не работает? Отладьте работу сначала с консоли.

3 часа назад, vlad сказал:

42 11 * * * root /opt/bin/tar 'cvzf /opt/`date "+%d-%m-%Y-%H-%M"`-backup.tar.gz -C /opt .'

А здесь вообще какая-то каша с кавычками и точкой в конце. С консоли тоже, сомневаюсь, что работать будет.

Попробуйте такую команду:

cd /opt && /opt/bin/tar cvzf /opt/`date "+%d-%m-%Y-%H-%M"`-backup.tar.gz *

 

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

У вас же это конструкция наверняка и не из cron не работает?

Я всегда делаю бэкап при помощи этой команды. Захотелось автоматизировать этот процесс,но не получилось. Знаний не хватает. 

tar cvzf /opt/`date "+%d-%m-%Y-%H-%M"`-backup.tar.gz -C /opt .

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

cd /opt && /opt/bin/tar cvzf /opt/`date "+%d-%m-%Y-%H-%M"`-backup.tar.gz *

Сработало но только вручную.Как правильно оформить Ее в крон??

03 16 * * * root cd /opt && /opt/bin/tar cvzf /opt/`date "+%d-%m-%Y-%H-%M"`-backup.tar.gz *

так ?

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

Да, вроде должно сработать.

К сожалению не сработало ..архив не создался.Лишь строка от cron в логе кинетика. 

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

К сожалению не сработало ..архив не создался.Лишь строка от cron в логе кинетика.

Да, в cron спецсимволы по другому обрабатываются. Попробуйте так

50 16 * * * root cd /opt && /opt/bin/tar cvzf /opt/$(date \+\%d-\%m-\%Y-\%H-\%M)-backup.tar.gz * 

У меня сработало

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

... -C только при распаковке учитывается...

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

+

tar czvf /opt/backup.tar.gz -C /opt/ etc share var

screen_141.png

Изменено пользователем TheBB
+
Опубликовано
20 часов назад, gvan сказал:

50 16 * * * root cd /opt && /opt/bin/tar cvzf /opt/$(date \+\%d-\%m-\%Y-\%H-\%M)-backup.tar.gz *

Помогите ещё немного;)))! Какие команды добавить чтоб архивы складывались в папку backup и при этом папка была исключена из архивации ? 

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

Какие команды добавить чтоб архивы складывались в папку backup и при этом папка была исключена из архивации ? 

Для штатного в entware tar смотрите пример скрипта в первом посте (ключ -X используется для исключения файлов).

Т.е. будет выглядеть примерно так:

tar -X backup cvzf /opt/$(date \+\%d-\%m-\%Y-\%H-\%M)-backup.tar.gz *

(если папка backup находится по адресу /opt/backup)

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

Для штатного в entware tar смотрите пример скрипта в первом посте (ключ -X используется для исключения файлов).

Т.е. будет выглядеть примерно так:

tar -X backup cvzf /opt/$(date \+\%d-\%m-\%Y-\%H-\%M)-backup.tar.gz *

(если папка backup находится по адресу /opt/backup)

Благодарю за ответ. 

Опубликовано
В 30.11.2016 в 12:19, gvan сказал:

Предварительно необходимо изменить настройки скрипта в разделе конфигурационных параметров.

Спасибо за скрипт;)!!! Изменил под свои нужды и принял на вооружение ;)))

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

BACSTORDIR=/tmp/mnt/ADATA/backup/

В 30.11.2016 в 12:19, gvan сказал:

BACFIRMDIR=ADATA:/backup/

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

 

 

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

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

 

 

Для начала нужно смонтировать вашу удаленную папку. Для этого используйте команду "mount". После этого уже будет понятно как эти строчки выглядят (вы сами задаете куда монтировать)

 

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

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

Для BACSTORDIR указываете путь, куда у вас подмонтирована сетевая папка. Если не подмонтирована к каталогу, то можно и напрямую по сетевому пути обратиться.

А вот для BACFIRMDIR=ADATA:/backup/, скорее всего, не получится, т.к. фактически выполняется команда telnet роутера "copy flash:/firmware". А она ничего не "знает" о сетевых подключениях.

Соответственно, самый просто вариант - сначала скопировать на диск, а потом добавить в скрипт команду перемещения записанного файла на сетевой диск.

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

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

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

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

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

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

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

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

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

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

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

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

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