대규모 중첩 디렉터리에 있는 모든 파일의 체크섬을 얻는 빠른 방법

대규모 중첩 디렉터리에 있는 모든 파일의 체크섬을 얻는 빠른 방법

사용자가 업로드한 콘텐츠를 필터링해야 한다는 요구 사항이 있습니다. 그러나 사용자 업로드의 대부분은 실제로 다음에서 비롯된 것으로 나타났습니다.우리만의 시스템: 예를 들어, 누군가가 우리 문서 라이브러리에서 PDF를 다운로드하고 필요에 맞게 다른 이름으로 바꾼 다음 다른 사용자와 공유할 수 있는 사용자 정의 콘텐츠 섹션에 다시 업로드합니다.

누군가가 실제로 파일을 보지 않고도 이 파일을 신뢰할 수 있는 것으로 표시하고 싶고, 파일 크기와 일종의 체크섬을 사용하여 이 작업을 수행할 수 있다고 생각했습니다. 예를 들어

  • 특정 새 파일에 대해
    • 라이브러리 폴더에서 파일 확장자와 파일 크기가 동일한 모든 파일을 찾습니다.
    • 확장자와 크기가 동일한 모든 파일에 대해 일종의 체크섬 비교를 수행합니다.
    • 일치하는 항목을 찾으면 새 파일이 신뢰할 수 있는 것으로 선언됩니다.

현재 저장소 디렉토리는 132GB로 상당히 큽니다. 따라서 그 안에 있는 모든 파일(확장자가 동일한 모든 파일 포함)을 조사하는 솔루션은 매우 느릴 것입니다.

콘텐츠가 변경될 때 자동으로 업데이트하거나 스케줄러를 사용하여 하루에 한 번만 실행하는 일종의 파일 체크섬 데이터베이스(리터럴 DBMS를 사용할 필요는 없음)를 유지하는 것이 현명한 것 같습니다. 그런 다음 특정 새 파일에 대해 체크섬을 가져와 데이터베이스에서 조회할 수 있습니다.

이 문제는 해결되어야 할 것 같습니다. 누구든지 어떤 아이디어가 있습니까?

고마워요, 맥스

답변1

당신은 볼 수 있습니다파일 무결성 모니터링소프트웨어.

기본적으로 이들은 파일 시스템에서 루트킷의 도입을 감지하도록 설계되었지만 핵심에는 메타 정보(체크섬, 해시)가 포함된 파일 데이터베이스와 일련의 디렉터리 아래에 변경되거나 추가된 모니터링 파일이 있습니다. 당신이 원하는 것.

내가 들어본 것 중 가장 오래된 것은인계철선그러나 다음과 같은 오픈 소스 버전이 만들어졌습니다. 어시스턴트. 가장 최근의 것은 OSSEC추천에서https://serverfault.com/questions/141800/recommend-alternative-to-tripwire.

답변2

이는 해결된 문제일 수 있지만 너무 구체적이고 Unix/Linux 세계에는 표준 도구가 없습니다. 귀하의 질문에는 답변의 상당 부분이 포함되어 있습니다. 데이터베이스가 필요합니다. 더 정확하게는 데이터베이스가 필요합니다.색인체크섬. 또한 이 인덱스에 대해 새 파일을 추가, 업데이트 및 확인하는 구성 요소가 필요합니다. 내 생각에는 직접 구현해야 하며 구현을 위한 자연스러운 위치는 업로드 메커니즘(예: 웹 페이지)이 될 것입니다.

관련 정보