searchfs
는 전체 APFS 및 HFS+ 볼륨에서 파일 이름으로 빠르게 검색할 수 있는 macOS 명령줄 도구입니다. 검색은 파일 시스템 카탈로그를 사용하여 드라이버 수준에서 수행됩니다. 이는 볼륨의 디렉토리 트리가 find
사용하는 표준 재귀 파일 이름 검색보다 훨씬 빠르게 스캔될 수 있음을 의미합니다.
검색은 기본적으로 대소문자를 구분하지 않습니다. 일치하는 파일은 카탈로그에 있는 순서대로 표준 출력으로 인쇄됩니다. 자세한 내용은 매뉴얼 페이지를 참조하십시오.
KatSearch는 searchfs
기반으로 구축된 기본 그래픽 macOS 애플리케이션입니다.
git clone https://github.com/sveinbjornt/searchfs.git
cd searchfs
make
make install
/usr/local/bin/
에 바이너리를 설치합니다. 매뉴얼 페이지는 /usr/local/share/man/man1/
에 들어갑니다.
내 벤치마크에 따르면 searchfs
APFS 파일 시스템에서 find
보다 약 35-50% 더 빠르게 실행되고 HFS+에서는 몇 배 더 빠르게 실행됩니다.
다음은 약 2백만 개의 파일이 포함된 APFS 파일 시스템을 실행하는 Apple 제공 512GB SSD를 탑재한 2012 Retina MacBook Pro의 벤치마크 결과입니다.
$ time searchfs " something "
0,01s user 33,15s system 32% cpu 1:23,59 total
$ time find / -name " *something* "
9,53s user 67,64s system 49% cpu 2:37,39 total
아직 이것을 제대로 테스트해 본 적은 없지만, searchfs
검색 시간이 더 긴 하드 디스크 드라이브에서 find
보다 아마도 훨씬 더 빠를 것입니다. 파일 수가 적은 파일 시스템에서도 실제로 매우 빠릅니다.
Apple은 1985년에 HFS(Hierarchical File System)를 도입하면서 Mac OS에 파일 시스템 카탈로그 검색을 추가했습니다. HFS는 이전 MFS 파일 시스템의 이전 플랫 테이블 구조를 B-트리 구조를 사용하는 카탈로그 파일로 대체했습니다. Windows의 FAT 파일 시스템과 달리 HFS(및 이후 HFS+)는 계층적 폴더 구조와 일치하지 않는 상호 연결된 노드를 사용하여 전체 디렉터리 트리를 디스크의 하나의 큰 파일로 배열했습니다. 이는 크기에 관계없이 볼륨을 매우 빠르게 검색할 수 있음을 의미했습니다.
Classic Mac OS에서는 FSCatalogSearch() 함수를 통해 이 기능을 제공했습니다. 이 함수는 노드 전체에서 효율적으로 반복되어 디스크 검색 시간을 최소화했습니다. SSD 이전 시대에 Mac은 전체 볼륨 검색에서 Windows에 비해 상당한 성능 이점을 제공했습니다. 오랫동안 FSCatalogSearch는 Carbon API를 통해 Mac OS X/macOS에서 계속 사용할 수 있었지만 이제는 더 이상 사용되지 않으며 Apple의 새로운 파일 시스템인 APFS를 지원하지 않습니다.
그러나 HFS+ 및 APFS 모두에 대한 카탈로그 검색은 searchfs() 함수를 통해 Darwin의 하위 수준 시스템 라이브러리에서 사용할 수 있습니다. searchfs
프로그램은 이 기능을 사용합니다.
저작권 © 2017-2020 Sveinbjorn Thordarson <[email protected]>
다음 조건이 충족되는 경우 수정 여부에 관계없이 소스 및 바이너리 형식의 재배포 및 사용이 허용됩니다.
소스 코드를 재배포하는 경우 위의 저작권 고지, 본 조건 목록 및 다음 면책 조항을 유지해야 합니다.
바이너리 형식으로 재배포할 경우 배포와 함께 제공되는 문서 및/또는 기타 자료에 위의 저작권 고지, 이 조건 목록 및 다음 면책 조항을 재현해야 합니다.
구체적인 사전 서면 승인 없이는 저작권 소유자의 이름이나 기여자의 이름을 사용하여 이 소프트웨어에서 파생된 제품을 보증하거나 홍보할 수 없습니다.
이 소프트웨어는 저작권 보유자 및 기여자에 의해 "있는 그대로" 제공되며, 상품성 및 특정 목적에의 적합성에 대한 묵시적인 보증을 포함하되 이에 국한되지 않는 모든 명시적 또는 묵시적 보증은 부인됩니다. 어떠한 경우에도 저작권 보유자나 기여자는 직접적, 간접적, 부수적, 특별, 예시적 또는 결과적 손해(대체 상품이나 서비스의 조달, 사용, 데이터 또는 이익의 손실을 포함하되 이에 국한되지 않음)에 대해 책임을 지지 않습니다. 또는 사업 중단) 원인에 관계없이 이 소프트웨어의 사용으로 인해 발생하는 계약상, 엄격한 책임 또는 불법 행위(과실 또는 기타 포함)에 관계없이 책임 이론에 따라 발생합니다. 이는 그러한 손해의 가능성이 통보된 경우에도 마찬가지입니다.