`updatedb` 프로그램이 왜 그렇게 빨리 실행됩니까?


22

일반적으로 전체 디스크 검사를 수행하고 시스템의 모든 파일을 처리하는 프로그램이있는 경우 실행하는 데 시간이 오래 걸립니다. 업데이트 된 b가 왜 그렇게 빨리 실행됩니까?

답변:


22

대답은 버전에 따라 locate사용하는 당신,하지만 그건 공정한 기회있을 mlocate그, updatedb빠르게 실행 전체 디스크 검사를 수행 피함으로써이 :

mlocate는 locate / updatedb 구현입니다. 'm'은 "병합"을 나타냅니다. updatedb는 기존 데이터베이스를 재사용하여 대부분의 파일 시스템을 다시 읽지 않도록합니다.

(데이터베이스는 각 디렉토리의 타임 스탬프 ctime또는 mtime최신 버전을 저장합니다.)

대부분의 구현처럼 updatedb, mlocate의는 파일 시스템과는 무시하도록 구성된 경로를 건너 뜁니다. 기본적으로 거기에 아무도없는 mlocate의 경우,하지만 분포는 일반적으로 기본 제공 updatedb.conf등 네트워크 파일 시스템, 가상 파일 시스템을 무시하는 (참조 데비안의 구성 파일 예를 들어, GNU의 그래서이, 데비안의 표준 관행 updatedb입니다 비슷하게 구성 ).


상당히 좋은 질문과 답변, 심지어 "다른"스캔이 있다는 것을 몰랐습니다.
Rui F Ribeiro

1
감사! 파일을 수정해도 모든 상위 디렉토리의 ctime 및 mtime이 변경되는 것을 알지 못했습니다.
hugomg

4
@hugomg 실제로는 그렇게 생각하지 않습니다. mtime직계 부모 만 변경해야합니다 .
Kusalananda

그래서 내가 제대로 이해한다면, mlocate대한 염려 ctime하고 mtime있는 단지 디렉토리 항목의 목록은 여전히 실제 파일에 대한 자신을 상관하지 않는다 수단 같은 (NO 제거 또는 추가 된 파일)인지의 관심을 의미한다. 그 맞습니까 ?
Sergiy Kolodyazhnyy

@ Sergiy : 물론입니다. locate아닙니다 grep -R. 파일 내용을 읽지 않습니다.
케빈

9

mlocate/etc/updatedb.conf에 설명되어 있고 man updatedb.conf에 설명 된대로 수정 시간을 확인하는 것 외에도 많은 관심이 없거나 잠재적으로 중복되는 파일이있는 파일 시스템의 특정 하위 트리를 무시합니다 .

  • 바인드 마운트
  • 일부 파일 시스템 (9p, afs, bdev 등)
  • VCS 저장소 데이터베이스 (.git, .hg 등)
  • 일부 하드 코딩 된 디렉토리 (/ media, / tmp, / var / spool / cups 등)

그러나 기본적으로는 그렇지 않으므로 기본 동작은 사용중인 배포판에 따라 다릅니다. (다른 updatedb구현도 구성된 제외를 지원합니다.)
Stephen Kitt

과연. Fedora의 기본값을 설명하고있었습니다.
hugomg
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.