Como sincronizar dois diretórios (em discos rígidos externos com o Linux), reconhecendo os movimentos de arquivos?

0

Eu tenho dois diretórios, sendo uma cópia do outro. No meu caso, cada diretório está em seu próprio disco rígido externo, mas o que eu quero fazer deve ser universalmente aplicável a dois diretórios que devem ser idênticos. Agora gostaria de sincronizar esses dois diretórios. Eu gostaria de ter esses recursos:

  1. Idealmente, seria uma sincronização bidirecional, não apenas um diretório sendo o mestre e o outro o escravo. Ou seja, deve ser capaz de dizer "pegue este subdiretório de A e mas esse subdiretório de B". (Isso faz sentido?)
  2. Antes de eu mandar fazer a sincronização, gostaria de ver quais serão as mudanças nos dois diretórios.
  3. Digamos que eu tenha um diretório A. Para fins de backup, faço uma cópia em outro lugar do diretório do diretório B (por exemplo, em outro disco rígido). O que acontece muito é que eu tenho uma subpasta confusa em algum lugar, por exemplo, chamado "arquivo", onde eu joguei muitos arquivos. O backup dessa subpasta no diretório B também é confuso. Um dia feliz eu limpo os arquivos neste "arquivo" em A - muitas vezes colocando os arquivos no lugar certo na árvore de diretórios de A (em algum lugar diferente da subpasta "arquivo"). Mais tarde, gostaria de sincronizar toda a árvore de diretórios A com o backup dela, sendo B. O que aconteceria com uma ferramenta como rsync é que a subpasta "archive" em B é excluída e esses arquivos são copiados de seus locais corretos de A para seus lugares corretos em B. Não seria sensato, em vez disso, se os arquivos fossem movidos dentro de B de "archive" para seus lugares corretos, como fiz manualmente para A antes? Para ver esses movimentos seria ótimo ver antes da sincronização.

Estou usando o Linux Kubuntu, ambos os diretórios estão em partições ext4.

A questão Sincronizar dois diretórios no linux pc é semelhante, mas não mesmo assim.

Meu terceiro requisito é meu mais importante / mais difícil de satisfazer. Se você pudesse encontrar uma solução para essa, eu ficaria muito feliz: -).

Por favor, considere que minha árvore de diretórios é bastante grande - tanto em tamanho (~ 4TB) quanto em número de arquivos (algo entre 100 milhões e 1 bilhão de arquivos). Então, se eu usasse algo como git ... isso poderia não funcionar, eu acho.

    
por Make42 12.03.2016 / 16:59

2 respostas

0

Você pode tentar freefilesync para sincronizar dois diretórios. Ele mantém as trilhas da sua estrutura de diretórios em um pequeno arquivo sync.ffs_db nos diretórios de origem e de destino, e sim, ele pode detectar arquivos e diretórios movidos e renomeados e movê-los dentro dos diretórios de origem e de destino e salvar largura de banda de re-sincronização completa.

    
por 17.03.2016 / 04:16
0

Sugiro usar uníssono . O Unison serve para sincronizar as estruturas de pastas de ambas as formas, incluindo exclusões de arquivos. Eu não estou ciente de uma maneira de forçar uníssono para mostrar apenas o que seria transferido. Além disso, funciona muito bem para o seu caso de uso.

Editar: De acordo com o link , é possível reconhecer renomeações ou movimentos.

    
por 12.03.2016 / 18:08