Como sincronizar minha pasta pessoal pela rede e pela Internet?

8

Eu uso meu laptop com o Ubuntu-desktop para fazer todo o meu trabalho, mas também tenho um desktop low-end no meu escritório, sentado lá. Decidi instalar o servidor Ubuntu nele e usá-lo para espelhar toda a minha pasta pessoal do laptop, para facilitar as coisas quando decidir formatar o disco rígido do meu laptop.

Sempre que estou no trabalho, as duas máquinas são conectadas a uma rede e se comunicam facilmente (e em alta velocidade) via ssh. Quando não estou no trabalho, a área de trabalho ainda está acessível via ssh. Idealmente, a sincronização ocorreria automaticamente em segundo plano, sempre que eu mudasse alguma coisa. Ele só precisa ser de uma maneira: as alterações que faço no laptop devem ser sincronizadas com o servidor, mas o inverso não é necessário.

Sei que há software para isso lá fora, minha pergunta é: Qual software posso usar para alcançar os objetivos acima e também aproveitar ao máximo as velocidades da rede local quando estou no trabalho? Como às vezes lidarei com arquivos grandes, o processo de sincronização precisa perceber que os dois computadores estão compartilhando uma rede local e depois tirar proveito disso (em vez de sempre sincronizar pela Internet).

Só para esclarecer, a sincronização pela rede é realmente mais importante para mim aqui do que a sincronização pela internet. Idealmente, o software verificaria se o primeiro está disponível e, se não, tentaria o último; mas se isso não for possível, o primeiro caso é minha prioridade.

Espero que isso não demore muito. Desde já, obrigado.

Malabarba
fonte

Respostas:

11

Se você só pode se conectar ao servidor do escritório via SSH, sua melhor opção é usar o rsync : ele pode usar o SSH como um protocolo de transporte e usar um algoritmo inteligente para acelerar a transferência de arquivos grandes, enviando apenas os blocos alterados.

Como você só precisa de sincronização unidirecional, basta configurar a autenticação SSH sem senha do laptop para o servidor do escritório e, em seguida, começar com um comando tão simples quanto:

rsync -e ssh -a $HOME/ myuser@officeserv:

adição --includee --excludeopções para refinar a lista de arquivos / diretório que você deseja sincronizar. Por exemplo, a transferência de configurações do programa ("arquivos de ponto") pode ser arriscada se os dois computadores não executarem o mesmo sistema operacional (mesma versão). Minha sugestão é começar excluindo todos os "arquivos de ponto" (portanto, usar --exclude="$HOME/.[a-z]*") e adicionar seletivamente os diretórios de configuração dos programas que podem ser compartilhados com segurança (isso deve ser visto em um programa por programa). Além disso, o cache do navegador da web e $HOME/.cachesempre pode ser excluído. Consulte a seção "REGRAS DE FILTRO" na rsyncpágina de manual para obter uma discussão detalhada da sintaxe das regras de inclusão / exclusão.

No entanto, rsyncnão possui um modo de "operações contínuas", portanto você precisará executá-lo periodicamente a partir do seu crontab .

Riccardo Murri
fonte
Isso parece bom. Vou testá-lo assim que instalar o servidor. Uma pergunta: o protocolo SSH usa automaticamente a conexão mais curta com o servidor? Quero dizer: ele se conectará pela rede local se o cliente e o servidor estiverem na rede do escritório ou sempre tentará conexões com a Internet?
Malabarba 15/10/10
A propósito, você está correto sobre o cache do navegador. Alguma outra sugestão de pastas que devo excluir? Meu objetivo é sincronizar todos os arquivos pessoais, perfis, configurações e arquivos de configuração.
Malabarba 15/10/10
11
@Bruce Connor: O SSH se conectará a um host remoto usando o algoritmo de roteamento IP usual. Texto de resposta atualizado com sugestão para uma lista de exclusão inicial.
Riccardo Murri
Obrigado. Para evitar conflitos, posso sincronizar a pasta pessoal do meu laptop com uma subpasta do servidor (e não a pasta pessoal real do servidor).
Malabarba 15/10/10
@riccardomurri com "autenticação SSH sem senha", você quer dizer com base em arquivo de chave? ou alguma outra coisa?
David.libremone
3

Eu sugeriria o uso do rdiff-backup sobre o rsync. É basicamente apenas rsync ++.

diferente do rsync, que apenas um espelho 1-1 que transfere diffs, o rsync tem um mecanismo de histórico. Portanto, se você errou e excluiu algo importante, pode voltar para uma semana atrás e recuperá-lo.

No "servidor" do Ubuntu, você só precisa ter o ssh em execução para o apt-get install rdiff-backup.

no cliente. Eu executaria isso manualmente .. ou através de um crontab.

#!/bin/bash

  #backup.sh

  rdiff-backup -v5 --exclude path-to-annoyingfile  /home/user/ hostname::/media/data/snapshots/laptop 
  ## this will cleanup any backups older then 2weeks.  Adjust this as needed.
  rdiff-backup --remove-older-than  2W --force  hostname::/media/data/snapshots/laptop


  #!/bin/bash
  ##Restore.
  rdiff-backup -v5 --restore-as-of now --force user@hostname::/media/data/snapshots/laptop  /home/user

