Jump to content

Recommended Posts

Posted

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

добавил отправку файлов через бот телеги:

    #tg send
    if [ "$IsTg" = "1" ]
	then
        if [ "$DOW" = "6" ]
            then
            smarthtml_mailer_tg ${BACSTORDIR}${BACNAME}-${DATE}.tgz 1
        fi
    fi

архив энтваре раз в неделю, прошивку и конфиг по изменению.

скрипт smarthtml_mailer_tg взят из smarthtml и доработан:

if [ -n "$ISFILE" ]; then
    $CURL_CMD -F chat_id="$CHAT_ID" -F document=@"$MAILER_MSG_FILE" https://api.telegram.org/bot"$API_TOKEN"/sendDocument
    else
    MSG="<strong>`cat "$MAILER_MSG_FILE"`</strong>"
    $CURL_CMD --data-urlencode "text=${MSG}" "https://api.telegram.org/bot${API_TOKEN}/sendMessage?chat_id=${CHAT_ID}&parse_mode=html" 2>&1
fi

 

  • Thanks 3
  • 6 months later...
Posted
В 27.08.2022 в 09:15, MishaN сказал:

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

добавил отправку файлов через бот телеги:

    #tg send
    if [ "$IsTg" = "1" ]
	then
        if [ "$DOW" = "6" ]
            then
            smarthtml_mailer_tg ${BACSTORDIR}${BACNAME}-${DATE}.tgz 1
        fi
    fi

архив энтваре раз в неделю, прошивку и конфиг по изменению.

скрипт smarthtml_mailer_tg взят из smarthtml и доработан:

if [ -n "$ISFILE" ]; then
    $CURL_CMD -F chat_id="$CHAT_ID" -F document=@"$MAILER_MSG_FILE" https://api.telegram.org/bot"$API_TOKEN"/sendDocument
    else
    MSG="<strong>`cat "$MAILER_MSG_FILE"`</strong>"
    $CURL_CMD --data-urlencode "text=${MSG}" "https://api.telegram.org/bot${API_TOKEN}/sendMessage?chat_id=${CHAT_ID}&parse_mode=html" 2>&1
fi

В каком формате сохранять файл бэкап?

 

Posted
В 27.08.2022 в 09:15, MishaN сказал:
В 27.08.2022 в 09:15, MishaN сказал:

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

 

В каком формате сохранять файл скрипта бэкап?

Posted

В текстовом формате. Только не забыть установить потом на скрипт права исполняемого файла.

Posted
В 20.03.2023 в 09:42, gvan сказал:

В текстовом формате. Только не забыть установить потом на скрипт права исполняемого файла.

txt? и задаёшь права в entware?

 

Posted
25 минут назад, Mickey_Mouse сказал:

txt? и задаёшь права в entware?

Расширение не имеет значения. Главное что нужно сделать - chmod +x

Posted
1 час назад, Mamay сказал:

Расширение не имеет значения. Главное что нужно сделать - chmod +x

тогда что я не так делаю?image.png.c236f4fe106bfeeff1ba560fa0f9b432.png

Posted
23 минуты назад, Mickey_Mouse сказал:

тогда что я не так делаю?

Сие мне неведомо, но аглиццки по чёрному написано:

Не существующий файл или директория.

Posted
6 минут назад, Mamay сказал:

Сие мне неведомо, но аглиццки по чёрному написано:

Не существующий файл или директория.

файл в нужном месте, правильно же скопировал? image.png.8e06f75c91c7b6c5357a8951f7384696.png

image.png

Posted

Смею предположить, что вы чмодите не в той папке, где лежит пресловутый backup. Либо указывайте фулл патч, либо смените директорию на нужную. 

Posted
20 минут назад, Mickey_Mouse сказал:

так вот, как прописать верный путь, у меня всё там image.png.69dfdd92808df8bc560eb4d8fcde55f4.png

Так: chmod +x /opt/etc/cron.daily/backup

Posted
2 минуты назад, Rootdiv сказал:

Так: chmod +x /opt/etc/cron.daily/backup

всё? в ответ никакой команды не было image.png.22571040c817e3f0c53728d1c3119da8.png

Posted
8 минут назад, Mickey_Mouse сказал:

всё? в ответ никакой команды не было image.png.22571040c817e3f0c53728d1c3119da8.png

Да, значит всё прошло успешно.

Posted
Только что, Rootdiv сказал:

Да, значит всё прошло успешно.

и дальше типа надо вставлять отдельную флешку для резервной копии? так и не понял, как создать копию

Posted (edited)
1 час назад, Mickey_Mouse сказал:

и дальше типа надо вставлять отдельную флешку для резервной копии? так и не понял, как создать копию

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

Edited by Rootdiv
  • 6 months later...
Posted

При ручном запуске скрипт работает, но выдаёт такую ошибку
 

