Como criar arquivos Delta / Changed de diretórios?

3

Estou tentando criar um pacote "arquivos alterados" de um diretório para outro e preciso encontrar uma ferramenta / utilitário Linux / Unix que possa lidar com isso.

Exemplo:

  • Pacote_1.1 / (antigo)
  • Pacote_1.2 / (novo)
  • changed_files / (apenas arquivos e diretórios novos e alterados)

changed_files seria um diretório contendo uma estrutura recursiva de apenas arquivos que foram adicionados ou alterados em Package_1.2 em comparação com Package_1.1 )

Atualização: tentei usar:

cd Package_1.2
rsync -a -c --compare-dest=../Package_1.1 . ../changed_files/
find -depth ../changed_files -type d -empty -delete

No entanto, havia alguns arquivos que tinham um tempo de modificação ligeiramente diferente que foram copiados, mas o conteúdo era idêntico. (o md5 produziu uma soma de verificação idêntica em cada arquivo). Então, enquanto eu acho que estou perto de usar esse comando, ainda sinto falta de algo.

    
por Highway of Life 27.07.2012 / 20:48

1 resposta

3

Ao usar rsync , parece que a opção -c ( --checksum ) não substitui a opção -t ( --times ) em -a ( --archive ), que usa -rlptgoD e, assim, ainda vai olhar para os tempos de modificação de arquivos.

Uma possível solução é usar: -rlpgoDc em vez de -a . O comando ficaria assim:

cd Package_1.2
rsync -rlpgoDc --compare-dest=../Package_1.1 . ../changed_files/
find -depth ../changed_files -type d -empty -delete

Esta pode não ser a solução mais elegante, talvez alguém tenha uma idéia melhor de como rsync pode fazer todo o trabalho por si só.

    
por 27.07.2012 / 22:06