30-Openwrt config save and restore

news/2025/2/9 5:45:46 标签: linux, 网络, 运维

在使用sysupgrade升级的时候,默认需要把配置文件进行备份,升级完成后进行恢复。如果是-n则把配置文件删除,恢复默认配置。

1、哪些文件需要备份

使用sysupgrade -l可以列出哪些文件被修改了,后面备份的时候就是这些文件

root@openwrt:# sysupgrade -l
/etc/config/ddns
/etc/config/dhcp
/etc/config/dropbear
/etc/config/firewall
/etc/config/fstab
/etc/config/guide
/etc/config/hd-idle
/etc/config/htpdate
/etc/config/igmpproxy
/etc/config/iptv
/etc/config/led
/etc/config/mtkhnat
/etc/config/network
/etc/config/rpcd
/etc/config/samba
/etc/config/system
/etc/config/tempctrl
/etc/config/timer_reboot
/etc/config/ubootenv
/etc/config/uhttpd
/etc/config/umdns
/etc/config/upnpd
/etc/config/vsftpd
/etc/config/wifidev
/etc/config/wireless
/etc/crontabs/root
/etc/dropbear/dropbear_rsa_host_key
/etc/fw_env.config
/etc/group
/etc/hosts
/etc/inittab
/etc/opkg/keys/0b26f36ae0f4106d
/etc/opkg/keys/1035ac73cc4e59e3
/etc/passwd
/etc/profile
/etc/rc.local
/etc/shadow
/etc/shells
/etc/sysctl.conf

那这些文件是如何被检测到需要备份呢,主要就是根据/lib/upgrade/keep.d/下面的文件内容

root@openwwrt:/lib/upgrade/keep.d# ls
base-files       ppp     base-files-essential  busybox  
uboot-envtools   opkg    uhttpd

如base-files文件里面的内容如下

root@zihome:/lib/upgrade/keep.d# cat base-files
/etc/config/
/etc/crontabs/
/etc/dropbear/
/etc/profile.d

这就说明这几个目录、文件的内容发生变化就会被记录

那/lib/upgrade/keep.d/下面的文件是如何生成的?

方式1

位于./package/base-files/Makefile脚本里面openwrt有标准的Makefile定义格式,如下:

define Package/base-files/conffiles
/etc/config/
/etc/config/network
/etc/config/system
/etc/crontabs/
/etc/dropbear/
/etc/ethers
/etc/group
/etc/hosts
/etc/inittab
/etc/iproute2/rt_protos
/etc/iproute2/rt_tables
/etc/passwd
/etc/profile
/etc/profile.d
/etc/protocols
/etc/rc.local
/etc/services
/etc/shadow
/etc/shells
/etc/sysctl.conf
/etc/sysupgrade.conf
$(call $(TARGET)/conffiles)
endef

所以当我们自己写的package模块,如果有配置文件需要保留,那就在对应的Makefile里面conffiles的定义,如想在test模块添加配置文件保留,如下定义即可:

define Package/test/conffiles
/etc/config/test
endef
方式2

也可以直接在文件系统中./19.07/package/base-files/files/lib/upgrade/keep.d/base-files-essential添加文件

root@openwrt:/lib/upgrade/keep.d# cat base-files-essential 
# Essential files that will be always kept
/etc/hosts
/etc/inittab
/etc/group
/etc/passwd
/etc/profile
/etc/shadow
/etc/shells
/etc/sysctl.conf
/etc/rc.local

2、备份还原过程

执行sysupgrade升级的时候,如果没有-n,则会调用do_save_conffiles()函数,该函数会扫描/lib/upgrade/keep.d/文件下的所有内容,然后通过跟/rom/文件里面的对比,不一致则备份。

