Pregunta

Tengo un directorio grande que contiene sólo cosas en CS y Matemáticas.Tiene un tamaño de más de 16 GB.Los tipos son texto, png, pdf y chm.Actualmente tengo dos sucursales:una sucursal de mi hermano y mía.Los archivos iniciales eran los mismos.Necesito compararlos.Intenté usar Git, pero el tiempo de carga es prolongado.

¿Cuál es la mejor manera de comparar dos directorios grandes?

[Solución mixta]

  1. Haga "ls -R > archivos_diferentes" en ambos directorios [1]
  2. "sdiff <(archivo eco1 | md5deep) <(archivo eco2 | md5deep)" [2]

¿Qué opinas?¿Algún inconveniente?

1] ¡Gracias a Paul Tomblin [2] ¡Genial gracias a todos los repliadores!

¿Fue útil?

Solución

Cómo comparar 2 carpetas sin comandos/productos preexistentes:

Simplemente cree un programa que escanee cada directorio y cree un hash de archivo de cada archivo.Genera un archivo con cada ruta de archivo relativa y el hash del archivo.

Ejecute este programa en ambas carpetas.

Luego simplemente compara los 2 archivos de salida para ver si son iguales.Para comparar esos 2 archivos, simplemente cárguelos en una cadena y realice una comparación de cadenas.

El algoritmo hash que utilices no importa.Puede utilizar MD5, SHA, CRC, ...También puede utilizar el tamaño del archivo en los archivos de salida para ayudar a reducir la posibilidad de colisiones.

Cómo comparar 2 carpetas con comandos/productos preexistentes:

Ahora, si sólo quieres un programa que lo haga, usa diferencia -r o viento para sistemas basados ​​en Windows.

Otros consejos

Use fslint: sitio web . Una de las opciones de la herramienta es & Quot; Duplicados & Quot ;. Según la descripción del sitio: Una de las características más utilizadas de FSlint es la capacidad de encontrar archivos duplicados. La forma más fácil de eliminar la pelusa de un disco duro es descartar cualquier archivo duplicado que pueda existir. A menudo, un usuario de la computadora puede no saber que tiene cuatro, cinco o más copias de la misma canción en su colección de música con diferentes nombres o directorios. Cualquier tipo de archivo, ya sea música, fotos o documentos de trabajo, se puede copiar y replicar fácilmente en su computadora. A medida que se recolectan los duplicados, se comen el espacio disponible en el disco duro. La primera opción de menú que ofrece FSlint le permite encontrar y eliminar estos archivos duplicados.

Utilice md5deep para crear listados recursivos md5sum de cada archivo en esos directorios.

Puede utilizar una herramienta diff para comparar los listados generados.

¿Estás tratando de descubrir qué archivos están presentes en uno que no están en el otro, y viceversa? Un par de sugerencias:

  1. Haga un " ls -R " en ambos directorios, redirija a archivos y diferencie los archivos.

  2. Haga un " rsync -n " entre ellos para ver qué rsync tendría que copiar si se permitiera copiar. (-n significa que no hagas el rsync, solo muestra lo que haría si lo ejecutaras sin el -n)

Lo haría diff comparando la salida de md5sum * | sort

Eso lo llevará a los archivos que son diferentes / faltantes

Sé que esta pregunta ya ha sido respondida, sin embargo, si no está interesado en escribir una herramienta de este tipo, hay un proyecto de código abierto que funciona muy bien con el nombre de tardiff disponible en sourceforge que básicamente hace exactamente lo que desea, e incluso admite la creación automática de parches (obviamente en formato tar) para explicar las diferencias.

Espero que esto ayude

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top