我看到许多消息来源表明备份可能很有用/etc
。例如,演示文稿“为朋友和家人支持 Debian 机器”。
对于任何重要的备份,我们还需要一个明确定义的恢复过程(我们可以定期测试:-)。
如何恢复这些系统文件,来自包含所有权信息的备份?给出一个有效的恢复过程的示例。说明所做的任何假设。您可以选择您选择的备份工具,例如tar
或etckeeper
。
具有特定所有者的文件示例:
$ ls -l|grep -v "root root"
total 2240
-rw-r-----. 1 root brlapi 33 Nov 15 21:32 brlapi.key
-rw-r-----. 1 root chrony 481 Nov 21 11:03 chrony.keys
drwxr-xr-x. 4 root lp 4096 Apr 18 10:58 cups
-rw-------. 1 tss tss 7046 Feb 5 2016 tcsd.conf
答案1
我的方法是安装等等管理员。它很好地集成在 Debian 及其衍生版本中。 Etckeeper 负责记住权限(但不记住 SELinux 标签)。然后,备份就简化为备份版本控制存储库(例如,来自)/etc
的众所周知的问题。git pull
/etc
要恢复备份:
- 执行默认安装(与原始默认安装相同)。
- 安装
etckeeper
必要的版本控制系统。 /etc
恢复(git clone
和或等效)的备份git checkout
。正如 sourcejedi 所指出的,您需要在安装任何动态分配用户或组 ID 的软件包之前执行此操作。- 恢复已安装软件包的列表并安装它们。 Etckeeper 不会跟踪这一点;在 Debian 及其衍生版本上,使用
apt-clone
,请参阅如何将已安装的软件包选择从一个 Debian 系统复制到另一个 Debian 系统? (Debian 喘息))。 - 重启。
请注意,如果硬件不完全相同或者文件系统已重新格式化(恢复备份时往往会出现这种情况),则有些功能可能无法正常工作。为了使恢复工作更加无缝,请确保您不在配置中的任何位置使用唯一的硬件标识符(例如 MAC 地址、磁盘序列号)或随机标识(例如使用文件系统标签,而不是文件系统或分区 UUID)。
答案2
这个答案是一些需要测试的问题的清单,在其他地方没有看到它们提到。现在我可以很高兴地忽略“备份”/etc 的提及,其中也没有详细说明如何恢复它。 我还没有测试过这个清单是否完整。
以下步骤还忽略了我在软件包升级期间在 etckeeper 中看到的频繁的版本敏感和其他更改,正如问题中没有具体提到的。至少可能有一些更简单的系统,这不是问题,比如运行 OpenWrt 的路由器。
- 假设:此备份具体包括
/etc
. - 假设:您还知道如何处理对文件系统的任何引用,例如,可能已使用不同的 UUID 在
/etc/fstab
. - 假设:目标系统不包含任何额外的与备份相比。例如,它是操作系统的全新安装,您的初始用户是使用相同的名称(和 UID)创建的,并且在升级过程中没有向操作系统添加任何其他服务。这在 Debian 稳定版本中可能是正确的,但对于滚动版本发行版来说肯定不可靠。
- 假设:安装过程对于分配的 UID(包安装顺序)是完全确定的,和这不受存储库中任何新更新的影响。我相信通常的包管理器是确定性的。同样,Debian 稳定版可能是可靠的,而滚动发布版则不然,并且它们之间存在着一个不确定的领域。您还可以安排运行完全相同版本的安装程序,而无需访问更新存储库(均在恢复期间)和当您安装原始系统时)。
- 您应该已经安装了备份恢复工具:)。
- 以下步骤还假设 Linux 的传统影子密码文件。 BSD 系统使用不同的文件名。一些特殊用途的Linux系统引入了风格明显不同。
- 确保您可以启动进入某些“救援模式”,而无需使用 中定义的任何密码
/etc
,并且您不需要任何更复杂的内容即可访问备份。我们这是在玩火。我不知道磁盘加密将如何处理这个问题,尽管使用与备份相同的密码可能会有所帮助。请注意,如果从单独的“救援”运行,以下步骤将不起作用系统”。 mv /etc/ /etc.installer # can be removed later
mkdir /etc && chmod 755 /etc
ID_FILES=passwd group shadow
for i in $ID_FILES; do cp /etc.installer/${i} /etc; done
i
现在,对于中的每个文件$ID_FILES
,您可以/etc/${i}
从备份恢复到目标系统。- 现在您可以恢复全部文件,包括其所有权信息。
- 现在你可以重新应用 SELinux 标签或同等内容(如有必要)。
如果备份是 etckeeper 存储库(并且没有其他文件),则第 12 步是将其复制/克隆到/etc
,然后运行etckeeper init
.您可以跳过步骤 10-12。
OpenWrt
OpenWrt 路由器支持系统配置备份/恢复,并在 Web 界面中提供特定功能。
在我的 OpenWrt 15.05.1 系统上,我看到唯一拥有文件/etc
(或其他任何地方)的用户是root
和nobody
。可以安全地假设 OpenWrt 的全新安装已经包含这些用户。
我不知道添加了额外用户的 OpenWrt 设置是否可以通过此工具正确处理。