Como criar arquivos Delta / Alterados a partir 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 capaz de lidar com isso.

Exemplo:

  • Pacote_1.1 / (antigo)
  • Package_1.2 / (novo)
  • changes_files / (somente arquivos e diretórios alterados e novos)

changed_filesseria um diretório contendo uma estrutura recursiva apenas de arquivos que foram adicionados ou alterados em Package_1.2comparaçã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 tiveram um tempo modificado 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 estou perdendo alguma coisa.


Para ser claro, você deseja copiar arquivos Package_1.2diferentes daqueles Package_1.1para um novo diretório, mantendo a mesma estrutura de diretório?
Thor

@ Thor, isso está correto.
Highway of Life

Respostas:


3

Ao usar rsync, Parece que a -c( --checksumopção) não substitui o -t( --timesopção) dentro de -a( --archive), que usa -rlptgoD, e, assim, ele ainda vai olhar para horas de modificação do arquivo.

Uma solução possível é usar: em -rlpgoDcvez 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 rsyncpode fazer todo o trabalho por si só.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.