Como posso comparar 1 arquivo com N outros arquivos no Ubuntu

Como posso comparar 1 arquivo com N outros arquivos no Ubuntu

Eu tenho um site de vídeos. Sempre que um arquivo é carregado, ele precisa ser comparado com todos os outros arquivos (vídeos) existentes para garantir que não seja duplicado.

Considerando que a cada upload o número de arquivos a serem comparados aumenta, estou procurando uma solução que seja relativamente rápida.

Idealmente, isso será executado usando shell_execfrom php, portanto, deverá retornar algum tipo de saída se o arquivo já existir (um simples 0 ou 1 servirá).

Eu sei cmp, diffmas temo que, com o número de arquivos existentes, isso seja bastante lento.

Existem outras soluções que devo procurar?

Responder1

Você pode calcular a soma de verificação do arquivo para cada vídeo e classificar a lista de valores. Aqueles que possuem a mesma soma de verificação são o mesmo arquivo.

Para acelerar o processo, você pode filtrar o arquivo por aquele que tenha o mesmo tamanho (alguns kb como DELTA podem ser suficientes), então você pode calcular o hash apenas para este conjunto de arquivos

Responder2

Calcule a soma de verificação/hash ( sha1sum) de todos os seus vídeos e mantenha a lista de somas de verificação em um arquivo ou banco de dados.

Ao receber um novo arquivo:

  • calcular sua soma de verificação/hash
  • procure esta soma de verificação na lista/DB
  • se encontrado, rejeite
  • se não for encontrado, aceite e adicione a soma de verificação à lista/banco de dados

Se você mantiver a soma de verificação como uma coluna adicional no banco de dados, uma restrição de unicidade na coluna da soma de verificação poderá ser usada para descobrir se já existe um arquivo com a soma de verificação e falhará automaticamente em sua adição ao banco de dados.

PS: dito isto, é bastante fácil editar o campo de comentários em um MP4 para que pareça um vídeo diferente.

informação relacionada