在 / (根目录)创建一个 Git 存储库以用于跟踪设置?

在 / (根目录)创建一个 Git 存储库以用于跟踪设置?

因此我主要将 Git 用于开发目的,但我刚刚意识到我可以使用它来存储我在 Ubuntu 安装上的设置文件的版本。

我建议的设置是:

  • git init回购/

  • 添加一个.gitignore/忽略除我想要跟踪的特定设置之外的任何文件。

    例如,.gitignore可以包含(来源):

    ## Ignore everything...
    *
    
    ## Except...
    !/etc/default/tlp
    !/etc/crontab
    
  • 每当我更改这些低级设置时,我都可以跟踪它们。

这种设置会有什么问题吗?内核是否总是/只需要某些文件夹?它会扰乱任何应用程序的运行吗?

答案1

对你的两个问题来说,答案都是否定的,你可以在其中创建任何你想要的目录/。我猜唯一可能发生的事情是某些空间路径的一些权限问题。

但是最好将.git目录存储在其他地方,如下所示:

git --git-dir=/home/user/backup-root --work-tree=/

这里

答案2

实际上,您可能希望对中的配置文件进行版本控制/etc/(您不关心根目录的条目/,特别是像procusrbin中的目录/),因此您可能希望安装etckeeper包裹

您还可以对一些选定的子目录进行版本控制(就像/usr/share/applications/您提到的那样)。

但是,不要弄乱 Ubuntu包管理系统。也许您最应该做的是备份当前已安装软件包的列表。

答案3

在 / 中拥有一个 git repo 工作得很好,只是当你有一个较低级别的 git repo 时很难注意到它有问题,因为它会回答所有问题。

注意:使用“debsums”可以减少工作量,而且可能更有用

sudo apt-get install debsums

这将允许您快速检测二进制文件或配置文件中的(大多数)更改。

作为已安装软件包的示例,以下是与上游软件包不同的软件包。

$ sudo debsums -c
/boot/vmlinuz-4.10.0-19-generic

您可以使用以下命令获取已更改的配置文件列表:

$ sudo debsums -ec
debsums: missing file /etc/default/chromium-browser (from chromium-browser package)
 /etc/libvirt/libvirt.conf
 <snip>

请注意,chromium 浏览器打包不正确,并且打包文件列表中列出的文件不存在。

/var/lib/dpkg/info/chromium-browser.list

这使用 dpkg 数据并避免了庞大的 /.git 目录和工作流程。

答案4

如果你要/etc/shadow在 git repo 中存储敏感内容(如),则应确保并非所有用户都可以读取它,因为默认情况下对象将具有权限444,目录将具有权限0755。你可以将权限更改为.git700将其放入/root

另一个问题是 git 不像文件系统那样存储文件权限,也不存储扩展属性。对于文件,git 只存储它们是否可执行。因此,如果您要恢复已删除的文件,其所有者和组将是 root(如果您以 root 身份执行此操作),其权限将是644755。对于所有者不是 root 的服务配置文件,这可能会有问题。

相关内容