¿Cómo puedo comparar 1 archivo con N otros archivos en Ubuntu?

¿Cómo puedo comparar 1 archivo con N otros archivos en Ubuntu?

Tengo un sitio web de vídeos. Cada vez que se carga un archivo, es necesario compararlo con todos los demás archivos (videos) existentes para garantizar que no sea un duplicado.

Teniendo en cuenta que con cada carga aumenta la cantidad de archivos a comparar, estoy buscando una solución que sea relativamente rápida.

Idealmente, esto se ejecutará usando shell_execphp, por lo que debería devolver algún tipo de resultado si el archivo ya existe (un simple 0 o 1 será suficiente).

Lo sé cmp, diffpero me temo que con la cantidad de archivos existentes esto será bastante lento.

¿Hay otras soluciones que debería considerar?

Respuesta1

Puede calcular la suma de verificación del archivo para cada video y luego ordenar la lista de valores. Los que tienen la misma suma de comprobación son el mismo archivo.

Para acelerar el proceso, puede filtrar el archivo por uno que tenga el mismo tamaño (unos pocos kb como DELTA pueden ser suficientes), luego puede calcular el hash solo para este conjunto de archivos.

Respuesta2

Calcule la suma de verificación/hash ( sha1sum) de todos sus videos y mantenga la lista de sumas de verificación en un archivo o base de datos.

Cuando reciba un nuevo archivo:

  • calcular su suma de comprobación/hash
  • buscar esta suma de comprobación en la lista/DB
  • si lo encuentra, rechace
  • si no lo encuentra, acepte y agregue la suma de verificación a la lista/DB

Si mantiene la suma de verificación como una columna adicional en la base de datos, se puede usar una restricción de unicidad en la columna de suma de verificación para determinar si ya existe un archivo con la suma de verificación y automáticamente no se puede agregar a la base de datos.

PD: dicho esto, es bastante fácil editar el campo de comentarios en un MP4 para que parezca un vídeo diferente.

información relacionada