Você poderia usar etckeeper para lidar com isso, o que permitiria que você usasse git, mercurial, darcs ou bzr para o repositório.
Qual é o VCS mais fácil de usar para rastrear / etc? Quais são os desafios no armazenamento do diretório etc no controle de versão, melhores práticas? Devo usar um VCS centralizado ou distribuído?
Você poderia usar etckeeper para lidar com isso, o que permitiria que você usasse git, mercurial, darcs ou bzr para o repositório.
Use o etckeeper para fazer isso por você. Há muitas razões para isso:
Eu acho que o git é melhor nesse trabalho (embora o Mercurial provavelmente funcionasse bem). Um simples 'git init' em / etc, e você está no seu caminho. Depois disso, basta adicionar os arquivos de que você gosta e, a qualquer momento, eles podem ser verificados. Você pode até mesmo configurar o cron para fazer automaticamente o checkin toda vez que houver uma mudança (embora você não receba log arquivos). Você também pode enviar o repo se quiser definir uma segunda máquina com as mesmas configurações da primeira ou apenas como backup.
Quando iniciei o sysadmining, rcs foi o método de escolha para / etc. Então veio o CVS, depois o SVN. Eu suspeito que quando algo novo aparecer, vou mudar para isso. :) Mas a cada novo paradigma em VCS, minha vida ficou mais fácil.
Concordo com o jedberg, mas faça o inverso. Use um repositório git mas crie um .gitignore ignorando todos os arquivos, em seguida, adicione um unignore para os arquivos que você gosta. Pelo menos dessa forma, seu status de git não é continuamente sujo.
ie: .gitignore * ! hosts ! resolv.conf
etc ...
John
Sem nenhuma intenção religiosa: recomendo usar um VCS distribuído, preferencialmente Bazaar. Isso é porque:
apt-get install bzr
) cd /etc bzr init . bzr add . bzr commit . -m "Initial configuration"
Git e Mercurial são os outros dois competidores (como foi apontado em outras respostas), mas eles não têm a capacidade de empurrar para um servidor remoto sem configuração (pelo menos ainda).
Eu não gerenciaria todo o / etc em um sistema de controle de versão. A razão é que a maior parte do conteúdo de / etc provavelmente não irá mudar muito ao longo do tempo. As ferramentas de gerenciamento de pacotes gerenciarão muitos arquivos em / etc para você, e a atualização de pacotes pode causar conflitos interessantes com um VCS.
Em vez disso, eu usaria uma configuração management sistema que gerencia vários componentes e pacotes do (s) meu (s) servidor (es), usando modelos e arquivos estáticos (onde aplicável) para configurar os serviços e configurações que armazenam arquivos em / etc (e em outro lugar). Eu armazenaria tudo isso em um sistema de controle de versão, e eu pessoalmente prefiro o Git, porque como administrador do sistema, fluxos de trabalho 'típicos' do Git fazem mais sentido para mim do que o Subversion (ou CVS). A descentralização no Git faz com que seja uma grande vitória para a administração do sistema para mim.
como uma adição a todos os conselhos aqui antes (que todos descrevem praticamente exatamente o que eu faço), eu acabei de descobrir tig para mim. Gerenciando etc com git usando cmdline estava me deixando louco e as mudanças foram rapidamente se acumulando, sem me mostrar qualquer desejo de cuidar deles. apenas aleatoriamente olhando em volta para GUIs git eu notei que existe uma baseada em ncurses chamada tig.
agora estou realmente ansioso para gerenciar meu / etc!
Tags vcs