Ubuntu에서 1개 파일을 N개의 다른 파일과 어떻게 비교할 수 있나요?

Ubuntu에서 1개 파일을 N개의 다른 파일과 어떻게 비교할 수 있나요?

동영상 웹사이트가 있습니다. 파일이 업로드될 때마다 다른 모든 기존 파일(동영상)과 비교하여 중복되지 않는지 확인해야 합니다.

업로드할 때마다 비교할 파일 수가 증가한다는 점을 고려하면 상대적으로 빠른 솔루션을 찾고 있습니다.

이상적으로 이것은 PHP를 사용하여 실행되므로 shell_exec파일이 이미 존재하는 경우 일종의 출력을 반환해야 합니다(간단한 0 또는 1이면 됩니다).

cmp나는 그것에 대해 알고 있지만 diff존재하는 파일 수로 인해 이것이 다소 느려질 까봐 두렵습니다.

제가 조사해야 할 다른 솔루션이 있나요?

답변1

모든 비디오에 대한 파일의 체크섬을 계산하고 값 목록을 정렬할 수 있습니다. 동일한 체크섬을 갖는 파일은 동일한 파일입니다.

프로세스 속도를 높이려면 크기가 꽤 같은 파일(DELTA만큼 몇 kb이면 충분함)로 파일을 필터링한 다음 이 파일 세트에 대해서만 해시를 계산할 수 있습니다.

답변2

sha1sum모든 동영상의 체크섬/해시( )를 계산 하고 체크섬 목록을 파일이나 DB에 보관합니다.

새 파일을 받으면:

  • 체크섬/해시를 계산합니다.
  • 목록/DB에서 이 체크섬을 검색하세요.
  • 발견되면 거부
  • 찾을 수 없는 경우 체크섬을 수락하고 목록/DB에 추가합니다.

체크섬을 DB의 추가 열로 유지하는 경우 체크섬 열의 단일성 제약 조건을 사용하여 체크섬이 있는 파일이 이미 있는지 파악하고 자동으로 DB에 추가하지 못할 수 있습니다.

추신: 즉, MP4의 댓글 필드를 편집하여 다른 비디오처럼 보이도록 만드는 것은 매우 쉽습니다.

관련 정보