OpenWrt之sysupgrade

布满荆棘的人生 2023-06-30 10:50 111阅读 0赞

升 级 后 只 保 存 自 己 想 要 的 界 面 \color{#FF3030}{升级后只保存自己想要的界面} 升级后只保存自己想要的界面

package/base-files/files/sbin/sysupgrade 对应/sbin/sysupgrade

sysupgrade脚本,像所有的主体处理程序一样,会对传进来的参数进行处理。

Usage: /sbin/sysupgrade [<upgrade-option>...] <image file or URL>
/sbin/sysupgrade [-q] [-i] <backup-command> <file>

下面对这些参数的介绍:

upgrade-option:

-i 开启交互模式

-d 重启前延迟,延迟秒数是传进来的

-v 会打印sysupgrade脚本中的一些信息,脚本中默认打印

-q 与-v相反

-n 升级后不保存配置,默认保存配置

-c 保存所有的改动配置文件到/etc/

-f 从.tar.gz恢复配置

-F 即使升级文件检测失败,也要升级,这个参数是危险的,慎用

-T 验证升级文件和.tar.gz配置文件,但不升级

-h 打印帮助信息

backup-command:

-b 用sysupgrade.conf中指定的文件,创建.tar.gz格式备份文件

-r 用上步创建的.tar.gz文件,恢复配置

-l 列出将会备份的文件列表

  1. #脚本sysupgrade原来的内容
  2. add_uci_conffiles() {
  3. local file="$1"
  4. ( find $(sed -ne '/^[[:space:]]*$/d; /^#/d; p' \ /etc/sysupgrade.conf /lib/upgrade/keep.d/* 2>/dev/null) \
  5. -type f -o -type l 2>/dev/null;
  6. opkg list-changed-conffiles ) | sort -u > "$file"
  7. return 0
  8. }

解读:

  1. sed 一般是进行行操作的指令,
  2. sed -ne
  3. n: 不打印; sed不写编辑行到标准输出,缺省为打印所有行(编辑和未编辑),
  4. e : $ sed -e 1,5d -e s/test/check/’ example #(-e)选项允许在同一行里执行多条命令。如例子所示,第一条命令删除1至5行,第二条命令用check替换test。命令的执行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令的结果
  5. p命令可以用来打印编辑行
  6. /^#/d : 表示打印时 删除 行开头为# 的行
  7. '/^[[:space:]]*$/d : 表示打印时 删除 行开头任意空白字符的行 $(sed -ne '/^[[:space:]]*$/d; /^#/d; p' /etc/sysupgrade.conf /lib/upgrade/keep.d/*)
  8. 表示的就是行打印文件/etc/sysupgrade.conf 及文件夹/lib/upgrade/keep.d/*中包含的文件中不含以“#”及空白字符开头的行,
  9. linux中find命令。
  10. -type 查找某一类型的文件,诸如:
  11. b - 块设备文件。
  12. d - 目录。
  13. c - 字符设备文件。
  14. p - 管道文件。
  15. l - 符号链接文件。
  16. f - 普通文件
  17. 1 l
  18. 所以完整代码的含义为:用find提出sed出的内容中不包含的文件,与 “opkg list-changed-conffiles” 出的内容经过排序一起打印到文件中

改为

  1. add_uci_conffiles() {
  2. local file="$1"
  3. ( find $(sed -ne '/^[[:space:]]*$/d; /^#/d; p' \ /etc/sysupgrade.conf 2>/dev/null) \
  4. -type f -o -type l 2>/dev/null;
  5. ) | sort -u > "$file"
  6. return 0
  7. }
  8. /etc/sysupgrade.conf
  9. #此文件包含的文件和目录应该
  10. #在升级过程中保留
  11. #例如:
  12. /etc/config/network
  13. /etc/config/wireless
  14. /etc/config/system
  15. /etc/httpd.conf

发表评论

表情:
评论列表 (有 0 条评论,111人围观)

还没有评论,来说两句吧...

相关阅读

    相关 OpenWrtddns

    OpenWrt之ddns DDNS原理 利用DNS可以将域名解析为IP地址,从而实现使用域名访问网络中的主机。但是DNS仅仅提供了域名和IP地址之间的静态对应关系,

    相关 OpenWRTprocd服务

    简介 Openwrt 支持模块化编程,增加新功能非常简单。但是一些基础模块必须包含, 它们是OpenWrt核心。如:实用基础库libubox、系统总线ubus、网络接口管