전체 스캔을 수행하지 않음으로써 updateb를 더 빠르게 실행하는 방법(mtime이 아닐 수도 있음)

전체 스캔을 수행하지 않음으로써 updateb를 더 빠르게 실행하는 방법(mtime이 아닐 수도 있음)

전체 검사를 피함으로써 업데이트가 어떻게 매우 빠르게 실행될 수 있습니까? 상위 폴더의 mtime은 하위 폴더의 파일에 영향을 받지 않습니다.

존재하다updatedb프로그램이 왜 그렇게 빨리 실행되나요 ?

@hugomg 실제로는 그렇지 않은 것 같아요. 직계 부모의 mtime만 변경해야 합니다. – @쿠살라난다

검색했지만 답변을 찾을 수 없습니다.

답변1

처음 실행할 때 updatedb모든 디렉터리를 검색하지 않을 수 있는 방법은 없습니다.

그러나 후속 스캔에서 디렉토리가 데이터베이스 mtime의 이전 항목과 비교하여 변경되지 않은 경우 locate새 파일이나 새 하위 디렉토리가 없습니다. 따라서 전체 디렉토리를 스캔하는 대신 updatedb이전 데이터베이스를 사용하여 모든 항목에 대해 알아보십시오. 기존 하위 디렉터리의 이름 - 디렉터리. 따라서 mtime이러한 하위 디렉터리를 직접 확인하고 동일한 규칙을 적용할 수 있습니다.

즉, 파일 시스템이 updatedb마지막 실행 이후 변경되지 않은 경우 데이터베이스에 이미 있는 모든 디렉터리 항목을 updatedb확인하고 변경되지 않은 상태로 유지되는지 확인하기만 하면 됩니다 .stat()mtime

변경된 디렉터리 에만 mtime전체 디렉터리 검색이 필요합니다. 이렇게 하면 새 파일, 이름이 변경되었거나 삭제된 파일, 링크 및 하위 디렉터리를 검색합니다. 새로운/이름이 변경된 하위 디렉터리가 발견되면 해당 하위 디렉터리도 전체 검색해야 합니다.

관련 정보