2009-08-28 18:10:40 +0000 2009-08-28 18:10:40 +0000
121
121

Como sincronizar a pasta de casa entre vários computadores?

Tenho três computadores em casa, e gostaria de ter a árvore de pastas /home/ sincronizada entre os três.
Quaisquer ficheiros/pastas (excepto os ocultos) que sejam modificados/adicionados/removidos num dos três computadores são actualizados nos outros dois.

É rsync* suficiente para fazer isto? e como?

Respostas (14)

97
97
97
2014-01-18 17:52:37 +0000

Aqui está uma lista de coisas que podem potencialmente resolver este problema, cada uma equilibra as contrapartidas que tem de fazer de forma diferente, pelo que terá de fazer as suas próprias escolhas e experimentar as coisas por si próprio:

  • Unison - como mencionado por outros, isto é executado manualmente, mas é muito rápido, fiável e eficaz. Requer que ambas as máquinas estejam sincronizadas para serem ligadas ao mesmo tempo. Tem uma boa interface de utilizador para permitir lidar com os conflitos quase inevitáveis, e rastreia e propaga as eliminações correctamente. A aplicação gráfica/pacote é chamada unison-gtk.

  • OwnCloud - Armazenamento em nuvem executado no seu próprio servidor. Vai precisar de uma máquina para deixar ligada. Requer uma quantidade razoável de configuração. Executa um servidor web Apache 2 completo e uma base de dados SqlLite ou MySQL no servidor. Funciona semelhante ao Dropbox com um cliente desktop, mas o servidor está sob o seu controlo. edit : OwnCloud passou recentemente por algumas mudanças na forma como o projecto é executado, e agora tem um novo código totalmente aberto (ou seja, sem edição de código fechado ‘enterprise’) sob o disfarce de NextCloud , (ver isto entrevista no youtube com o programador original OwnCloud para mais detalhes).

& - SparkleShare - utiliza o git para manter os ficheiros em sincronia. De acordo com a página inicial: bom para muitos ficheiros mais pequenos, não bom para muitos ficheiros grandes tais como música ou colecção de fotografias.

  • Seafile - Fornece um componente de servidor que pode ser instalado numa máquina local. Seafile utiliza um modelo de dados semelhante ao git para rastrear alterações. Fornece clientes de sincronização para desktops, tablets e smartphones. Um post de blog descrevendo a configuração pode ser encontrado em http://openswitch.org/blog/2013/07/18/installing-and-configuring-seafile-on-ubuntu-12-dot-04/

  • Osync - “… ferramenta de sincronização de ficheiros bidireccionais escrita em bash e baseada em rsync. Funciona em directórios locais e/ou remotos através de túneis ssh. É principalmente direccionado para ser lançado como tarefa cron” (texto do website)

  • PowerFolder - - projecto GPL v2 baseado em java. O website principal pressiona as ofertas comerciais para que não fique claro como utilizar o ficheiro .jar fornecido.

  • Rsync - rápido e eficaz e já existe há décadas, no entanto não mantém uma história, pelo que tem de escolher uma direcção para decidir se um ficheiro é novo ou eliminado. Estão disponíveis ferramentas gráficas tais como gwRsync .

  • Lsyncd - monitoriza pastas/arquivos para desencadear a replicação rsync

  • dvcs-autosync - escrito em python, utiliza git para armazenar e partilhar alterações entre máquinas, e XMPP para comunicar as alterações.

& - git-annex - ferramenta de linha de comando para manobrar ficheiros, com base no git. Há aqui uma passagem ilustrativa: http://git-annex.branchable.com/walkthrough/

  • Tonido - freeware. Fornece uma aplicação desktop que partilhará ficheiros para outros dispositivos. Fornece também ofertas comerciais na nuvem, e o computador com ficha TonidoPlug.

  • BitTorrent Sync - (freeware) - sincronização de ficheiros ponto-a-ponto com base em BitTorrent. Não sei muito sobre isto porque não o vou utilizar por não ser de código aberto e por não confiar nele para manter os meus dados dentro da minha LAN, sinta-se à vontade para editar esta resposta com melhor informação / experiências reais.

  • SyncThing - Desenvolvido como uma alternativa de código aberto ao BitTorrent Sync. Faltam-lhe actualmente algumas das características avançadas do BitTorrent Sync, tais como os pares não confiáveis. Está em desenvolvimento activo.

  • Serviços alojados comerciais como dropbox, ubuntu one, google drive, apple iCloud são todos rápidos, baratos e convenientes, no entanto todos eles exigem que se confie a uma empresa todos os seus dados, e precisam de uma ligação à Internet razoavelmente rápida.

  • Git / subversão - Use um sistema de controlo de fontes directamente. Completamente manual e pode ser uma abordagem um pouco complexa mas popular com alguns utilizadores familiarizados com estes sistemas de os utilizar como ferramentas de programação.

  • CloudFS - sincronizar todo um sistema de ficheiros, tecnologia de cluster baseada em

  • montagem NFS - basicamente a sua casa vive numa máquina e acede através da rede, não é bom para computadores portáteis que leva consigo. Mais informações: http://www.linuxjournal.com/article/4880


