Usar este comando a seguir deve verificar se eles são idênticos.
diff imageA imageB -r 2> /dev/null | grep -v "is a character special file" | grep -v "is a block special file" && echo "viola"
/ media / A e / media / B devem ser idênticos, mas quero confirmar antes de excluir um.
Localizadores de arquivos duplicados não funcionam, porque eles encontrarão duas cópias do mesmo arquivo em B, por exemplo. Eu só quero confirmar que cada arquivo em um é idêntico ao outro.
diff -qr /media/A/ /media/B/
parece funcionar, mas a saída é cheia de lixo como
diff: /media/A//etc/alternatives/ControlPanel: No such file or directory
e
File /media/A//dev/tty8 is a character special file while file /media/B//dev/tty8 is a character special file
Eu posso suprimir o primeiro com 2> /dev/null
, mas não sei sobre o último.
rsync -avn /media/A/ /media/B/
também produz um monte de confusão, como "pular arquivos não regulares".
Como posso comparar as duas árvores e apenas me certificar de que todos os arquivos reais existem em ambos e são idênticos?
Usar este comando a seguir deve verificar se eles são idênticos.
diff imageA imageB -r 2> /dev/null | grep -v "is a character special file" | grep -v "is a block special file" && echo "viola"
Dê uma olhada no Guiffy. Não é gratuito, mas tem uma avaliação gratuita de 21 dias, o que não limita a funcionalidade:
Lista completa (massiva) de recursos
Ele alega fazer o seguinte, e parece estar muito próximo do que você está procurando, ou pode chegar perto o suficiente para que você possa levá-lo a partir daí:
Use o rsync no modo de gravação (com -v
/ --verbose
e sem -n
/ --dry-run
) e execute-o algumas vezes até que a saída se estabilize. Execute-o como root para que a recriação de arquivos não regulares (implícita por -D e -a) funcione, o que deve eliminar a desordem.
Tags diff tree duplicate linux deduplication