我目前正在修改OpenBSD系统,以便建立自己的防火墙以及其他一些东西。
由于这是相当实验性的(我是一个OpenBSD n00b,我已经把我的系统破坏了3到4次),我想知道其他人制作部分或全部文件系统的经验(我在想什么)特别是/ etc)一些VCS或其他的工作副本。
这是个好主意吗?
我特别感兴趣的是VCS用户为此做了什么。我正在考虑颠覆,集市和git;这不是一个共享的存储库,所以我对基本的vcs功能比对distributed-or-not参数更感兴趣。
我也想知道人们发现的想象或实际陷阱。我可以想象保存文件所有权和权限需要仔细考虑!
当然,任何不涉及VCS的替代方法
答案 0 :(得分:8)
答案 1 :(得分:4)
答案 2 :(得分:4)
我认为还没有人提到etckeeper。
它将/ etc存储在repos(git(默认),mercurial或bzr)中。它解决了保存文件所有权,权限和空目录的问题。它可以与软件包managemnet(至少与apt)集成,以自动提交在安装新软件包期间发生的对/ etc的更改。非常好,如果安装borks你自己的更改,只需回滚。
我已经在Ubuntu中成功使用了一段时间。
答案 3 :(得分:2)
我在“Gnu / Linux Magazine France”上读到了一些内容。 该人使用rsync从/ etc到root /然后通过subversion存储它,而不创建工作副本。
我要引用一下这本杂志。
好的,在这个例子中,服务器运行freeBSD并且是“sparky”,而要保存的机器是debian并且是“replica”。 创建用户“副本”。
在/ usr / local / etc / ssh / sshd_config中添加:
Match User replica
X11Forwarding no
AllowTcpForwarding no
ForceCommand /usr/local/bin/svnserv -t -r /home/replica/svnrepo -tunnel-user=replica
创建存储库
sparky #svnadmin create / home / replica / svnrepo
修正权利:
sparky # chown -R replica:nogroup /home/replica
sparky # chown -R o-rwx /home/replica
sparky # chown -R g-rwx /home/replica
客户方:
安装subversion
replica # mkdir -p /root/scripts/svnrepo
replica # rsync -av /etc /root/scripts/svnrepo
export SVN_SSH ="ssh -i /root/.ssh/id_rsa"
svn import -m "replica config files" /root/scripts/svnrepos svn+ssh://replica@sparky/home/replica/svnrepo
现在,我们的文件夹还不是一个工作副本,所以我们必须制作它。你能创建一个.svn文件吗?他不能:))
cd /root/scripts
mv svnrepo svnrepo.old
svn checkout svn+ssh://replica@sparky/home/replica/svnrepo
现在尝试修改etc中的文件,例如主机。
rsync了。您应该只获取已修改的文件,即/ etc / hosts被复制。
现在你可以提交:
svn commit -m "backup 1" /root/scripts/svnrepo
最后一件事。如果您希望subversion采用文件,则必须添加该文件。因此,例如,如果您在/ etc中创建一个新文件,默认情况下不会保存它。
要做什么?
svn status /root/scripts/svnrepo | grep -e '^!' | awk '{ print $2 }' | xargs -r svn delete
svn status /root/scripts/svnrepo | grep -e '^?' | awk '{ print $2 }' | xargs -r svn add
然后,你必须制作自己的剧本。
希望这有帮助。
(gtg,我稍后会编辑设置标题,如果没有人则会编辑)
答案 4 :(得分:2)
我不仅仅在修订控制系统中安装配置文件,我建议使用配置管理系统(如Chef或Puppet)来管理配置文件的内容,权限和其他详细信息,例如在配置文件更改时重新启动应用程序,并在git / subversion / yourfavoriteVCS中管理这些文件。
答案 5 :(得分:1)
我管理的每台服务器上的/ etc中的所有内容(300 +并且正在计数)都在Mercurial之下。为什么呢?
它不仅仅是源代码:)另一个更基本的选择是使用某种版本控制文件系统来拍摄快照(CoW),DVCS更容易。
答案 6 :(得分:0)
(@ Aif,感谢温柔的提醒,我的礼貌有点缺失)
我和/ etc一起作为git存储库使用了,但是我对这个(我,而不是git)仍感到有点不安,我正在手动做gitwork。
作为一个副作用,我开始自己开展一个小项目,并排评估颠覆,git,bazaar,mercurial,monotone,darcs和fossil,尽管在更通用的版本管理环境中(合并和这样)。
谢谢大家的帮助。我在选择接受哪个答案时遇到了一些困难,所以如果不是你的答案,请相信我,我也赞赏你。
@ Luis Melgratti
路易斯,感谢几位出色的参考资料。我已经接受了你最有用的答案。@的康拉德强>
康拉德,我很欣赏你的建议。我当然会调查 pfsense ,虽然我的目标之一是弄脏我的手,以及建立防火墙,所以“制造而不是获取”非常重要。
至于Mercurial,我没有将它包含在我的列表中,因为我已经尝试过(之前),我觉得我更喜欢“集市”,而git似乎乍一看有很大的力量(诚然,我可能不需要)。我目前的“主要”VCS是Subversion,虽然我不确定这是一个很好的答案。因此列出了三个。
(我现在看了一下pfsense并在我的网络上解决了它。非常好,但我不确定我的手会不会弄脏......)
@的 AIF 强>
谢谢,Aif。我肯定会尝试一下,虽然我怀疑我最终会得到git。
@的 tinkertim 强>
感谢您对Mercurial的看法,我现在打算再次访问,但我对Bazaar很满意。
@ 每个Wiklander
感谢您提出一个非常有趣的建议!当我能从当前的工作堆中退出时,我肯定会去看看etckeeper。