Manter arquivos de configuração sincronizados em vários PCs

14

Eu tenho algumas máquinas linux diferentes e um monte de arquivos config (e pastas) em cada.

Por exemplo:

~/.ssh/config
~/.config/openbox/rc.xml
~/.config/openbox/autostart.sh
~/.scripts/ ( folder )
~/.bashrc
...etc

Existe um método simples e elegante para manter esses arquivos sincronizados entre as minhas máquinas (não se tem acesso à internet) ?

Além disso, alguns arquivos precisarão de um processo de sincronização mais avançado, já que terão que diferir um pouco ... por exemplo:

Meu teclado de desktop tem uma gama de teclas de atalho, onde meu laptop tem quase nenhum. Eu uso XF86Mail para abrir o thunderbird na minha área de trabalho, mas Meta + M no meu laptop.

Meu Home Desktop e Work Desktop são mais orientados para "vários usuários", onde meu Laptop é apenas para mim. Então, no meu laptop, tenho a tendência de manter o arquivo 'rc.xml' para openbox em /etc/xdg/openbox/rc.xml , mas nos desktops em ~/.config/openbox/rc.xml

    
por Stefan 05.09.2010 / 14:12

4 respostas

10

Mantenha os arquivos sob controle de versão. Isso tem vários benefícios, incluindo facilitar a manutenção de arquivos sincronizados (confirmar em uma máquina, atualizar os outros) e manter um histórico de alterações (para que você possa descobrir com facilidade o que quebrou um programa que funcionou no mês passado).

Eu uso o CVS e sincronizo os repositórios com o Unison ou o sneakernet, mas isso é porque venho fazendo isso desde um tempo antes do controle de versão distribuído amplamente disponível. Qualquer um que comece agora deve usar uma ferramenta controle de versão distribuída adequada, como bazar, darcs, git, mercurial, ...

Gerenciar arquivos que precisam diferir entre as máquinas é sempre um pouco trabalhoso. Se o idioma de configuração permitir condicionais, use-os. Caso contrário, se houver um mecanismo de inclusão, use-o para dividir o arquivo de configuração em uma parte dependente da máquina e uma parte compartilhada. Mantenha todas as partes dependentes da máquina em um diretório separado (algo como ~/.local/NAME/ ), que é sempre mencionado por meio de um link simbólico ( ~/.here - > local/NAME em cada máquina). Eu tenho alguns arquivos que são gerados por um script na parte compartilhada a partir de parâmetros mantidos na parte específica da máquina; isso impede a modificação desses arquivos indiretamente por meio de uma interface de configuração da GUI. Evite configurar coisas em /etc , é mais difícil sincronizar entre máquinas.

    
por 05.09.2010 / 15:17
5

Concordo com a resposta do controle de versão , mas outro método que eu tenho experimentado recentemente é o Dropbox . É essencialmente um sistema de controle de versão que sincroniza automaticamente entre todas as suas máquinas, portanto, se você editar um arquivo em um computador, verá as alterações refletidas em seus outros computadores em poucos segundos, sem precisar se comprometer com o primeiro e atualizar no computador. último.

Seu plano básico gratuito é de 2GB, então eu uso ele para a versão dos meus arquivos de configuração e logs de bate-papo

    
por 05.09.2010 / 19:01
3

Puppet e Cfengine são dois boas ferramentas para sincronizar arquivos (e muito mais ..)

    
por 05.09.2010 / 14:43
1

Hoje, pode-se obter o melhor das primeiras (dvcs) e segundas respostas (dropbox) com o sparkleshare , que oferece um tipo de dropbox experiência do usuário com armazenamento baseado em git nos bastidores.

    
por 26.07.2012 / 17:26