A maneira mais fácil que encontrei de encontrar arquivos duplicados em vários sistemas é criar uma lista de arquivos com suas somas MD5 para cada sistema, combiná-los em um arquivo e usar o comando sort + um script AWK para localizar as duplicatas. da seguinte forma:
Primeiro, execute isso em cada um dos sistemas, substituindo o caminho conforme apropriado:
#!/bin/sh
find /path/to/files -type f -exec md5sum {} \; |\
while read md5 filename
do
echo -e "${HOSTNAME}\t${md5}\t${filename}"
done >/var/tmp/${HOSTNAME}.filelist
Isso produzirá um arquivo /var/tmp/HOSTNAME.filelist em cada host, o qual você terá que copiar para um local central. Depois de ter reunido todas essas listas de arquivos, você poderá executar o seguinte:
#!/bin/sh
export LANG=C
cat *.filelist |sort -t$'\t' +1 -2 |\
awk '
BEGIN {
FS = "\t"
dup_count = 0
old_md5 = ""
}
{
if ($2 == old_md5) {
if (dup_count == 0 ) {
printf("\n%s\n", old_inline)
}
printf("%s\n", $0)
dup_count++
}
else {
dup_count = 0
}
old_md5 = $2
old_inline = $0
}'
Isso deve produzir um arquivo de saída que agrupe em arquivos de blocos cujo conteúdo é duplicado no mesmo host ou em hosts.
Ah, e como alternativa ao primeiro script (que é executado em todos os hosts), verifique com o sistema de backup em uso para ver se é possível obter algo semelhante no relatório de backup (algo que inclui md5 e nome de arquivo, em menos).