如何在 Ubuntu 中將 1 個檔案與其他 N 個檔案進行比較

如何在 Ubuntu 中將 1 個檔案與其他 N 個檔案進行比較

我有一個視頻網站。每當上傳文件時,都需要將其與所有其他現有文件(影片)進行比較,以確保它不是重複的。

考慮到每次上傳要比較的文件數量都會變大,我正在尋找相對較快的解決方案。

理想情況下,這將使用 php 執行,shell_exec因此如果檔案已經存在,它應該會傳回某種輸出(簡單的 0 或 1 即可)。

我確實知道cmpdiff但我擔心隨著現有文件的數量,這會相當慢。

我還應該研究其他解決方案嗎?

答案1

您可以計算每個影片的檔案校驗和,然後對值清單進行排序。具有相同校驗和的檔案是同一個檔案。

為了加快處理速度,您可以過濾檔案中具有完全相同大小的檔案(DELTA 幾 kb 就足夠了),然後您可以只計算這組檔案的雜湊值

答案2

計算所有影片的校驗和/雜湊 ( sha1sum) 並將校驗和清單保存在檔案或資料庫中。

當您收到新文件時:

  • 計算其校驗和/雜湊值
  • 在清單/DB 中搜尋此校驗和
  • 如果發現,拒絕
  • 如果沒有找到,接受校驗和並將其新增至清單/DB

如果將校驗和保留為資料庫中的附加列,則可以使用校驗和列上的唯一性約束來確定是否已經存在具有校驗和的文件,並自動將其新增至資料庫失敗。

PS:也就是說,編輯 MP4 中的評論欄位以使其看起來像不同的影片是相當容易的。

相關內容