Spotlight가 외부 드라이브를 색인화하지 못하도록 방지


9

macOS Sierra가 실행되는 현재 내부 드라이브와 함께 macOS Sierra가있는 외부 SSD를 사용하는 경우가 있습니다.

Spotlight의 한 가지 성가신 점은 예를 들어 외부 드라이브에서 실행할 때 무언가를 검색 할 때마다 외부 드라이브 내부 드라이브 모두에서 결과를 얻는다 는 것입니다.

외장 드라이브로 부팅 할 때 내장 드라이브에 대한 Spotlight 예외를 만들려고했습니다. 그러나 그렇게하면 내부 드라이브 로 부팅 할 때도 내부 드라이브에 예외가 발생하는 것 같습니다 . 따라서 스포트라이트 제외는 드라이브가 아닌 랩톱에 의해 구속되는 것처럼 보입니다. 즉, 부팅 한 외부 드라이브에 관계없이 내부 드라이브가 스포트라이트 결과에서 제외됩니다.

외장 드라이브에서 실행할 때 내장 드라이브에 대한 Spotlight 예외를 만들 수 있습니까? 마찬가지로 내장 드라이브에서 실행할 때 외장 드라이브에 대한 예외를 만들 수 있습니까?

답변:


14

이 게시물 https://apple.stackexchange.com/a/91759/183505 에서 제안 된 기술을 사용하는 시작시 실행되는 스크립트를 가질 수 있습니다.

DriveA에서 부팅 할 때 (외부 DriveB에 대한 스포트라이트 색인 생성을 비활성화하려는 경우) 다음을 실행할 수 있습니다.

touch /Volumes/DriveB/.metadata_never_index

외장 DriveB에서 부팅 할 때 스포트라이트를 다시 활성화하려면 시작 스크립트를 실행할 수 있습니다.

rm /Volumes/DriveB/.metadata_never_index

연결된 게시물에는 스포트라이트 제외를 프로그래밍 방식으로 변경하는 다른 방법도 나와 있습니다.

로그인시 실행할 스크립트를 추가하는 방법은 다음과 같습니다. /programming/6442364/running-script-upon-login-mac

행운을 빕니다!


편집 : bash 스크립트 및 plist 파일을 사용하는 메소드


먼저 시작 스크립트를 작성하십시오. 나는 하나를 만들기로 선택했다~/script.sh

실행 가능한지 확인하십시오 chmod +x ~/script.sh

스포트라이트에서 드라이브를 숨기려는 OS 용 스크립트

#!/bin/bash
flagLocation="/Volumes/DriveToHide"
flagRemoved=".ney_the_index"  # a new name

# if flag exists rename it.
if [ -a "$flagLocation/.metadata_never_index" ]; then 
    mv "$flagLocation/.metadata_never_index" "$flagLocation/$flagRemoved";
fi

드라이브를 색인화하려는 OS의 스크립트

#!/bin/bash
flagLocation="/Volumes/DriveToHide"
flagRemoved=".ney_the_index"

if [ -a "$flagLocation/$flagRemoved" ]; then
    mv "$flagLocation/$flagRemoved" "$flagLocation/.metadata_never_index"
fi

if [ ! -a "$flagLocation/$flagRemoved" ] || [ ! -a "$flagLocation/.metadata_never_index" ] ; then
    touch "$flagLocation/.metadata_never_index"
fi

plist 파일 만들기 ~/Library/LaunchAgents/com.user.loginscript.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
   <key>Label</key>
   <string>com.user.loginscript</string>
   <key>Program</key>
   <string>/Users/yourusername/script.sh</string>
   <key>RunAtLoad</key>
   <true/>
</dict>
</plist>

로드 및 언로드하여 테스트하십시오.

launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist

이것이 가장 좋은 방법 인 것 같습니다. 나는 어떤 방식으로 더 "네이티브 (native)"무언가를 기대하고 있었지만 이것은 상당히 신뢰할 만하다. 감사합니다.
Skeleton Bow

이것을 구현하려고하는 데 직면 한 문제에 대해 언급하고 싶습니다. rm명령을 사용하여 실행해야합니다 sudo. 게시 한 SO 링크의 첫 번째 방법을 사용하고 있습니다. 그것에 대한 제안이 있으십니까? 이를 극복하기 위해 launch daemon 방법을 사용해야합니까?
Skeleton Bow

약간 해키 솔루션으로 답변을 업데이트했습니다.
hapi

2
DriveToHide공백이 있으면 현재 작성된 스크립트 가 실패합니다. 테스트 할 경우 [ ... ]블로 빙 및 단어 분리를 방지하기 위해 변수를 큰 따옴표로 묶으십시오. 또는 [[ ... ]]테스트에 사용 하면 큰 따옴표가 필요하지 않습니다.
user3439894

좋은! 고맙습니다 user3439894. 귀하의 제안을 반영하여 답변을 업데이트했습니다.
hapi

2

새로운 답변에 대한 사과 (여기서 새로운 의견을 말할 수있는 담당자가 아님)

@ hapi-혼란 스러울 수 있지만 스크립트가 잘못된 방식입니까?

스포트라이트에서 드라이브를 숨기려는 OS 용 스크립트 : 이름 바꾸기 .metadata_never_index

드라이브를 색인화하려는 OS의 스크립트 : 작성 .metadata_never_index

.metadata_never_index볼륨에 존재 하면 Spotlight가이를 무시한다고 생각 했습니까?

감사


내 경험 즉 .metadata_never_index- 아니 전혀 맥 OS 10.13에 미치는 영향이 없습니다 superuser.com/questions/591406/...를 ...
익명

2

오늘 sudo touch /.metadata_never_index_unless_rootfs 은 각 드라이브의 루트 디렉토리에서를 사용하여 색인을 OS X 부팅 드라이브와 분리 할 수 있다는 것을 배웠습니다 . 이 .metadata-never-index드라이브는 부팅 할 때 드라이브를 재 인덱싱하지만 그렇지 않을 때는 드라이브를 색인화하지 않기 때문에 의 특수 버전입니다 .


-2

다른 대답은 좋은 방법이지만 실수로 문제를 일으킬 수 있으며 100 % 신뢰할 수는 없습니다. 더 나은 방법은 외부 OS에서 Spotlight보다 더 유연하기 때문에 Alfred 를 사용하는 것 입니다.


이를 위해 Alfred를 어떻게 사용 하시겠습니까?
Matt Sephton

좋은 질문. 내가 어떻게 기억했는지 바란다. 다른 답변에서 제안 된 제외 방법을 사용 하지 않고도 Alfred 검색에서 폴더를 제외 할 수있는 방법에 대해 이야기하고 있다고 생각 합니다.
Skeleton Bow
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.