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_files
seria um diretório contendo uma estrutura recursiva apenas de arquivos que foram adicionados ou alterados em Package_1.2
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 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.
Package_1.2
diferentes daquelesPackage_1.1
para um novo diretório, mantendo a mesma estrutura de diretório?Respostas:
Ao usar
rsync
, Parece que a-c
(--checksum
opção) não substitui o-t
(--times
opçã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
-rlpgoDc
vez de-a
. O comando ficaria assim: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ó.fonte