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

15

Eu tenho algumas máquinas Linux diferentes e muitos arquivos de configuração (e pastas) em cada uma.

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 minhas máquinas (não há acesso à Internet) ?

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

Meu teclado de mesa possui uma variedade de teclas de atalho, onde meu laptop não possui quase nenhuma. Eu uso XF86Mailpara abrir o thunderbird na minha área de trabalho, mas Meta+ Mno meu laptop.

Meu Desktop Doméstico e o Desktop de Trabalho são mais orientados para "múltiplos usuários", onde meu laptop é apenas para mim. Portanto, no meu laptop, costumo manter o arquivo 'rc.xml' do openbox em, /etc/xdg/openbox/rc.xmlmas nas áreas de trabalho em~/.config/openbox/rc.xml

Stefan
fonte

Respostas:

10

Mantenha os arquivos sob controle de versão. Isso tem vários benefícios, incluindo facilitar a manutenção de arquivos sincronizados (confirmação em uma máquina, atualização nas outras) e manter um histórico de alterações (para que você possa descobrir facilmente 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 eu faço isso desde muito tempo antes do controle de versão distribuído amplamente disponível. Qualquer pessoa que comece agora deve usar uma ferramenta de controle de versão distribuída adequada , como bazar, darcs, git, mercurial, ...

Gerenciar arquivos que precisam diferir entre 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/), sempre referido por um link simbólico ( ~/.here-> local/NAMEem 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 indireta desses arquivos por meio de uma interface de configuração da GUI. Evite configurar as coisas /etc, é mais difícil sincronizar entre máquinas.

Gilles 'SO- parar de ser mau'
fonte
Eu uso gitpara esse fim. meu repo para ~/.etceu também tenho um ~/.usre ~/.vareu desejo que estes diretórios eram padrão tão KDE iria parar de jogar todos os arquivos tmp / var / config / etc sob .kde. tão difícil saber onde o que eu quero está no meu diretório pessoal.
Xenoterracide
5

Concordo com a resposta do controle de versão , mas outro método que 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 nos outros computadores em alguns segundos, sem precisar se comprometer com o anterior e atualizar com o último.

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

Michael Mrozek
fonte
O principal benefício que vejo aqui é que é muito mais fácil configurar.
Ashesh Kumar Singh 02/09/2015
3

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

rkthkr
fonte
Há também o chef , mas estas ferramentas são realmente para o gerenciamento de um grande número de máquinas, provavelmente um exagero para 2 ou 3 sistemas
xenoterracide
1

Hoje, pode-se obter o melhor das primeiras respostas (dvcs) e segunda (dropbox) com sparkleshare , que fornece uma experiência de usuário semelhante a dropbox com armazenamento baseado em git nos bastidores.

emjayess
fonte