Factores a considerar na sua decisão:

  • Servidor central - algumas soluções requerem que uma máquina esteja sempre ligada (ou pelo menos quando precisa de sincronizar) para que outras máquinas possam sincronizar-se com ela. Esta pode ser uma das suas máquinas existentes, ou uma máquina separada, tal como um NAS. Tenha cuidado com o aumento das contas de energia.

  • Automático / Manual / Programado - A melhor maneira de evitar ter de resolver conflitos onde algo é alterado em mais do que uma máquina é ter um programa em cada máquina que assiste a mudanças e sincroniza imediatamente, desta forma reduz a oportunidade de acabar com múltiplas versões. Com processos manuais, tem sempre de se lembrar de executar a sincronização.

  • Acesso remoto - quer sincronizar longe da sua LAN (aka home), pense sobre as implicações de segurança disto.

  • Segurança - os seus dados deixam a sua rede encriptada ou não, quão segura é a transferência entre máquinas. E se alguém capturar os seus dados em movimento e mais tarde se descobrir que a encriptação tem falhas? Quem controla o servidor que guarda os seus dados, os dados são encriptados, pode confiar em terceiros? Tem de fazer buracos no seu router para obter acesso remoto. Durante quanto tempo é que os ficheiros “apagados” e meta-dados relacionados permanecem nos dispositivos sincronizados e no servidor central. Está a sincronizar entre o armazenamento encriptado e não encriptado?

  • Movendo grandes pastas - as soluções que tentei todas têm um problema que quando se move / renomeia um ficheiro ou pasta a sincronização não entende isto e carrega tudo novamente como novo e depois apaga a cópia antiga. Por favor, ajudem marcando quaisquer soluções acima que sejam capazes de lidar com isto (suspeito que as soluções baseadas no git fazem como o git não sofre com isto devido ao tratamento baseado no conteúdo que usa mas não sei ao certo como não as usei).

  • Capacidade do disco

  • Cópias de segurança - a sincronização não é uma cópia de segurança. Elimine um ficheiro importante por engano e muitas das anteriores irão alegremente apagar todas as suas outras cópias. Recomendo que leiam Mat Honan’s piece on being hacked para uma boa descrição do que pode acontecer se colocarem todos os vossos ovos digitais num único cesto digital, por assim dizer.


Recomendo não sincronizar toda a pasta de casa, mas sim escolher pastas específicas para sincronizar, tais como Documents/, Pictures/ etc. Isto evitará a dor de ser forçado a lidar com os problemas de velocidade / desempenho / espaço em disco de sincronizar tudo automaticamente. Evita também a necessidade de manter listas de exclusão.

Enquanto continuo a tentar encontrar algo que funcione para mim pessoalmente, vou tentar manter esta resposta actualizada com informações úteis. Agreguei a informação de todas as outras respostas numa única resposta completa.

Referências:

  • LinuxFormat - Fevereiro 2014 LXF180 p31, “Hosted Storage Roundup”

hacking/tudo/

19
19
19
2009-08-29 22:07:36 +0000

Que tal colocar os seus ficheiros num sistema de controlo de versões como SubVersion ou git?

Eu não faço a versão completa da minha casa, mas apenas um punhado de subdirs com algumas coisas importantes. Mas estou a pensar em converter para git? uma vez que parece ser melhor para este tipo de trabalho. uma pesquisa rápida vai enviar-lhe na direcção certa ).

Boa sorte


Atualização : Um efeito secundário agradável com o git é que é fácil ter ficheiros específicos para computador, uma vez que só precisa de ter uma filial para esse computador (e no git obtém-se isso por defeito). Assim, não precisa de ter exactamente os mesmos ficheiros em todos os computadores, eles só precisam de ser semelhantes, e ter um ramo “principal” comum com as coisas que deseja em todos os computadores diferentes.

6
6
6
2009-08-29 09:43:00 +0000

O seu principal problema ao tentar fazer isto é decidir como fundir mudanças, propagar apagamentos, e resolver conflitos. Isto é difícil de fazer de uma forma completamente automatizada, especialmente se tiver uma configuração de 3 computadores utilizados por várias pessoas.

Se separar os utilizadores, as coisas ficam muito mais simples. Porque um utilizador não pode estar em dois sítios ao mesmo tempo (e portanto gerar conflitos) poderia então configurar um trabalho rsync para correr no login para “obter alterações” e logout para “empurrar alterações” … para um dos seus computadores que seria o mestre … então a este nível de granularidade estaria a sincronizar /home/myuser cada vez em vez de toda a /home/. Um refinamento adicional (no caso de pessoas que não saiam do computador) seria executado o push script após um curto período de inactividade.

Existem muitas outras soluções potenciais, mas nenhuma que, tanto quanto sei, resolva magicamente este problema. O primeiro passo é provavelmente pensar em como utilizar as máquinas e elaborar uma política de sincronização que se adapte ao comportamento do utilizador.

5
5
5
2010-06-11 20:05:12 +0000

