Sincronizando pastas onde vários arquivos são parcialmente alterados

1

Tenho a seguinte estrutura de diretórios na máquina remota

 ALLLibs/LibA/LibA.1
 ALLLibs/LibA/LibA.2
 ALLLibs/LibB/LibB.1
 ALLLibs/LibB/LibB.4

para as informações LibA.1 e LibA.2 são a versão de um diretório, o conteúdo desta pasta pode ser quase o mesmo e pode haver mais dessas pastas.

Eu quero sincronizar AllLibs com minha outra máquina, onde a rede é muito lenta. e apenas disponível opção é via rede

Eu sei que o rsync é o melhor para sincronizar arquivos, mas acredito que ele faça o mapeamento de arquivos 1-1 e sincronize-os.

Um caso de uso que eu tenho é ALLLibs/LibA/LibA.1 se já está sincronizado na minha outra máquina e, posteriormente, ALLLibs/LibA/LibA.2 é criado no remoto, quero que a sincronização ocorra via patch da lib anterior.

    
por Black Diamond 28.08.2015 / 04:57

1 resposta

0

Certifique-se de estar usando o rsync -z para compactar pela rede. Outras opções a serem consideradas são -H (hardlinks) e -S (arquivos esparsos).

Antes de executar seu rsync, faça uma versão com -nv , que não faz atualiza, mas mostra quais arquivos serão atualizados.

Fora da lista de arquivos, use seu conhecimento para corresponder onde um arquivo ausente pode já existir no controle remoto e, em seguida, faça o login no remoto e copie esses arquivos primeiro.

Por exemplo, -nv pode mostrar atualizações necessárias para:

ALLLibs/LibA/LibA.2
ALLLibs/LibA/LibA.2/file1

mas se você sabe que é provavelmente uma cópia de ../LibA.1/file1 , então escrever um script para criar e preencher o LibA.2 de LibA.1, e execute-o no controle remoto. Pode ser tão simples quanto cp -rp . Quando você faça o rsync real, arquivos semelhantes já estarão lá e serão alterados arquivos serão atualizados. Você precisará de --delete para remover arquivos que não deveria estar lá (tenha cuidado com esta opção: teste com -n primeiro).

Tenha cuidado no seu comando de cópia no controle remoto: copiar um arquivo geralmente configura um novo timestamp no novo arquivo. O rsync por padrão compara o tamanho e o registro de data e hora. Se eles diferirem, o arquivo será atualizado. Use a opção rsync -c para checksum cada arquivo para ver se difere.

    
por 29.08.2015 / 11:58