[root@Tech : ~]#>. /opt/etc/cron.daily/backup
grep: warning: stray \ before !
grep: warning: stray \ before !
{

Стоит обратить внимание или забить?

  • 8 months later...
Posted

У меня накрылись usb-порты на моём роутере. Я в рамках оперативного решения, пока переношу entware на внутреннюю память. Так как диск, на котором был установлен entware доступен, я просто запаковал весь раздел с ним в tar.gz, создал на внутренней памяти папку install, загрузил туда этот архив. Но каждый раз когда я выставляю память для opkg на внутреннюю память, роутер не хочет распаковывать этот архив, в логах:

 
npkg
failed to inflate "03-07-2024-23-32-backup.tar.gz": bad size (00000000256).
 
и какого бы я размера архива не добивался, всегда та же ошибка. Нв внутренней памяти свободно 100 с лишним мегабайт, архив в пожатом состоянии около 3 МБ, в непожатом около 6.

Подскажите, может кто знает в чём дело? Может необходимо какие-то права архиву прописать (пробовал отельно chmod +x и отдельно chmod 755).
 
пакую такой командой:
 
tar cvzf /test/`date "+%d-%m-%Y-%H-%M"`-backup.tar.gz *
  • 2 months later...
Posted

На KeeneticOs 4.2 Beta 4 отработал с такими ошибками

tar: etc/qBittorrent_entware/config/ipc-socket: socket ignored
./backup: line 72: ndmq: not found
./backup: line 101: ndmq: not found
cp: can't stat '/tmp/mnt/WDSSD/backup/firmware-2024-09-19': No such file or directory

 

Posted
44 минуты назад, Dalex сказал:

На KeeneticOs 4.2 Beta 4 отработал с такими ошибками

tar: etc/qBittorrent_entware/config/ipc-socket: socket ignored
./backup: line 72: ndmq: not found
./backup: line 101: ndmq: not found
cp: can't stat '/tmp/mnt/WDSSD/backup/firmware-2024-09-19': No such file or directory

 

На предыдущей странице была инфа, как можно установить вручную ndmq

 

  • Thanks 1
  • 1 month later...
Posted (edited)

Я чисто Entware бэкаплю вот этим скриптом:

#!/bin/sh

# Создаем резервное копирование
backup_file="/opt/entware-backup/entware-backup-$(date +%Y-%m-%d).tar.gz"
tar -czf "$backup_file" --exclude=/opt/entware-backup /opt

# Загружаем файл на FTP сервер
ftp_server="192.168.100.2"
ftp_user="admin"
ftp_pass="Pa$$w0rd"
ftp_path="/Backup/Entware/"

# Загружаем файл
curl -T "$backup_file" ftp://$ftp_user:$ftp_pass@$ftp_server$ftp_path

# Проверяем успешность загрузки и удаляем файл
if [ $? -eq 0 ]; then
    echo "Backup uploaded successfully. Deleting local file..."
    rm "$backup_file"
else
    echo "Failed to upload backup."
fi

Должна быть создана папка /opt/entware-backup (она добавлена в исключения в скрипте, чтобы избежать зацикленности), в нее пишется архив всего Entware с текущей датой, после чего архив загружается на мою хранилку по FTP (на Entware должен быть установлен curl), после загрузки архив удаляется из директории /opt/entware-backup.

Этот скрипт стоит в cron на каждое воскресенье.

Edited by corder
  • Thanks 2
  • 2 months later...
Posted (edited)
В 06.10.2023 в 15:55, yrzorg сказал:

При ручном запуске скрипт работает, но выдаёт такую ошибку
 

[root@Tech : ~]#>. /opt/etc/cron.daily/backup
grep: warning: stray \ before !
grep: warning: stray \ before !
{

Стоит обратить внимание или забить?

Разобрались с этим? У меня такой же вывод.

Разобрался

1. grep: warning: stray \ before !

Эта ошибка возникает из-за некорректного экранирования символа ! в строке:

EXCLCONFCMD='\! \$\$\$\|clock date' 
  • Символ ! в grep требует экранирования (\!) только в контексте интерпретации shell (например, в интерактивной оболочке, где ! используется для истории команд).
  • В скрипте экранировать ! в аргументах grep не нужно, если команда выполняется не в интерактивной оболочке.

Решение: Удалите экранирование !, оставив:

EXCLCONFCMD='! $$$\|clock date'

 

Плюс ошибка как у пользователя выше.

cp: can't stat '/tmp/mnt/DK_1Tb/00_Backup/keenetic_ultra_h/auto/firmware-2024-12-28': No such file or director

В итоге в бапке бэкапов создаются бэкапы конфига, текущего конфига, бэкап entware, но не бэкап прошивки.

Бэкап прошивки падает в /opt/backup и заворачивается вместе с этой папкой в бэкап entware. Что кажется как-то криво.

Переменные в скрипте:

BACFIRMDIR=OPKG:/backup/

BACSTORDIR=/tmp/mnt/DK_1Tb/00_Backup/keenetic_ultra_h/auto/

Cкрипте  взят в варианте от @usan с получением прошивки через rci.

ЧЯДНТ?

 

Keenetic Ultra KN-1811, прошивка 4.2.1. К роутеру подключена флэшка с entware и HDD на который бэкапится конфиг

 

Edited by G V
Posted

Доброго времени суток!
Может ли кто-то пошагово описать процедуру переноса Entware со всем установленным ПО и его настройками из внутренней памяти роутера на внешний USB-диск, подключённый к USB-порту роутера?

  • Confused 1
Posted
В 03.01.2025 в 21:36, Absaz сказал:

Доброго времени суток!
Может ли кто-то пошагово описать процедуру переноса Entware со всем установленным ПО и его настройками из внутренней памяти роутера на внешний USB-диск, подключённый к USB-порту роутера?

1. Сделать бэкап

Вручную через 

tar cvzf /opt/opkg_backup.tar.gz -C /opt

где /opt/opkg_backup.tar.gz - куда сохранять

автоматически можно через скрипт

2. По инструкции так же развернуть Entware, только использовать полученный архив. 

install/opkg_backup.tar.gz

  • Thanks 1
Posted (edited)

Решение хорошее, пользовался им до тех пор пока внешний SSD не накрылся и весь бэкап не потерялся тоже.
Да, хранить бэкап на том же устройстве плохая идея.

Поэтому решил переделать скрипт под себя, добавил через rclone копирование на сетевую шару и на Google Drive и Mega.

Плюсом нотификация о результатах бэкапа в телеграм.

Кладем backup_config.env по пути /opt/etc

А скрипт backup по пути /opt/usr/bin/, но можно и любой другой по усмотрению.

Даём права на исполнение:

chmod +/opt/usr/bin/backup

Далее жмем crontab -e и добавляем задачу в планировщик, естественно время выбираем по вкусу:

0 11 * * * /opt/bin/bash /opt/usr/bin/backup

 

backup backup_config.env

Edited by AssGuard2
  • Thanks 2
Posted
2 часа назад, AssGuard2 сказал:

 

chmod +/opt/usr/bin/backu

chmod +x /opt/usr/bin/backup

 

  • Upvote 1
Posted

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

1. "Встроенный " tar и tar, установленный через "opkg install tar" работают по-разному. Как минимум, в первом нет ключей "--exclude"

Дальнейшее относится к отдельно устанавливаемому tar-у.

2. 

Команда вида

tar cvzf /opt/opkg_backup.tar.gz -C /opt

работать не будет. Сработает либо 

tar cvzf /opt/opkg_backup.tar.gz /opt

либо

tar cvzf /opt/opkg_backup.tar.gz -C /opt .

Важна точка на конце.

Их различие прекрасно разжёвано тут:

Для случая, если мы хотим восстановить бэкап через автоматическую распаковку архива из папки install, нам подходит только команда, оканчивающаяся на "-C /opt ."

3. В случае использования ключей --exclude вариант, который заработал через скрипт, имеет такой вид:

tar --exclude=var/run/* cvzf /opt/opkg_backup.tar.gz -C /opt .

При такой команде "/opt/var/run" войдёт в архив, но пустая. Если ввести "--exclude=var/run" - папки "run" вовсе не будет. Если ввести "--exclude=/opt/var/run/*" или "--exclude=/opt/var/run" - ключ "--exclude" не сработает.

  • Thanks 1
  • 5 months later...
Posted

Народ, приветствую!

У меня роутер с одним USB-портом, порт занят LTE-модемом. В связи с этим entware во внутренней памяти.

Немного доработал скрипт чтобы он использовал яндекс.диск, смонтированный по davfs2

#!/opt/bin/sh

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

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

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

# Указываем папку для бэкапа
BACSTORDIR="/tmp/yandex/"

# Проверяем что папка корректно смонтирована (важно, если хранилище бэкапов "в облаке")
if [ ! -f "$BACSTORDIR/MOUNT-OK" ]; then 
logger -t $TAG "Папка для бэкапа не смонтирована!"
return 1
fi

# Создание временной папки
TEMPSTORDIR=/tmp/backup/
mkdir $TEMPSTORDIR
chmod 777 $TEMPSTORDIR

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

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

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

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

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

# Путь к резервной копии прошивки на USB FLASH. Определить в CLI по команде 'ls ?'. Обычно это метка диска в виде 'LABEL:/'
BACFIRMDIR=/tmp/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 > ${TEMPSTORDIR}${BACNAME}-${DATE}.tgz
    else
	logger -t $TAG "Skiping backup entware"
fi

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

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

mv $TEMPSTORDIR* $BACSTORDIR
rm -rf $TEMPSTORDIR

logger -t $TAG "Finished"
cd $BACKSTORDIR

# Выводим в лог список файлов-архивов до удаления старых резервных копий и после
logger -t $TAG "Files before removing old archives
`ls -l`"
logger -t $TAG "Remove old archives"
find $BACKSTORDIR -mtime +${DAYSTOR} -delete
logger -t $TAG "Files after removing old archives
`ls -l`"

logger -t $TAG "Exiting"

Он работает, но я заметил, что при копировании создаётся кеш, путь к нему прописывается в davfs2.conf
И этот кеш после того, как файл скопирован в облако, НЕ убивается.


Вот думаю как решить, пока не соображу

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

This site uses cookies. By clicking "I accept" or continuing to browse the site, you authorize their use in accordance with the Privacy Policy.