add_conffiles() {
	local file="$1"
	( find $(sed -ne '/^[[:space:]]*$/d; /^#/d; p' \
		/etc/sysupgrade.conf /lib/upgrade/keep.d/* 2>/dev/null) \
		\( -type f -o -type l \) $find_filter 2>/dev/null;
	  list_changed_conffiles ) | sort -u > "$file"
	return 0
}

        # rom is used for pkgs in /rom, even if updated later
		find /usr/lib/opkg/info -name "*.control" \( \
			\( -exec test -f /rom/{} \; -exec echo {} rom \; \) -o \
			\( -exec test -f /overlay/upper/{} \; -exec echo {} overlay \; \) -o \
			\( -exec echo {} unknown \; \) \
			\) | sed -e 's,.*/,,;s/\.control /\t/' > ${INSTALLED_PACKAGES}

具体过程可以看源码

然后生成压缩文件

export CONF_TAR=/tmp/sysupgrade.tgz

之后在升级完固件后,将压缩包进行备份

platform_copy_config() {
    rm -rf $1/*
	cp -af "$CONF_TAR" $1/
	sync
}

注意:1907之后的openwrt,将sysupgrade代理到do_,所以很多的环境变量会变化,如这边的 C O N F T A R 压缩包就会变成 CONF_TAR压缩包就会变成 CONFTAR压缩包就会变成UPGRADE_BACKUP这个名字

等待升级启动完成,在启动脚本中,将压缩包进行解压,完成配置文件还原

./package/base-files/files/lib/preinit/80_mount_root
#!/bin/sh
# Copyright (C) 2006 OpenWrt.org
# Copyright (C) 2010 Vertical Communications

do_mount_root() {
	mount_root
	boot_run_hook preinit_mount_root
	[ -f /sysupgrade.tgz ] && {
		echo "config restore..."
		cd /
		mv sysupgrade.tgz /tmp
		tar xzf /tmp/sysupgrade.tgz
		rm -f /tmp/sysupgrade.tgz
		sync
		echo "tar xzf /sysupgrade.tgz...ok"
	}
}

[ "$INITRAMFS" = "1" ] || boot_hook_add preinit_main do_mount_root


http://www.niftyadmin.cn/n/354874.html

相关文章

实现并测试协同滤波算法

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 本次实验实现了基于用户和基于项的协同滤波算法,并在 Movielens 两个较小的数据集上进行了测试,测试采用 RMSE 进行评估 一、问题简述 1.1 推荐系统问题 推荐系统问题旨在用户推荐相关项,项…

BFT 最前线 | ChatGPT登顶App Store;国产中文大语言模型「天河天元」发布;华为招募天才少年;阿里分拆上市

原创 | 文 BFT机器人 AI视界 TECHNOLOGY NEWS 01 ChatGPT上架App Store登顶榜首 OpenAI:很快也将出现在安卓上 近日,ChatGPT正式发布App版本,上架APP Store,支持iPhone和iPad设备。OpenAI表示,ChatGPT iOS APP可免费…

Windows系统数据结构——最小生成树、Prim算法和Kruskal算法

我是荔园微风,作为一名在IT界整整25年的老兵,今天总结一下Windows系统数据结构——最小生成树、Prim算法和Kruskal算法。 我在各在论坛看了很多相关帖子,发现一个简单的问题都被复杂化了。最小生成树、Prim算法和Kruskal算法真的没有大家想的…

组态王使用指南|安装包|快速入门教程|含PLC与组态王网口串口通信|速查命令PDF

组态王安装包及安装方法: 组态王7.5 SP3下载安装授权_组态王安装包_城北许工α的博客-CSDN博客 组态王快速入门教程: 组态王教程(基础入门篇).pdf (book118.com) 组态王与PLC通讯: 网口通讯: 西门子1200与组态王TCP通讯 - 知…

HACK ME PLEASE: 1

文章目录 HACK ME PLEASE: 1实战演练一、前期准备1、相关信息 二、信息收集1、访问网站2、端口扫描2、扫描目录3、访问网站4、访问网站5、扫描目录6、访问网站7、登录MySQL数据库8、查看数据表9、查看users表的内容10、查看tblUsers表内容11、解密12、加密13、修改密码14、查询…

AI与税务管理:新技术带来的新机遇和新挑战

本文作者:王伊琳 人工智能(Artificial Intelligence,AI)是指由计算机系统或机器人模拟人类智能的过程和结果,包括感知、理解、学习、推理、决策等能力。近年来,随着计算机技术、互联网平台、大数据分析等的…

Imagination推出IMG CXM最小GPU,为家庭娱乐带来无比便捷的用户界面

全新IMG CXM GPU核兼容RISC-V并原生支持全HDR,帮助数字电视及整个消费市场降低成本 中国北京 - 2023年5月23日 - Imagination Technologies推出全新IMG CXM GPU系列为对成本敏感的消费级设备带来无缝的视觉体验。该系列包含原生支持全HDR用户界面的最小GPU。 IMG CX…

网络安全工程师考证指南

已经到2023年了,那么信息安全类证书最有前途的有哪些呢?今天和大家一起聊聊这个话题! 1.CISP(国家登记的信息安全专业人员) 就CISP而言,安全实践者基本耳闻,算是国内权威认证,毕竟有政府背景为认证做背书&…