Aqui está uma lista de coisas que poderiam potencialmente resolver este problema, cada um equilibra os trade-offs que você tem que fazer de forma diferente, então você terá que fazer suas próprias escolhas e experimentar as coisas por si mesmo:
Uníssono - como mencionado por outros, isso é executado manualmente, mas é muito rápido, confiável e eficaz. Requer que ambas as máquinas estejam sincronizadas para estarem ligadas ao mesmo tempo. Ele tem uma interface de usuário agradável para permitir que você lide com os conflitos quase inevitáveis e rastreia e propaga as exclusões corretamente. O aplicativo / pacote gráfico é chamado unison-gtk.
OwnCloud - Armazenamento em nuvem executado em seu próprio servidor. Você precisará de uma máquina para sair. Requer uma quantidade razoável de configuração. Executa um servidor web completo do Apache 2 e um banco de dados SqlLite ou MySQL no servidor. Funciona de maneira semelhante ao Dropbox com um cliente de desktop, mas o servidor está sob seu controle. editar: OwnCloud recentemente passou por algumas mudanças na forma como o projeto é executado, e agora tem uma nova fonte totalmente aberta (ou seja, nenhuma edição 'enterprise' de código fechado) sob o disfarce de NextCloud , (Veja isso entrevista no youtube com o desenvolvedor OwnCloud original para mais detalhes).
SparkleShare - usa o git para manter os arquivos em sincronia. De acordo com a página inicial: bom para muitos arquivos menores, não é bom para muitos arquivos grandes, como música ou coleção de fotos.
Seafile - Fornece um componente de servidor que você pode instalar em uma máquina local. Seafile usa um modelo de dados semelhante ao git para rastrear alterações. Fornece clientes de sincronização para desktops, tablets e smartphones. Uma postagem no blog descrevendo a configuração pode ser encontrada em http://openswitch.org/blog/2013/07/18/installing-and-configuring-seafile-on-ubuntu-12-dot-04/
Osync - "... ferramenta de sincronização de arquivo bidirecional escrita em bash e baseada em rsync. Trabalha em diretórios locais e / ou remotos através de túneis ssh. É principalmente direcionado para ser lançado como tarefa cron" (texto do site)
PowerFolder - projeto baseado em java GPL v2. O site principal envia ofertas comerciais, portanto não está claro como usar o arquivo .jar fornecido.
Rsync - Rápido e eficaz e existe há décadas, no entanto, ele não mantém um histórico, então você tem que escolher uma direção para decidir se um arquivo é novo ou excluído. Ferramentas gráficas estão disponíveis como gwRsync .
Lsyncd - monitora pastas / arquivos para acionar a replicação rsync
dvcs-autosync - escrito em python, usa o git para armazenar e compartilhar mudanças entre máquinas e o XMPP para comunicar mudanças.
git-annex - ferramenta de linha de comando para desviar arquivos, baseada no git. Há um passo a passo ilustrativo aqui: http://git-annex.branchable.com/walkthrough/
Tonido - freeware. Fornece um aplicativo de desktop que compartilhará arquivos com outros dispositivos. Também forneça ofertas de nuvem comercial e o computador com plugue TonidoPlug.
Sincronização BitTorrent (freeware) - sincronização de arquivos peer-to-peer baseada em BitTorrent. Eu não sei muito sobre isso, pois não vou usá-lo por não ser de código aberto e não confiar nele para manter meus dados em minha LAN, sinta-se à vontade para editar esta resposta com melhores informações / experiências reais.
SyncThing - Desenvolvido como uma alternativa de código aberto ao BitTorrent Sync. Atualmente, ele não possui alguns dos recursos avançados do BitTorrent Sync, como pares não confiáveis. Está em desenvolvimento ativo.
Serviços hospedados comercialmente, como dropbox, ubuntu one, google drive, apple iCloud, são todos rápidos, baratos e convenientes, no entanto, todos eles exigem que você confie em uma empresa com todos os seus dados e precisa de uma conexão de internet razoavelmente rápida.
Git / subversão - Use um sistema de controle de origem diretamente. Completamente manual e pode ser um pouco complexo, mas abordagem popular com alguns usuários familiarizados com esses sistemas de usá-los como ferramentas de programação.
CloudFS - sincronizar todo um sistema de arquivos, baseado em tecnologia de cluster
Montagem NFS - basicamente sua casa vive em uma máquina e você a acessa pela rede, não é bom para laptops que você leva com você. Mais informações: http://www.linuxjournal.com/article/4880
Servidor central - algumas soluções exigem que uma máquina esteja ligada o tempo todo (ou pelo menos quando você precisa sincronizar) para que outras máquinas sincronizem. Pode ser uma das máquinas existentes ou uma máquina separada, como um NAS. Cuidado com as contas de energia aumentadas.
Automático / Manual / Agendado - A melhor maneira de evitar ter que resolver conflitos onde algo é alterado em mais de uma máquina é ter um programa em todas as máquinas que assistem a alterações e sincronizações imediatamente, dessa forma você reduz a oportunidade de acabar com várias versões. Com processos manuais, você sempre deve se lembrar de executar a sincronização.
Acesso remoto - você quer sincronizar longe de sua LAN (aka home), pense nas implicações de segurança disso.
Segurança - seus dados deixam sua rede criptografada ou não, quão segura é a transferência entre máquinas? E se alguém capturar seus dados em movimento e, posteriormente, constatar que a criptografia tem falhas? Quem controla o servidor que guarda seus dados, são os dados criptografados, você pode confiar em terceiros? Você tem que fazer furos no seu roteador para obter acesso remoto. Por quanto tempo os arquivos 'excluídos' e metadados relacionados permanecem nos dispositivos sincronizados e no servidor central. Você está sincronizando entre armazenamento criptografado e não criptografado?
Movendo pastas grandes - as soluções que experimentei têm um problema: quando você move / renomeia um arquivo ou uma pasta, a sincronização não entende isso e faz o upload novamente como novo e, em seguida, exclui a cópia antiga. Por favor, ajudem marcando todas as soluções acima que são capazes de lidar com isso (eu suspeito que as soluções baseadas em gits como git não sofrem com isso devido ao endereçamento baseado em conteúdo que ele usa, mas não sei ao certo como não os usei).
Capacidade do disco
Backups - a sincronização não é backup. Exclua um arquivo importante por engano e muitos dos itens acima excluirão todas as outras cópias. Eu recomendo ler O pedaço de Mat Honan em ser hackeado para uma boa conta do que pode acontecer se você colocar todos os seus ovos digitais em uma cesta digital, por assim dizer.
Recomendo não sincronizar toda a pasta base, mas escolher pastas específicas para sincronizar, como Documents/
, Pictures/
Isso evitará a dor de ser forçado a lidar com os problemas de velocidade / desempenho / espaço em disco da sincronização automática de tudo. Também evita ter que manter listas de exclusão.
Enquanto continuo a tentar encontrar algo que funcione para mim pessoalmente, vou tentar manter esta resposta atualizada com informações úteis. Agreguei as informações de todas as outras respostas em uma resposta completa.