如何在备份(/etc)中保留文件所有权?

如何在备份(/etc)中保留文件所有权?

我看到许多消息来源表明备份可能很有用/etc。例如,演示文稿“为朋友和家人支持 Debian 机器”。

对于任何重要的备份,我们还需要一个明确定义的恢复过程(我们可以定期测试:-)。

如何恢复这些系统文件,来自包含所有权信息的备份?给出一个有效的恢复过程的示例。说明所做的任何假设。您可以选择您选择的备份工具,例如taretckeeper


具有特定所有者的文件示例:

$ 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

要恢复备份:

  1. 执行默认安装(与原始默认安装相同)。
  2. 安装etckeeper必要的版本控制系统。
  3. /etc恢复(git clone和或等效)的备份git checkout。正如 sourcejedi 所指出的,您需要在安装任何动态分配用户或组 ID 的软件包之前执行此操作。
  4. 恢复已安装软件包的列表并安装它们。 Etckeeper 不会跟踪这一点;在 Debian 及其衍生版本上,使用apt-clone,请参阅如何将已安装的软件包选择从一个 Debian 系统复制到另一个 Debian 系统? (Debian 喘息))。
  5. 重启。

请注意,如果硬件不完全相同或者文件系统已重新格式化(恢复备份时往往会出现这种情况),则有些功能可能无法正常工作。为了使恢复工作更加无缝,请确保您不在配置中的任何位置使用唯一的硬件标识符(例如 MAC 地址、磁盘序列号)或随机标识(例如使用文件系统标签,而不是文件系统或分区 UUID)。

答案2

这个答案是一些需要测试的问题的清单,在其他地方没有看到它们提到。现在我可以很高兴地忽略“备份”/etc 的提及,其中也没有详细说明如何恢复它。 我还没有测试过这个清单是否完整

以下步骤还忽略了我在软件包升级期间在 etckeeper 中看到的频繁的版本敏感和其他更改,正如问题中没有具体提到的。至少可能有一些更简单的系统,这不是问题,比如运行 OpenWrt 的路由器。

  1. 假设:此备份具体包括/etc.
  2. 假设:您还知道如何处理对文件系统的任何引用,例如,可能已使用不同的 UUID 在/etc/fstab.
  3. 假设:目标系统不包含任何额外的与备份相比。例如,它是操作系统的全新安装,您的初始用户是使用相同的名称(和 UID)创建的,并且在升级过程中没有向操作系统添加任何其他服务。这在 Debian 稳定版本中可能是正确的,但对于滚动版本发行版来说肯定不可靠。
  4. 假设:安装过程对于分配的 UID(包安装顺序)是完全确定的,这不受存储库中任何新更新的影响。我相信通常的包管理器是确定性的。同样,Debian 稳定版可能是可靠的,而滚动发布版则不然,并且它们之间存在着一个不确定的领域。您还可以安排运行完全相同版本的安装程序,而无需访问更新存储库(均在恢复期间)当您安装原始系统时)。
  5. 您应该已经安装了备份恢复工具:)。
  6. 以下步骤还假设 Linux 的传统影子密码文件。 BSD 系统使用不同的文件名。一些特殊用途的Linux系统引入了风格明显不同
  7. 确保您可以启动进入某些“救援模式”,而无需使用 中定义的任何密码/etc,并且您不需要任何更复杂的内容即可访问备份。我们这是在玩火。我不知道磁盘加密将如何处理这个问题,尽管使用与备份相同的密码可能会有所帮助。请注意,如果从单独的“救援”运行,以下步骤将不起作用系统”。
  8. mv /etc/ /etc.installer # can be removed later
  9. mkdir /etc && chmod 755 /etc
  10. ID_FILES=passwd group shadow
  11. for i in $ID_FILES; do cp /etc.installer/${i} /etc; done
  12. i现在,对于中的每个文件$ID_FILES,您可以/etc/${i}从备份恢复到目标系统。
  13. 现在您可以恢复全部文件,包括其所有权信息。
  14. 现在你可以重新应用 SELinux 标签或同等内容(如有必要)。

如果备份是 etckeeper 存储库(并且没有其他文件),则第 12 步是将其复制/克隆到/etc,然后运行etckeeper init​​.您可以跳过步骤 10-12。

OpenWrt

OpenWrt 路由器支持系统配置备份/恢复,并在 Web 界面中提供特定功能。

在我的 OpenWrt 15.05.1 系统上,我看到唯一拥有文件/etc(或其他任何地方)的用户是rootnobody。可以安全地假设 OpenWrt 的全新安装已经包含这些用户。

我不知道添加了额外用户的 OpenWrt 设置是否可以通过此工具正确处理。

相关内容