Se você abrir a porta 22 para a Internet .. deverá conseguir executar o mesmo script de qualquer maneira .. apenas faça com que seu nome de host seja resolvido localmente com o seu IP local.

ie backupSrv.penguins.org resolveria para o IP externo de. 2.3.4.5 mas dentro da sua LAN: para 192.168.1.253

csgeek
fonte
Acho que seu script está faltando algumas quebras de linha.
Malabarba 15/10/10
2

Não tenho nenhuma solução completa e pré-empacotada para o seu problema. Você provavelmente precisa escrever um pequeno script para isso.

A sincronização em si poderia ser feita por rsync, como já explicado por Riccardo Murri. O Rsync transfere apenas as partes alteradas dos arquivos, portanto é perfeito para esta tarefa.

Você pode usar o NetworkManagerDispatcher para executar scripts na conexão / desconexão de uma interface de rede. Assim, você pode escrever um script que verifique se você está na rede correta e depois chama rsync. Dessa forma, seus dados serão sincronizados automaticamente quando você se conectar à rede da sua empresa.

Para sincronizar periodicamente seus dados, você pode usar o cron, como já mencionado.

Você também deve considerar a segurança ao usar o rsync via ssh. Para sincronizar sem a intervenção do usuário, você precisará de um arquivo de chave sem senha. Qualquer pessoa que tenha esse arquivo de chave pode obter acesso ao servidor ao qual ele pertence. Eu recomendo fortemente criptografar sua pasta pessoal para proteger os dados no notebook e no servidor.

Cientista maluco
fonte
1

DropBox | DropBox @ SuperUser http://www.dropbox.com/help/137

O DropBox deve ser bom no seu caso, funciona em Linux, mac, windows, fácil configuração e gerenciamento.

Baixar DropBox

/superuser/147315/dropbox-to-sync-nix-home-folders

http://wiki.dropbox.com/TipsAndTricks/SyncOtherFolders

Faça uma leitura - ele suporta a sincronização por links simbólicos e, se houver documentos, gráficos e planilhas que você precisa sincronizar - você ainda poderá manter uma cópia deles na caixa de depósito ou salvá-los permanentemente no local da caixa de depósito para evitar problemas.

rihatum
fonte
Não acredito que você possa definir seu Dropbox como sua pasta pessoal (pelo menos ainda não).
Mateus
superuser.com/questions/147315/dropbox-to-sync-nix-home-folders wiki.dropbox.com/TipsAndTricks/SyncOtherFolders Faça uma leitura - ele suporta a sincronização por links simbólicos e, se houver determinados documentos, gráficos e planilhas que você precisa sincronizar - você ainda pode manter uma cópia deles na caixa de depósito ou salvá-los permanentemente no local da caixa de depósito para salvar os problemas.
Rihatum 15/10/10
11
Obrigado, mas já estou usando o dropbox nas plataformas. O que estou procurando aqui é algo que me permite sincronizar muitos GBs de arquivos sem taxas e aproveitar as redes locais.
Malabarba 15/10/10
1

Experimente o Sparkleshare: http://sparkleshare.org/

Há um cliente no repositório Ubuntu e ele tem instruções sobre como configurar um servidor em seu site.

user60876
fonte
parece um ótimo programa - a solução menos hacky; A versão 1.0 foi lançada no mês passado.
Abe
0

A melhor solução para 2015 deve ser o Seafile: https://www.seafile.com/en/download/

Os desenvolvedores do Sparkleshare dizem que sua ferramenta é boa para muitos arquivos pequenos e principalmente de texto, mas não tão boa para arquivos maiores e binários.

E em termos de desempenho, supera o Sparkleshare e o Owncloud.

Além disso, ele tem muito menos recursos do que o OwnCloud - para que uma instância possa ser executada em um Banana ou Raspberry sem problemas como um computador funcionando 24 horas por dia, 7 dias por semana. (No entanto, eu recomendaria um Banana Pi, devido à rede Gigabit e à interface SATA, era uma boa opção para um servidor de arquivos, pelo menos para mim.)

Sincronizo minhas pastas pessoais com três computadores. Excluo dotfiles, eles são tratados em um repositório git e em alguma lógica, porque - como Ricardo mencionou - há alguns problemas no compartilhamento de arquivos dotfiles e outras configurações em computadores diferentes, mesmo quando são o mesmo sistema operacional e versão. Pense no monitors.xml, por exemplo, ou em um layout diferente para um IDE no laptop e na área de trabalho de várias telas - ou em um programa aberto nos dois computadores.

Além da sincronização, eu faço backup desses dados - via borgbackup. É um novo programa de backup muito bom, que deduplica, é muito rápido após o backup inicial e possui muitos recursos que muitas ferramentas estão faltando.

É a configuração perfeita para mim.

mpathy
fonte