Penso que se pode conseguir o que se quer melhor montando uma pasta doméstica comum no NFS. Veja este artigo http://www.linuxjournal.com/article/4880

4
4
4
2010-06-11 21:20:04 +0000

Veja lsyncd

Lsyncd observa uma interface de monitor de eventos de directório local (inotify ou fsevents). Agrega e combina eventos durante alguns segundos e depois despoleta um (ou mais) processo(s) para sincronizar as alterações. Por defeito, isto é rsync. O Lsyncd é assim uma solução de espelho ao vivo leve que é comparativamente fácil de instalar e não requer novos sistemas de ficheiros ou dispositivos de bloqueio e não prejudica o desempenho do sistema de ficheiros local.

Rsync+ssh é uma configuração de acção avançada que utiliza um SSH para agir ficheiro e directório move-se directamente sobre o alvo em vez de retransmitir o destino do movimento sobre o fio.

& > A personalização de grão fino pode ser conseguida através do ficheiro de configuração. As configurações de acção personalizadas podem até ser escritas do zero em camadas em cascata, desde scripts de shell a código escrito na língua Lua.layers desde scripts de shell a código escrito na língua Lua.

4
4
4
2009-08-28 18:34:44 +0000

Isto não fornecerá inteiramente uma solução, mas dar-lhe-á um começo:

Configurar um cron job de vez em quando para rsync dos ficheiros. Utilizo um comando como o seguinte:

rsync -alhz --stats --progress --exclude-from '/etc/rsync_backup_excludes.conf' / -e ssh user@10.10.0.1:/path/to/home/

Isto utilizará o rsync para copiar apenas as alterações necessárias, não recopiar tudo cada vez que o comando for executado.

–stats e –progress são opcionais e devem provavelmente ser excluídos dos seus scripts

o conteúdo do meu ficheiro rsync_backup_excludes.conf é:

dev/*
proc/*
lost+found/*
mnt/*
sys/*
2
2
2
2011-08-24 23:57:12 +0000

Montar /home de um computador para os outros dois. A montagem automática funciona muito bem para isto.

2
2
2
2009-08-28 18:41:17 +0000

Dê uma olhada na dropbox http://www.getdropbox.com/ Plataforma Win / Linux / Mac

1
1
1
2009-08-29 11:11:32 +0000

(https://ubuntuone.com/) pode ser o que se procura. Infelizmente ainda está em fase beta, e não tenho experiência com ele, por isso não tenho a certeza se funcionaria para si.

1
1
1
2009-08-29 21:38:15 +0000

Se também quiser sincronizar configurações - as ferramentas mencionadas acima são totalmente indefesas: as configurações são muitas vezes alteradas, e muitos ficheiros de registo irão criar conflitos para que não possam ser fundidos.
O meu engano é simples, e estúpido :) Tenho uma estação de trabalho Master, e todos os ficheiros de “~” são apenas copiados para a segunda “Slave”. No momento em que percebo que preciso de modificar algo - faço-o em Master, e Slave apanha estas mudanças em sincronia.

Também, alguns scripts de bash devem correr de forma diferente nestas máquinas, por isso editei o meu /etc/bash.bashrc:

export OOHOST=Master

Agora, os scripts sabem qual o anfitrião que servem ;)

1
1
1
2012-03-22 11:47:19 +0000

Experimente dvcs-autosync .

Isto é baseado no git, utiliza o XMPP para notificar os clientes afectados de alterações de ficheiros e reage em eventos de alteração de ficheiros através de alterações de inode. Assim, é sempre informado logo após a alteração do ficheiro, em caso de conflitos, baseia-se nos métodos comprovados de git.

Já o utilizo há algum tempo como substituto do Dropbox através de chaves públicas SSH e ele faz realmente o trabalho.

0
0
0
2011-03-02 14:02:40 +0000

As soluções que gostaria de considerar:

  • Dropbox.
    Principais inconvenientes: não é gratuito para qualquer quantidade razoável de dados. Caso contrário, funciona sem falhas IMHO

  • Um servidor NAS. Coloque os seus ficheiros num servidor NAS, eles tornaram-se razoavelmente acessíveis ultimamente (a partir de 150$ ou mais) e um bom não consome muita energia. Nunca houve problemas de sincronização.

  • Principal inconveniente: mais lento do que uma cópia local

0
0
0
2011-03-02 13:47:07 +0000

Utilizo SyncTwoFolders para Mac e Syncback para PC - o primeiro para os meus três macs em casa (inclusive portátil), e o segundo para o meu PC no trabalho. Ambos os programas têm várias opções de back-up e de sincronização, o que torna isto uma brisa uma vez que os pré-conjuntos tenham sido configurados. É fácil! Tenho a certeza que existem outras versões de software semelhantes disponíveis para Linux e Ubuntu.

0
0
0
2013-08-18 14:28:59 +0000

Poderia usar um script de sincronização como osync que pode propagar ficheiros apagados e actualizar apenas os modificados http://www.netpower.fr/osync osync é baseado em rsync mas pode lidar com muitos cenários de sincronização entre pastas locais ou remotas sobre ssh.