¿Diferenciar dos directorios de forma recursiva en función de sumas de verificación?

¿Diferenciar dos directorios de forma recursiva en función de sumas de verificación?

Estoy tratando de encontrar qué archivos no existen mediante una suma de verificación de su contenido. Tengo dos directorios /fooy /barambos directorios representan estados arbitrarios en el sistema, quiero encontrar todosarchivosen raíz /barque no existen en raíz /foo(recursivamente). un diccionario de /bar/**con

CheckSum -> filepath

menos el diccionario de /foo/**con

CheckSum -> filepath  

Puedo escribir esto usando md5sum o algo así, pero ya debe haber una utilidad que haga esto.

Para que quede claro, si dos archivos son idénticosexceptopor ubicación (nombre y ruta) quiero que se identifiquen como iguales.

Caso de prueba

Creemos un árbol con algunos datos de prueba,

/tmp/foo
└── myFile (duplicate of /tmp/bar/quz/asdf/otherFileName)
/tmp/bar
├── qaz
│   └── findMe
└── quz
    └── asdf
        └── otherFileName (duplicate of /tmp/foo/myFile)

Guión para la creación,

mkdir -p /tmp/foo /tmp/bar/quz/asdf /tmp/bar/qaz

# One file that exists in both locations
dd if=/dev/urandom of=/tmp/foo/myFile bs=1k count=10
cp /tmp/foo/myFile /tmp/bar/quz/asdf/otherFileName

# One file (findMe) that exists in only /mpt/bar/
dd if=/dev/urandom of=/tmp/bar/qaz/findMe bs=1k count=10

Entonces el programa compara /tmp/fooy /tmp/bardebería encontrar/tmp/bar/qaz/findMe

Respuesta1

Generaría un listado md5sum (una columna para la suma y una columna para el nombre de archivo) para ambos árboles y canalizaría el resultado a un script (por ejemplo, awk o perl) que puede usar la suma como hash para los nombres de archivos y crearía el nombres de archivos de informes de secuencias de comandos que tienen el mismo valor hash.

Esto es más que una simple frase y es algo que se pregunta y se resuelve con frecuencia (una búsqueda en la web de archivos duplicados por contenido arroja más de un millón de resultados).

Puede que esto le resulte útil:

información relacionada