外观
OMV 配置怎么留底
完成后你会知道:OMV 的设置存在哪里,重装系统盘后哪些会丢,哪些文件看起来像备份其实不是,以及怎么留下一份真正能用的配置副本,重装时照着重建。
先说一个事实:OMV 没有「导出配置」和「导入配置」功能。 官方 FAQ 的原话是,没有常规的备份与还原流程,如果打算干净重装,就把 /etc/openmediavault/config.xml 留作参考。所以配置留底靠下面三层办法组合。
配置在哪里
| 内容 | 保存位置 | 系统盘坏了或重装之后 |
|---|---|---|
| OMV 的设置:共享文件夹、服务、计划任务、通知、证书、网络、插件设置 | /etc/openmediavault/config.xml | 丢,除非有副本 |
| 用户和用户组的账号、密码哈希、UID 和 GID | 系统的 /etc/passwd、/etc/shadow、/etc/group;config.xml 里只有用户的邮箱、SSH 公钥这类附加信息 | 丢,要重建,并且让 UID、GID 和数据盘上文件的属主对得上 |
| 数据盘上的文件系统和文件 | 数据盘自己 | 还在,在 存储器 → 文件系统(Storage → File Systems)重新挂载 |
| compose 文件和应用数据 | 你为 Compose 插件设置的共享文件夹 | 在数据盘上就还在 |
| 容器镜像和 Docker 内部数据 | Docker 存储目录 | 看它放在哪块盘 |
数据盘不受系统盘影响,这也是 OMV 要求系统盘和数据盘分开的原因。丢掉的是「怎么把这些盘变成共享」的那部分知识,配置留底留的就是它。
config.xml 里有明文的密码和私钥
它包含邮件服务器密码、rsync 任务和 rsync 服务器的密码、SSL 与 SSH 证书的私钥,以及部分插件的口令。把它当密码文件对待:副本放在只有管理员能读的位置,不要发到论坛,不要放进大家都能读的共享文件夹。
撤销缓冲不是备份
/etc/openmediavault/ 下可能出现 config.xml.0001、config.xml.0002 这样的文件。它们是撤销缓冲,不是备份:
- 你在界面里每保存一次设置,OMV 就把保存之前的
config.xml复制成下一个编号的文件(权限 600)。 - 点黄色提示条上的 应用(Apply)并成功后,这些文件全部被删除。
- 点 撤销(Undo)时,OMV 用其中编号最小的那一个还原,也就是回到上一次应用之前的状态,然后同样删除全部。
所以它们只保存「还没应用的更改」之前的状态,应用之后就不存在了。有人把它们当作历史备份,等到真要用时发现文件早已被清掉。
还要注意,应用时的清理是按 config.xml.* 通配删除的(源码 databasebackend.inc 的 unlinkRevisions()),不只删数字编号的文件。自己做的副本不要命名成 config.xml.<后缀> 放在 /etc/openmediavault/ 里,例如 config.xml.bak,下次点应用就会被一起删掉。副本放到别的目录,用 config-<日期>.xml 这样的名字,见下文。
命令行的「撤销」:omv-firstaid
Web 界面打不开时,可以在本机控制台或 SSH 里用 omv-firstaid,选 Restore configuration backup(恢复配置备份)。它读的就是上面那些撤销缓冲:
- 在 OMV 的 shell 以 root 身份运行
omv-firstaid,进入该菜单项。菜单是英文的。 - 没有可用的文件时,提示
No configuration backup found!,这是正常的,说明你没有未应用的更改。 - 有文件时,它取最新的一个(编号最大,即撤销最近一次保存),先问是否查看差异,再问是否恢复,恢复的默认回答是「否」。
恢复配置备份会覆盖当前配置
- 影响范围:当前的
config.xml被覆盖,还没应用的更改丢失。恢复完成后所有撤销缓冲被删除。 - 前置条件:先看差异,确认要撤销的内容;条件允许时,先把当前的
config.xml复制一份到别处。 - 怎么回退:恢复之后无法再撤销。事先复制的那一份就是你的后路。
它不能帮你找回上周的配置,因为那时的撤销缓冲早就被清掉了。
真正的留底方式
第一层:备份系统盘
备份系统盘的镜像里有 config.xml、用户和密码、插件,是最完整的一层。代价是体积大、恢复步骤多,所以还要后两层。
第二层:定期留一份 config.xml
用 系统 → 计划任务(System → Scheduled Tasks)建一条每周运行的任务,用户选 root,命令写:
sh
cp -p /etc/openmediavault/config.xml <备份目录>/config-$(date +%F).xml<备份目录> 换成数据盘上一个只有管理员能访问的目录。-p 会保留文件权限(OMV 把它设为 660,组是 openmediavault-config),在 EXT4 之类的文件系统上这就是保护。OMV 会把命令写进一个脚本再由 cron 调用,所以命令里的 % 没有问题。计划任务的写法见计划任务。
这个目录要被 rsync 任务或其他备份覆盖到,否则副本和系统盘一起丢。重大改动之后,比如加了磁盘、换了网络、装了新插件,手动运行一次。
第三层:把配置写成文档
config.xml 只能当参考,因为没有「导入」。真正能在新系统上用的,是一份你读得懂的清单。建议记下:
| 要记的 | 怎么获取 |
|---|---|
| 磁盘、文件系统、挂载情况 | 诊断 → 报告(Diagnostics → Report)里的 blkid、fstab、df、分区部分;每块盘的型号和序列号 |
| 共享文件夹:名称、相对路径、权限 | 存储器 → 共享文件夹(Storage → Shared Folders) |
| 用户和组:UID、GID、组成员 | 见下面的命令 |
| 服务设置:SMB、NFS、SSH 等 | 各服务页面,或用下面的命令导出 |
| 网络:IP、DNS、网桥、Bond | 网络 → 接口(Network → Interfaces) |
| 计划任务、rsync 任务、各插件的任务 | 各页面 |
| 已装插件和版本 | 系统 → 插件(System → Plugins),或下面的命令 |
| compose 文件 | 已经在数据盘上的共享文件夹里 |
诊断 → 报告 会一次输出系统版本、网卡、路由、防火墙规则、RAID、blkid、fstab、挂载、分区、软件源、已装软件包和插件,是现成的系统快照,请保存起来,注意里面有主机名和 IP。
在 OMV 的 shell 里,下面这些命令都是只读的:
sh
# 已安装的 OMV 软件包和版本
dpkg-query -W -f='${Package} ${Version}\n' 'openmediavault-*'
# 普通用户的名称、UID、主组 GID
awk -F: '$3 >= 1000 && $3 < 65534 {print $1, $3, $4}' /etc/passwd
# 列出配置数据库里所有数据模型,再按需读取一个
omv-confdbadm list-ids
omv-confdbadm read conf.system.sharedfolder --prettifyomv-confdbadm read 以 JSON 输出,适合存档共享文件夹、计划任务、网络这类设置。不要导出带密码的数据模型,如邮件通知、证书、rsync 任务;导出之后先检查再保存。配置数据库的更多细节见配置数据库:config.xml 与 omv-confdbadm。
重装之后怎么用这些东西
- 重装系统,装法见用 ISO 安装 OMV,安装时拔掉数据盘。
- 对照文档,按这个顺序在界面里重建:网络、时间、邮件通知、更新、
存储器 → 文件系统挂载已有的数据盘、用户和用户组(UID、GID 和以前一致)、共享文件夹(相对路径和以前一致)、服务、计划任务、插件与 compose。 - 旧的
config.xml只用来对照查看。
不要把旧的 config.xml 直接覆盖回新系统。文件系统、共享文件夹在数据库里是按 UUID 互相引用的,新装的系统和旧文件不一致,覆盖后可能出现大量指向不存在对象的引用,还可能让后续部署写回旧状态,把本来能用的系统弄坏。这一点依据数据库的结构推断,未在实机上验证,但风险不值得去试。完整的重装流程见系统盘坏了:重装并接回数据盘。
第三方工具 omv-regen
社区里有一个叫 omv-regen 的工具,自称能备份和迁移 OMV 配置。它不是 omv-extras 插件,也不是官方组件,本站没有在 OMV 8 上验证过它的行为,所以不写操作步骤,也不推荐。想了解可以看它的 GitHub 项目,用之前先在虚拟机里试。
大版本升级前
大版本升级的脚本在升级前会把配置复制成 config.xml.7x.bak,放在 config.xml 旁边。这有两个后果:一是 OMV 在你点 应用 时会删除所有 config.xml.* 形式的文件(源码已确认),这份备份会在升级后第一次应用时被一起删掉;二是 omv-firstaid 的「恢复配置备份」也按 config.xml.* 查找,升级后这份文件还在的话,它可能被当成「最新的备份」(按源码推断,未实机验证)。不要用它去覆盖 OMV 8 的配置,那是 OMV 7 的配置库。升级前请自己另存一份,不要依赖它。
检查结果
- 你能说出最近一份
config.xml副本在哪、是哪天的、谁能读它(用ls -l看权限)。 - 副本能读:
head -n 5 <副本文件>能看到 XML 的开头。 - 你手上有一份配置文档,包含磁盘、共享、用户 UID、服务、计划任务和插件清单。
- 想一想:系统盘现在坏掉,你能不能在一小时内把共享重新建出来?答不上来就补文档。
常见问题
omv-firstaid 说没有配置备份。 这表示当前没有未应用的更改,撤销缓冲是空的,不是出错。
我能把 config.xml 导入另一台新机器吗? 官方不支持,也不建议。用它做对照,在新机器上手工重建。
备份了 config.xml,还需要备份系统盘吗? 需要。config.xml 里没有用户账号和密码,也没有插件和系统文件。
参考资料
- OMV 官方文档 FAQ:「Can I backup or restore an existing OMV configuration?」
- OMV 源码:
config.xml的撤销缓冲逻辑在usr/share/php/openmediavault/config/databasebackend.inc,omv-firstaid的模块在usr/share/openmediavault/firstaid/modules.d/40restore_config_backup.py,界面的应用与撤销在engined/rpc/config.inc。