Popular Post gvan Posted November 30, 2016 Popular Post Share Posted November 30, 2016 (edited) На форуме уже пару раз возникал вопрос о периодическом бэкапе конфига. Но не менее обидно потерять свои наработки в entware. В данной статье выложен простой скрипт, который запускается по cron и сохраняет содержимое /opt, конфига и прошивки. Есть возможность отказаться от бэкапа любого из указанных компонентов. Резервная копия прошивки не сжимается архиватором, т.к. файл прошивки и так уже максимально упакован. Старые архивы в соответствии с установленным интервалом времени удаляются. Предварительно необходимо изменить настройки скрипта в разделе конфигурационных параметров. Данная резервная копию может использоваться как для полного, так и частичного восстановления entware. Информация об этом дана в конце статьи. Для нормальной работы cron entware д.б. установлена на раздел с файловой системой ext2/ext3/ext4. Устанавливаем и запускаем cron opkg install cron /opt/etc/init.d/S10cron start В каталоге /opt/etc/cron.daily создаем файл backup и размещаем в нем следующий код: Скрытый текст #!/opt/bin/sh # Скрипт сохраняет резервную копию 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 " # При определении изменялся ли конфиг, не учитывать данные строки (через экраннированный символ "ИЛИ" -> "\|". # При сравнении копий конфига не учитываются служебные строки, начинающиеся на '! $$$', и строка 'clock date', т.к. она обновляется при считывании конфига # Лучше не трогать :) EXCLCONFCMD='\! \$\$\$\|clock date' # Путь к резервной копии прошивки на USB FLASH. Определить в CLI по команде 'ls ?'. Обычно это метка диска в виде 'LABEL:/' BACFIRMDIR=ADATA:/backup/ # Сколько дней хранить бэкапы. DAYSTOR=8 #===================================================================================== # Начало скрипта #===================================================================================== # Текущая дата для формирования имени файла с архивом 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" ndmq -p "copy flash:/firmware ${BACFIRMDIR}firmware-${DATE}" -P message if [ -f "${BACSTORDIR}firmware-cur" ] then CMPFIRM=`cmp ${BACSTORDIR}firmware-cur ${BACSTORDIR}firmware-${DATE}` if [ -n "$CMPFIRM" ] then logger -t $TAG "Firmware is changed. Do new copy." cp -f ${BACSTORDIR}firmware-${DATE} ${BACSTORDIR}firmware-cur-new mv -f ${BACSTORDIR}firmware-cur ${BACSTORDIR}firmware-${DATE} mv ${BACSTORDIR}firmware-cur-new ${BACSTORDIR}firmware-cur else logger -t $TAG "Firmware is not changed. Renew current firmware copy." mv -f ${BACSTORDIR}firmware-${DATE} ${BACSTORDIR}firmware-cur fi else logger -t $TAG "Current firmware copy not found. Is it first run? Do firmware copy." cp ${BACSTORDIR}firmware-${DATE} ${BACSTORDIR}firmware-cur fi else logger -t $TAG "Skiping backup firmware" fi logger -t $TAG "Finished" cd $BACSTORDIR # Выводим в лог список файлов-архивов до удаления старых резервных копий и после logger -t $TAG "Files before removing old archives `ls -l`" logger -t $TAG "Remove old archives" find $BACSTORDIR -mtime +${DAYSTOR} -delete logger -t $TAG "Files after removing old archives `ls -l`" logger -t $TAG "Exiting" Делаем файл backup исполняемым: chmod +x backup В данном скрипте предусмотрено исключение определенных каталогов (например, tmp, var/log). Бэкап производится на другой диск (флэшку). Если будете бэкапить содержимое на этот же диск, не забудьте добавить каталог с архивами в исключение. Иначе скрипт будет выполняться, пока не закончится место на диске. Архивы хранятся 8 дней (переменная DAYSTOR). Новый архив конфига создается только в том случае, если произошло его изменение. При этом не учитывается MD5 и строка "clock date". Информация о ходе бэкапа передается в syslog. Если эта информация нужна, и syslog у вас еще не настроен, то рекомендую его включить, как указано в соответствующей статье. Если не нужна, то ничего делать не нужно. Как минимум в данном коде вам необходимо изменить переменные BACSTORDIR и BACNAME. Всё. Каждую ночь будет сохраняться свежая копия entware и конфига роутера. Использование сохраненной резервной копии. По восстановлению конфига роутера вопросов возникнуть не должно. Распаковываем файл командой gzip, копируем его себе на устройство и далее его можно загрузить в роутер через соответствующий пункт в веб-интерфейсе ("Система-Файлы"). Пример команды для распаковки конфига: gzip -d config-2016-11-29.gz Таким же образом можно воспользоваться сохраненным файлом прошивки. Теперь о том, для чего делается резервная копия entware и как можно использовать полученный архив. Возможны случаи, когда мы наставили большое количество пакетов (какие не помним, они начали работать некорректно и т.п.), но точно знаем что хотелось бы вернуться на состояние "как было пару дней назад". Или еще хуже в результате экспериментов удалили системные файлы entware, полностью нарушив ее работу. Или вышел из строя диск (флэшка). 0. Подготовительная стадия. Предполагается, что у нас есть чистая entware, используемая для функции восстановления. Например, отдельная флэшка или раздел на диске/флэшке (далее диск восстановления - ДВ). На нем предварительно установлены утилиты для работы с диском (создания разделов, форматирования файловой системы): opkg install fdisk tune2fs e2fsprogs Через веб-интерфейс в разделе "Приложения-OPKG" подключаем entware с ДВ. 1. Создание раздела на диске. В моем примере восстановление entware будет выполняться на второй раздел флэшки (диск /dev/sda). ДВ находится на первом разделе флэшки. Используемая файловая система для entware - ext2 Скрытый текст $ fdisk -l /dev/sda Disk /dev/sda: 14,9 GiB, 16001269760 bytes, 31252480 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x00000000 Device Boot Start End Sectors Size Id Type /dev/sda1 2048 10487807 10485760 5G 83 Linux /dev/sda3 20973568 31252479 10278912 4,9G 83 Linux Создаем раздел диска через fdisk. Если на новом диске есть какие-то не нужные разделы, то их также можно удалить (см. help по команде "m"). Скрытый текст $ fdisk /dev/sda Welcome to fdisk (util-linux 2.28). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): n Partition type p primary (2 primary, 0 extended, 2 free) e extended (container for logical partitions) Select (default p): p Partition number (2,4, default 2): 2 First sector (10487808-31252479, default 10487808): Last sector, +sectors or +size{K,M,G,T,P} (10487808-20973567, default 20973567): Created a new partition 2 of type 'Linux' and of size 5 GiB. Command (m for help): w The partition table has been altered. $ fdisk -l /dev/sda Disk /dev/sda: 14,9 GiB, 16001269760 bytes, 31252480 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x00000000 Device Boot Start End Sectors Size Id Type /dev/sda1 2048 10487807 10485760 5G 83 Linux /dev/sda2 10487808 20973567 10485760 5G 83 Linux /dev/sda3 20973568 31252479 10278912 4,9G 83 Linux 2. Форматирование раздела. Создаем ФС ext2 с меткой KINGSTON2 и UID (для удобства работы c OPKG) 00000000-0000-0000-1111-000000000002: Скрытый текст $ mke2fs -m 0 -t ext2 -L KINGSTON2 -U 00000000-0000-0000-1111-000000000002 /dev/sda2 mke2fs 1.43.1 (08-Jun-2016) Creating filesystem with 1310720 4k blocks and 327680 inodes Filesystem UUID: 00000000-0000-0000-1111-000000000002 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: done Writing inode tables: done Writing superblocks and filesystem accounting information: done Создаем каталог /tmp/mnt/KINGSTON2 и монтируем вновь созданную ФС: mount /dev/sda2 /tmp/mnt/KINGSTON2 Предполагаем, что архив entware уже находится на ДВ в /opt/tmp/king3-2016-12-06.tgz 3. Восстановление и запуск entware. Запускаем восстановление entware и создаем каталоги, которые мы не включили в резервную копию: Скрытый текст cd /tmp/mnt/KINGSTON2 tar -xzf /opt/tmp/king3-2016-12-06.tgz mkdir tmp var/log var/log/lighttpd Запускаем восстановленную entware в веб-интерфейсе. Примечание: Пункты 0-2 можно пропустить, если раздел для entware создается на каком-то другом устройстве (например, ПК). Также для простоты, используя midnight commander (opkg install mc), можно в архиве entware просмотреть интересующие нас файлы или скопировать их в какой-то другой каталог. Возможно извлечение и просмотр отдельных файлов и через команду tar. Edited January 23, 2017 by gvan Дополнительно включена возможность бэкапа прошивки 23 Quote Link to comment Share on other sites More sharing options...
vasek00 Posted December 1, 2016 Share Posted December 1, 2016 (edited) Вопрос, а зачем его конфиг так сложно вытаскивать, если он спокойно лежит "/flash/startup-config" берем куда надо, в место # Делаем архив конфига ndmq -p "show running-config" -P message | gzip > ${BACSTORDIR}config-${DATE}.gz Да и Entware наверное не стоит копировать весь его (так как библиотеки и версии приложений тоже меняются) возможно достаточно /opt/etc Edited December 1, 2016 by vasek00 Quote Link to comment Share on other sites More sharing options...
gvan Posted December 1, 2016 Author Share Posted December 1, 2016 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 на новой флэшке. Уже несколько раз подобным образом переезжал. Если нужна более подробная информация по шагам, то могу расписать и дополнить первое сообщение. Quote Link to comment Share on other sites More sharing options...
vasek00 Posted December 2, 2016 Share Posted December 2, 2016 /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. Quote Link to comment Share on other sites More sharing options...
gvan Posted December 2, 2016 Author Share Posted December 2, 2016 27 минут назад, vasek00 сказал: Для меня так же 15минут поставить новую entware (только ту которая текущая на данный момент времени, так как релизы имеют свойство изменяться, улучшаться и исправленные ошибки и не дочеты пред.версий), потом конфиги в /opt/etc. Да, если софта пару-тройку пакетов. Но у меня побольше. Да и вспоминать, что нужно поставить, а что нет, куда положить нужные данные и т.п., не хочется. А по поводу изменений релизов, вообще не вижу проблем. Ведь указанный скрипт запускается каждую ночь и мы всегда получаем полный свежий слепок системы, причем в новом архиве. У меня он на данный момент занимает менее 20Мб. А обновление того же самого софта opkg update/upgrade также можно добавить в cron. Но каждый волен выбирать сам 1 Quote Link to comment Share on other sites More sharing options...
gvan Posted December 7, 2016 Author Share Posted December 7, 2016 Первое сообщение дополнено информацией по восстановлению entware из резервной копии. 1 Quote Link to comment Share on other sites More sharing options...
emlen Posted December 13, 2016 Share Posted December 13, 2016 А как можно создавать резервные копии только измененного конфига? Мне бы не хотелось бы иметь образно говоря сто одинаковых копий за опред. срок, а просто по одной копии всех версий конфига.. Что -то подсказывает, что надо вновь созданный резервный файл конфига сравнивать хотя бы с предыдущим каким - нибудь диффом, просьба к профи подмочь со скриптом) Quote Link to comment Share on other sites More sharing options...
gvan Posted December 14, 2016 Author Share Posted December 14, 2016 (edited) 11 час назад, emlen сказал: А как можно создавать резервные копии только измененного конфига? Мне бы не хотелось бы иметь образно говоря сто одинаковых копий за опред. срок, а просто по одной копии всех версий конфига.. Ну, собственно говоря сто копий не хранится. Остаются архивы за последние несколько дней в зависимости от значения переменной DAYSTOR. Да и объем этих архивов конфигов небольшой. Также при выполнении команды "show running-config" всегда изменяется MD5 конфига и строка "clock date". Так что задача не совсем тривиальная. Первое сообщение дополнил кодом по сохранению только измененного конфига. Для этого при каждом запуске бэкапа сохраняется локальная так называемая текущая версия конфига. При последующих запусках содержимого полученного с роутера и сохраненного конфига сравнивается. При этом указанные выше строки не учитываются (переменная EXCLCONFCMD="Md5 checksum:\|clock date"). Т.к. логика скрипта усложнилась, то возможны какие-то неучтенные баги Проверяйте. Edited December 14, 2016 by gvan 2 Quote Link to comment Share on other sites More sharing options...
emlen Posted December 17, 2016 Share Posted December 17, 2016 Очень полезный многогранный материал, огромное спасибо автору! 1 Quote Link to comment Share on other sites More sharing options...
gvan Posted January 23, 2017 Author Share Posted January 23, 2017 Скрипт в первом сообщении темы изменен. Исправлен баг с сохранением конфигурации (не все копии конфигурации могли правильно сохраняться). А также в связи с тем, что разработчики фактически каждую неделю балуют нас отладочными версиями прошивок, то в функционал скрипта включена возможность сохранения копий прошивок. Как показала практика, не все отладочные версии прошивок могут полюбиться пользователю с первого раза. Особенно, если предварительно не ознакомиться в соответствующей теме об исправлениях и дополнениях в прошивке, а также о ее возможных багах. Теперь, если перед обновлением прошивки забыл ее сохранить через веб, то есть возможность откатиться на предыдущую версию, взяв ее из резервной копии. 3 Quote Link to comment Share on other sites More sharing options...
emlen Posted January 24, 2017 Share Posted January 24, 2017 В 23.01.2017 в 12:02, gvan сказал: Исправлен баг с сохранением конфигурации Доброго времени суток! Я извиняюсь, не могли бы уточнить что за баг и в каком месте был, просто я пользовался Вашим кодом как "учебником", то есть избирательно без полного копипаста и теперь хотелось бы внести правки в свои скриптики, т.к. я никаких багов не замечал. Заранее спасибо. Quote Link to comment Share on other sites More sharing options...
gvan Posted January 24, 2017 Author Share Posted January 24, 2017 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 Quote Link to comment Share on other sites More sharing options...
St_Pavel Posted March 20, 2017 Share Posted March 20, 2017 В 30.11.2016 в 12:19, gvan сказал: Запускаем восстановление entware и создаем каталоги, которые мы не включили в резервную копию: При таком восстановлении у меня неправильно выставляются права на /opt - из-за чего ssh отказывал в авторизации по ключу с таким сообщением "Authentication refused: bad ownership or modes for directory /opt" Quote Link to comment Share on other sites More sharing options...
TheBB Posted March 20, 2017 Share Posted March 20, 2017 (edited) Апплет tar ограничен по функционалу (хотя, и его достаточно для backup`a). Ставьте "пакетированный" tar и развлекайтесь с его ключами запуска. + В догонку про BackUp Edited March 20, 2017 by TheBB + 1 Quote Link to comment Share on other sites More sharing options...
gvan Posted March 21, 2017 Author Share Posted March 21, 2017 В 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 права и владельцы также посбивались? 1 Quote Link to comment Share on other sites More sharing options...
vlad Posted April 17, 2017 Share Posted April 17, 2017 В 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 .' Не срабатывает,архив не создаёт. Буду признателен за ответ. Quote Link to comment Share on other sites More sharing options...
gvan Posted April 17, 2017 Author Share Posted April 17, 2017 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 * Quote Link to comment Share on other sites More sharing options...
vlad Posted April 17, 2017 Share Posted April 17, 2017 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 * так ? Quote Link to comment Share on other sites More sharing options...
gvan Posted April 17, 2017 Author Share Posted April 17, 2017 7 минут назад, vlad сказал: так ? Да, вроде должно сработать. Quote Link to comment Share on other sites More sharing options...
vlad Posted April 17, 2017 Share Posted April 17, 2017 9 минут назад, gvan сказал: Да, вроде должно сработать. К сожалению не сработало ..архив не создался.Лишь строка от cron в логе кинетика. Quote Link to comment Share on other sites More sharing options...
gvan Posted April 17, 2017 Author Share Posted April 17, 2017 27 минут назад, vlad сказал: К сожалению не сработало ..архив не создался.Лишь строка от cron в логе кинетика. Да, в cron спецсимволы по другому обрабатываются. Попробуйте так 50 16 * * * root cd /opt && /opt/bin/tar cvzf /opt/$(date \+\%d-\%m-\%Y-\%H-\%M)-backup.tar.gz * У меня сработало 1 Quote Link to comment Share on other sites More sharing options...
vlad Posted April 17, 2017 Share Posted April 17, 2017 17 минут назад, gvan сказал: У меня сработало Огромное спасибо.Сработало. Quote Link to comment Share on other sites More sharing options...
TheBB Posted April 18, 2017 Share Posted April 18, 2017 (edited) 18 часов назад, gvan сказал: ... -C только при распаковке учитывается... учитывается и при упаковке, для перечисления папок, которые нужно поместить в архив. + tar czvf /opt/backup.tar.gz -C /opt/ etc share var Edited April 18, 2017 by TheBB + 1 Quote Link to comment Share on other sites More sharing options...
vlad Posted April 18, 2017 Share Posted April 18, 2017 20 часов назад, gvan сказал: 50 16 * * * root cd /opt && /opt/bin/tar cvzf /opt/$(date \+\%d-\%m-\%Y-\%H-\%M)-backup.tar.gz * Помогите ещё немного;)))! Какие команды добавить чтоб архивы складывались в папку backup и при этом папка была исключена из архивации ? Quote Link to comment Share on other sites More sharing options...
gvan Posted April 18, 2017 Author Share Posted April 18, 2017 32 минуты назад, vlad сказал: Какие команды добавить чтоб архивы складывались в папку backup и при этом папка была исключена из архивации ? Для штатного в entware tar смотрите пример скрипта в первом посте (ключ -X используется для исключения файлов). Т.е. будет выглядеть примерно так: tar -X backup cvzf /opt/$(date \+\%d-\%m-\%Y-\%H-\%M)-backup.tar.gz * (если папка backup находится по адресу /opt/backup) Quote Link to comment Share on other sites More sharing options...
vlad Posted April 18, 2017 Share Posted April 18, 2017 3 часа назад, gvan сказал: Для штатного в entware tar смотрите пример скрипта в первом посте (ключ -X используется для исключения файлов). Т.е. будет выглядеть примерно так: tar -X backup cvzf /opt/$(date \+\%d-\%m-\%Y-\%H-\%M)-backup.tar.gz * (если папка backup находится по адресу /opt/backup) Благодарю за ответ. Quote Link to comment Share on other sites More sharing options...
vlad Posted April 20, 2017 Share Posted April 20, 2017 В 30.11.2016 в 12:19, gvan сказал: Предварительно необходимо изменить настройки скрипта в разделе конфигурационных параметров. Спасибо за скрипт;)!!! Изменил под свои нужды и принял на вооружение ;))) Quote Link to comment Share on other sites More sharing options...
rotor Posted February 26, 2018 Share Posted February 26, 2018 В 30.11.2016 в 12:19, gvan сказал: BACSTORDIR=/tmp/mnt/ADATA/backup/ В 30.11.2016 в 12:19, gvan сказал: BACFIRMDIR=ADATA:/backup/ Подскажите пожалуйста, а если это сетевая папка, то как эти строчки должны выглядеть? Quote Link to comment Share on other sites More sharing options...
Lordmaster Posted February 27, 2018 Share Posted February 27, 2018 6 часов назад, rotor сказал: Подскажите пожалуйста, а если это сетевая папка, то как эти строчки должны выглядеть? Для начала нужно смонтировать вашу удаленную папку. Для этого используйте команду "mount". После этого уже будет понятно как эти строчки выглядят (вы сами задаете куда монтировать) Quote Link to comment Share on other sites More sharing options...
gvan Posted February 27, 2018 Author Share Posted February 27, 2018 6 часов назад, rotor сказал: Подскажите пожалуйста, а если это сетевая папка, то как эти строчки должны выглядеть? Для BACSTORDIR указываете путь, куда у вас подмонтирована сетевая папка. Если не подмонтирована к каталогу, то можно и напрямую по сетевому пути обратиться. А вот для BACFIRMDIR=ADATA:/backup/, скорее всего, не получится, т.к. фактически выполняется команда telnet роутера "copy flash:/firmware". А она ничего не "знает" о сетевых подключениях. Соответственно, самый просто вариант - сначала скопировать на диск, а потом добавить в скрипт команду перемещения записанного файла на сетевой диск. 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.