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/