我注意到有几个人推荐使用etckeeper将版本控制应用到我的/ etc目录。
在我看来,默认的安装将存储库放在与您试图pipe理的/ etc相同的机器上。 这对于版本控制来说工作正常,但是不会给服务器备份文件带来额外的好处 – 或者允许我将/ etc的部分从一个源机器复制到另一个源机器。
是否有可能在中央pipe理员机器上共享一个git存储库 ,以便每台服务器上的etckeeper将其数据存储在同一个地方?
(我现在用svn和一些自定义脚本来做类似的事情来提交和还原文件,但是我必须记得在做出更改时提交它们。)
首先,使用安装etckeeper,在/etc/etckeeper/etckeeper.conf中为gitconfiguration。 按照etckeeper的安装方法为您的发行版或源代码。
很快,你会有一个/etc/.git
现在在你的服务器上,确保你有一个(安全的)回购推送…
# ssh faruser@farhost # mkdir somedir cd somedir && git init && chmod 700 .git # exit
现在在初始主机上,通过ssh将本地仓库推送到服务器:
# cd /etc && git push faruser@farhost:somedir
Somedir当然可以在这种情况下是相对的(遵循ssh约定)
当你做一个影响/ etc(并且被etckeeper绑定到/etc/.git)的改变时,你可以这样做,并且你的机器将拥有本地和离机的仓库。
或者设置无密码的ssh,并在/etc/etckeeper/commit.d/中创build一个钩子,所以如果机器总是连接的话,它会自动发生。
那不是重点。 如果您想广泛分发configuration,除了每台机器的本地回购之外,还要设置另一个存储库,并根据需要让每台机器从中挑选 。 这样做可以让每台机器偏离(分支,实际上)并保留版本控制。
可以添加远程分支configuration,以将每个服务器的etckeeper存储库的主分支映射到远程存储库上的分支。 为此,您可以在每台服务器上运行以下命令:
cd /etc git branch -m master $HOSTNAME git remote add origin [email protected]:path/to/single/repo.git git push -u origin master:$HOSTNAME
在这个设置之后,随后的git push会把每个服务器master分支的变化发送到中央仓库的专用服务器分支。
虽然分支不会有一个共同的起点,但它允许通过运行以下方式轻松比较来自代表两个不同服务器的两个不同分支的相同文件:
git diff origin/server1 origin/server2 -- file
这可以与jojoobuild议的自动设置结合使用。
如何自动完成整个故事:
在客户端上创build文件/etc/etckeeper/commit.d/60-push(不要忘了chmod + x it)。
#!/bin/sh git push central_server:/var/git/client_name.git master
central_server在ssh config中定义,见下文。 /var/git/client_name.git是中央服务器上的目录,包含git仓库。
根(!)的〜/ .ssh / config应该包含这样的内容:
host central_server Hostname 192.168.0.1 User etckeeper #a user on the central server IdentityFile ~/.ssh/custom_key # key is in authorized_keys in #etcpeeper@central_server:~/.ssh/authorized_keys
然后你需要在central_server上初始化git repo
mkdir /var/git/client_name.git su etckeeper cd /var/git/client_name.git git --bare init
用/ etc中的小编辑testing它,然后etckeeper提交“testing推送”。
你真的不想让你的备份策略变得敏捷。 虽然有你的configuration文件的副本将是很好的,这是不足够的资格作为一个灾难恢复计划。
重点关注你的系统的真实备份。 简单列表可能是一个用于将磁带包装给磁带的cronjob …哦,对。 没有人再使用磁带了。 好的,一个cronjob rsync 所有的文件到专用的NAS 。 要获得更强大的备份解决scheme,请查看Amanda和Bacula 。
而对于学者来说,我能够像其他任何git回购一样, 将我的etckeeper回购推到github 。