因此我主要将 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/
(您不关心根目录的条目/
,特别是像proc
或usr
或bin
中的目录/
),因此您可能希望安装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
。你可以将权限更改为.git
或
700
将其放入/root
另一个问题是 git 不像文件系统那样存储文件权限,也不存储扩展属性。对于文件,git 只存储它们是否可执行。因此,如果您要恢复已删除的文件,其所有者和组将是 root(如果您以 root 身份执行此操作),其权限将是644
或755
。对于所有者不是 root 的服务配置文件,这可能会有问题。