跳转到内容

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 这样的文件。它们是撤销缓冲,不是备份:

  1. 你在界面里每保存一次设置,OMV 就把保存之前的 config.xml 复制成下一个编号的文件(权限 600)。
  2. 点黄色提示条上的 应用(Apply)并成功后,这些文件全部被删除。
  3. 点 撤销(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(恢复配置备份)。它读的就是上面那些撤销缓冲:

  1. 在 OMV 的 shell 以 root 身份运行 omv-firstaid,进入该菜单项。菜单是英文的。
  2. 没有可用的文件时,提示 No configuration backup found!,这是正常的,说明你没有未应用的更改。
  3. 有文件时,它取最新的一个(编号最大,即撤销最近一次保存),先问是否查看差异,再问是否恢复,恢复的默认回答是「否」。

恢复配置备份会覆盖当前配置

  • 影响范围:当前的 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 --prettify

omv-confdbadm read 以 JSON 输出,适合存档共享文件夹、计划任务、网络这类设置。不要导出带密码的数据模型,如邮件通知、证书、rsync 任务;导出之后先检查再保存。配置数据库的更多细节见配置数据库:config.xml 与 omv-confdbadm。

重装之后怎么用这些东西 ​

  1. 重装系统,装法见用 ISO 安装 OMV,安装时拔掉数据盘。
  2. 对照文档,按这个顺序在界面里重建:网络、时间、邮件通知、更新、存储器 → 文件系统 挂载已有的数据盘、用户和用户组(UID、GID 和以前一致)、共享文件夹(相对路径和以前一致)、服务、计划任务、插件与 compose。
  3. 旧的 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 的配置库。升级前请自己另存一份,不要依赖它。

检查结果 ​

  1. 你能说出最近一份 config.xml 副本在哪、是哪天的、谁能读它(用 ls -l 看权限)。
  2. 副本能读:head -n 5 <副本文件> 能看到 XML 的开头。
  3. 你手上有一份配置文档,包含磁盘、共享、用户 UID、服务、计划任务和插件清单。
  4. 想一想:系统盘现在坏掉,你能不能在一小时内把共享重新建出来?答不上来就补文档。

常见问题 ​

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。

OpenMediaVault 非官方中文使用指南,与 openmediavault 项目及其开发者无隶属关系。