O rsync, por padrão, compara apenas os metadados do arquivo.
rsync -n -a -i --delete source/ target/
explicação:
-n
na verdade, não copie ou exclua <- ISSO É IMPORTANTE !! 1
-a
compare todos os metadados do arquivo, como carimbo de data e hora e atributos
-i
imprimir uma linha de informações por arquivo
--delete
também relatam arquivos que não estão na fonte
nota: é importante acrescentar os nomes dos diretórios com uma barra. isso é uma coisa rsync.
se você também quiser ver linhas impressas para arquivos idênticos, forneça -i
duas vezes
rsync -n -a -ii --delete source/ target/
saída de exemplo:
*deleting removedfile (file in target but not in source)
.d..t...... ./ (directory with different timestamp)
>f.st...... modifiedfile (file with different size and timestamp)
>f+++++++++ newfile (file in source but not in target)
.f samefile (file that has same metadata. only with -ii)
lembre-se de que o rsync compara apenas metadados. isso significa que, se o conteúdo do arquivo for alterado, mas os metadados permanecerem os mesmos, o rsync informará que o arquivo é o mesmo. este é um cenário improvável. portanto, confie que, quando os metadados são os mesmos, os dados são os mesmos ou você precisa comparar os dados dos arquivos pouco a pouco.
bônus: para obter informações sobre o progresso, consulte aqui: Estimativa de tempo ou trabalho restante para concluir o rsync?
source/
etarget/
também são muito importantes! (Sem eles, você comparará os nomes dos diretórios de origem e de destino com os nomes dos arquivos filhos, para que todos os nomes de arquivos sejam diferentes.)*deleting
, mas os arquivos que estão na fonte só apareciam. As barras são fáceis de esquecer acidentalmente e você obtém uma saída plausível, mas errada.Utilizar a
-q
(--brief
opção) comdiff -r
(diff -qr
). Nainfo
página do GNUdiff
:Isso não compara linha por linha, mas o arquivo como um todo, o que acelera bastante o processador (o que você está procurando).
fonte
Aqui está um script python rápido que verifica se os nomes de arquivos, mtimes e tamanhos de arquivo são todos iguais:
fonte
Se você só precisa saber se os arquivos de duas ramificações do sistema de arquivos são diferentes (sem consultar os arquivos internos), é possível fazer algo assim:
HTH
fonte
Baseado no roteiro de Chris Down, esse roteiro é um pouco mais "visual". Chamando-o com dois argumentos
folder1
efolder2
, ele percorre a primeira pasta e, para cada arquivo, procura um arquivo correspondente na segunda pasta. Se for encontrado, o caminho relativo será impresso em verde, se tiverem tempo ou tamanho modificados diferentes, será impresso em amarelo e, se não for encontrado, será impresso em vermelho.Observe que isso não é suficiente para decidir se as duas pastas são iguais; você precisará executá-lo nos dois sentidos para garantir. Na prática, se você quiser apenas saber se as pastas são iguais , o script de Chris é melhor. Se você quiser saber o que está faltando ou é diferente de uma pasta para outra , meu script informará.
NOTA: você precisará do termcolor instalado
pip install termcolor
,.fonte
Se você quiser comparar apenas uma estrutura e algumas informações básicas sobre arquivos, tente algo como isto:
Eu não testei, então qualquer edição é bem-vinda :)
fonte
<()
tem seu próprio ambiente. Editado.