나는 큰 파일 디렉토리 트리를 가지고 있습니다. 나는 종종 이 find
명령을 사용하여 이 트리에서 무언가를 찾습니다. 재부팅 후 처음에는 시간이 좀 걸리지만 이후 사용은 거의 즉시 이루어집니다. find
재부팅 후 다시 생성해야 하는 일부 내부 데이터 구조가 사용되는 것 같습니다 .
재부팅 사이에 이 데이터 구조를 보존할 수 있는 방법이 있습니까?
추가 정보:
- 디렉토리 트리의 루트는 항상 동일하지만 항상 마운트되지는 않는 다른 드라이브에 있습니다.
- 약 50000개의 파일과 약 2000개의 디렉토리가 있습니다.
- 나는
-iregex
옵션 을 사용한다find
답변1
find
두 번째 명령을 매우 빠르게 만드는 것은 커널 파일 시스템 캐시입니다 . 내가 아는 한, 파일 시스템 캐시를 덤프하고 복원할 수 있는 방법은 없습니다. 어쨌든 캐시를 먼저 디스크에 쓴 다음 다시 읽는 것이 find
명령을 다시 실행하는 것보다 느릴 것으로 예상됩니다.
답변2
디렉토리 트리가 비교적 정적인 경우(즉, 파일 및 디렉토리가 거의 생성되거나 삭제되지 않는 경우) 대신 를 find
사용해 볼 수 있습니다 locate
.
locate(1) General Commands Manual locate(1)
NAME
locate - find files by name
SYNOPSIS
locate [OPTION]... PATTERN...
DESCRIPTION
locate reads one or more databases prepared by updatedb(8)
and writes file names matching at least one of the
PATTERNs to standard output, one per line.
If --regex is not specified, PATTERNs can contain globbing characters.
If any PATTERN contains no globbing characters,
locate behaves as if the pattern were *PATTERN*.
By default, locate does not check whether files found in database
still exist (but it does require all parent directories to exist
if the database was built with --require-visibility no).
locate can never report files created after the most recent
update of the relevant database.
…