Wie kann ich 1 Datei mit N anderen Dateien in Ubuntu vergleichen?

Wie kann ich 1 Datei mit N anderen Dateien in Ubuntu vergleichen?

Ich habe eine Video-Website. Immer wenn eine Datei hochgeladen wird, muss sie mit allen anderen vorhandenen Dateien (Videos) verglichen werden, um sicherzustellen, dass es sich nicht um ein Duplikat handelt.

Da die Anzahl der zu vergleichenden Dateien mit jedem Upload größer wird, suche ich nach einer Lösung, die relativ schnell ist.

Idealerweise wird dies mithilfe shell_execvon PHP ausgeführt, sodass eine Art Ausgabe zurückgegeben werden sollte, wenn die Datei bereits vorhanden ist (eine einfache 0 oder 1 reicht aus).

Ich weiß davon cmp, diffaber ich befürchte, dass es angesichts der Anzahl der vorhandenen Dateien ziemlich langsam sein wird.

Gibt es andere Lösungen, die ich in Betracht ziehen sollte?

Antwort1

Sie können für jedes Video die Prüfsumme der Datei berechnen und dann die Werteliste sortieren. Die Dateien mit der gleichen Prüfsumme sind die gleichen Dateien.

Um den Prozess zu beschleunigen, können Sie die Datei nach der Datei filtern, die eine ziemlich gleiche Größe hat (ein paar KB als DELTA können ausreichen), dann können Sie den Hash nur für diesen Satz von Dateien berechnen

Antwort2

Berechnen Sie die Prüfsumme/den Hash ( sha1sum) aller Ihrer Videos und speichern Sie die Prüfsummenliste in einer Datei oder Datenbank.

Wenn Sie eine neue Datei erhalten:

  • Berechnen Sie die Prüfsumme/den Hash
  • Suche diese Prüfsumme in der Liste/DB
  • wenn gefunden, ablehnen
  • wenn nicht gefunden, akzeptieren und die Prüfsumme zur Liste/DB hinzufügen

Wenn Sie die Prüfsumme als zusätzliche Spalte in der Datenbank beibehalten, kann eine Eindeutigkeitsbeschränkung für die Prüfsummenspalte verwendet werden, um herauszufinden, ob bereits eine Datei mit der Prüfsumme vorhanden ist, und das Hinzufügen dieser Datei zur Datenbank schlägt automatisch fehl.

PS: Allerdings ist es ziemlich einfach, das Kommentarfeld in einer MP4-Datei zu bearbeiten, damit es wie ein anderes Video aussieht.

verwandte Informationen