Unison vs Rsync + Unidade de Remontagem Montada

1

Então, minha situação é que eu quero meus arquivos de desenvolvimento - Ruby & amp; PHP - disponível para todas as minhas máquinas quando estou em casa e fora. Quando eu fiz a pergunta antes ( Monte meu servidor da Web como uma unidade em Win7 / 8 ) Foi-me dito para usar o software de controle de versão, mas eu não quero estar baixando uma cópia local e trabalhando nele para que eu tenha que carregar a nova versão e baixar novamente a nova versão para todas as máquinas. Não há nenhum grupo de desenvolvedores aqui só eu e a maioria dos meus problemas de desenvolvimento / depuração vêm da escrita de código e teste de uma máquina, mas depois esqueço de atualizar minhas outras máquinas. Assim, quero uma cópia sincronizada dos arquivos em todas as minhas máquinas.

Eu estava pensando em usar o ownCloud em um dos meus servidores da Web, por qualquer outro motivo, e dá às minhas máquinas Win acesso fácil aos arquivos. As máquinas My Win têm o cliente de atualização ownCloud que funciona como o Google Drive ou o DropBox, com a sincronização acontecendo no que parece ser um timer. O cliente de atualização do ownCloud nas minhas máquinas Ubuntu não queria instalar e eu estou usando uma mistura de versões de desktop e servidor. Então, minhas máquinas Ubuntu simplesmente montam o diretório ownCloud via davfs2 e (uma vez que eu tenha resolvido isso) elas usarão o rsync em um cron para criar uma cópia local - assim minhas máquinas podem continuar a funcionar se o servidor com os arquivos ownCloud para baixo.

Mas então eu passei por uma menção ao Unison que eu nunca tinha ouvido falar antes. Parece que o Unison é um programa destinado a fazer a mesma coisa que o rsync diferencial. Eu entendi mal?

Parece que o Unison foi criado para sincronizar arquivos entre servidores, para que eu não precise se preocupar em manter a montagem do servidor remoto em execução ou reestabelecer a montagem antes de executar um rsync diferencial. No entanto, todos os tutoriais que estou encontrando no Unison sugerem que você precisa abrir o SSH para logins raiz. Talvez eu esteja preocupado com nada, mas isso parece ser uma má ideia.

Perguntas:

  1. Estou certo de que permitir um login root no SSH é uma má ideia por motivos de segurança?
  2. Existem vantagens para o Unison que eu ignorei?
  3. Existem problemas com o rsync que eu ignorei? Como limpar minha cópia local se a montagem do servidor remoto ficar inativa e agora o diretório parecer vazio.
  4. Existem vantagens de desempenho para o Unison em relação ao rsync ou vice-versa?
  5. Finalmente, existe uma maneira de monitorar montagens e restabelecer automaticamente se elas morrerem? Eu poderia usar escrever algo para verificar o conteúdo específico na montagem, mas isso parece propenso a problemas.

Obrigado

    
por Gabe Spradlin 16.01.2014 / 19:09

1 resposta

1

Escolha Unison se o que você quer é sincronização bidirecional, é mais adequado para esses cenários; embora alcançável em rsync também.

  1. É uma má ideia, mas um login raiz não é necessário. Você precisa de um login na outra máquina que tenha permissões para gravar nas pastas que deseja sincronizar. Como esse é seu material pessoal, você pode usar seu login normal ou criar um login especial em todas as máquinas especificamente para o Unison e conceder as permissões de login nessas pastas.

  2. A ligação bidirecional e facilidade de configuração principalmente, mas se resume a preferência. Você pode tentar ambos para ver qual deles você gosta mais.

  3. Você pode executar verificações antes de realmente invocar a sincronização do rsync ou do Unison. Por exemplo, você pode montar o diretório da máquina remota via sshfs. Se falhar, não inicie a sincronização. Isso pode fazer parte do seu script de sincronização.

  4. O principal gargalo será a velocidade da rede, e o Unison pode ser mais lento se você tiver grandes quantidades de dados para sincronizar (~ aproximadamente 100GB). Caso contrário, as diferenças são insignificantes, YMMV. A configuração de todos é diferente. Você também deve ler esta postagem como parte de suas considerações.

  5. Se você estiver usando o sshfs, tente a opção de reconexão .

Tendo dito tudo isso, se isso é apenas para o código, ainda é uma boa idéia considerar um sistema de controle de versão, como outros disseram. Você pode hospedar um servidor git em uma máquina em casa e sincronizar o código leva apenas um minuto ou menos com um comando, sem a sobrecarga de manutenção de montagens, logins, conexões, etc.

    
por Mendhak 16.01.2014 / 21:49