Come impedire a OS X di scrivere file Spotlight e Cestino su schede di memoria e chiavette USB?


126

Quando si collega una chiavetta USB a un Mac, OS X crea una serie di file nascosti sulla chiavetta, tra cui un indice Spotlight e una cartella Cestino.

Esempio dal terminale per una chiavetta USB "Untitled":

$ ls -a /Volumes/Untitled
.Spotlight-V100
.Trashes
._.Trashes
.disk
.fseventsd

Lo fa anche sulla scheda di memoria xD per la mia fotocamera, quindi dopo aver copiato le mie foto e averle cancellate dalla scheda, la scheda è ancora piena.

È possibile disattivarlo per USB e memory card, quindi OS X scrive questi file sul disco primario o non li scrive affatto?


I commenti non sono per una discussione estesa; questa conversazione è stata spostata in chat .
bmike

Risposte:


20

AGGIORNATO Marzo 2018 Sembra che la mia soluzione non sia più valida, la soluzione che funziona in questo momento è proposta da @ElmerCat in una delle risposte di seguito.

Sta suggerendo di usare CleanMyDrive 2

Soluzione obsoleta

Come so, hai 2 scelte:

  1. TinkerTool (gratuito)

testo alternativo

  1. BlueHarvest (commerciale)

testo alternativo


1
Ok grazie. Speravo che ci sarebbe stata un'impostazione integrata da qualche parte, ma almeno c'è una soluzione disponibile.
jg-faustus,

3
@Philip: Sfortunatamente Tinkertool tratta solo i file .DS_Store in base alla loro pagina dei dettagli , il che presumibilmente significa che questo è l'unico file nascosto che può essere disabilitato tramite la CLI - gli altri file richiedono strumenti personalizzati. Ma BlueHarvest ha un bell'aspetto e fa quello che mi serve. (Trovati ulteriori dettagli sul problema qui e qui )
jg-faustus,

1
risulti obsoleto! le risposte successive sono migliori
Dima Tisnek,

1
@ jg-faustus Non solo Tinkertool si occupa solo di file .DS_store ma lo fa solo per i file system di rete
nhed

2
Testato. Tinkertool non funziona su unità USB (almeno il 10.9)
pesce palla

106

Solo per un particolare volume montato - come un'unità flash chiamata yourUSBstickin questo esempio - questi comandi rimuoveranno la cruft esistente, interromperanno l'indicizzazione Spotlight ora e in futuro, arresteranno la relativa registrazione degli eventi e disabiliteranno la funzione Cestino.

mdutil -i off /Volumes/yourUSBstick
cd /Volumes/yourUSBstick
rm -rf .{,_.}{fseventsd,Spotlight-V*,Trashes}
mkdir .fseventsd
touch .fseventsd/no_log .metadata_never_index .Trashes
cd -

Altre cose sconosciute che potresti ancora vedere che probabilmente vorresti conservare, come i doppi file "._ *" di Apple e altre sequenze di Apple DS relative alle icone e al posizionamento delle finestre.


8
Sebbene ciò possa disabilitare l'indicizzazione, quei file e directory saranno comunque presenti sul volume (che è la parte fastidiosa in primo luogo) e se li elimini .Spotlight * e .fseventd torneranno. In effetti, .metadata_never_index è una voce in più nella lista dei file rispetto alla solita cruft.
ShreevatsaR,

1
+1, in realtà, mi è venuta l'idea che toccasse me stesso e sono andato qui per una soluzione migliore, ma avendo visto questo non poteva resistere al +1. Risolve il vero problema: fermare l'audio dell'auto dalla riproduzione di file
spazzati

+1 sapeva che esisteva, ma devo sempre trovarlo quando ne ho bisogno. Ciò è utile se si ha più accesso all'unità USB che al sistema OSX.
mlhDev

2
Grazie, non sapevo di "cd -". Ho ancora spinto pushd / popd :).
Studgeek,

Che dire della directory ".DS_Store"? È ancora lì. Qual è il motivo per cui non è stato incluso nella riga "rm -rf"?
Marnix A. van Ammers,

30

Per impedire a Spotlight di indicizzare volumi non di sistema, aggiungere / Volumi all'elenco Privacy in Preferenze di Sistema> Spotlight.

/ Volumes è il punto nel file system in cui tutti i dischi non di sistema sono montati per impostazione predefinita.

inserisci qui la descrizione dell'immagine


impossibile aggiungere / Volumi in 10.8; è tuttavia possibile aggiungere singoli volumi uno alla volta. Sospetto che sia simile amdutil -i off /Volumes/xxx
Dima Tisnek il

15
@qarma È possibile aggiungere / Volumi in 10.8 o versioni successive. Basta aprire una finestra del Finder, premere Shift+ Command+ Gper visualizzare la finestra "Vai alla cartella ...", digitare /Volumes, quindi trascinare l'icona della piccola cartella nella parte superiore della finestra del Finder (accanto alla parola "Volumi") nella elenco nello screenshot sopra
Chris Mukherjee,

Dovrò provarlo ...
Dima Tisnek,

1
Puoi aggiungere /Volumes, semplicemente non funziona.
Kenny,

1
Sulla mia macchina, il disco rigido integrato è attivo /Volumes/Macintosh HD, quindi se funzionasse, non impedirebbe a Spotlight di indicizzare l'HD?
LarsH,

17
  1. Inserisci l'unità USB.
  2. Passare a Macintosh HD > Applications > Utilitiese aprire Terminal.
  3. Al prompt del Terminale, digitare il comando seguente, sostituendolo path_to_volumecon il percorso reale:

    sudo mdutil -i off /path_to_volume

  4. Premi Invio.

  5. Se viene richiesta una password, digitare la password dell'amministratore, quindi premere Invio. Riceverai la risposta:

    /path_to_volume/: Indexing disabled for volume. in Mac OS X 10.4 o

    /path_to_volume: Indexing disabled. sotto Mac OS X 10.5 o successivo.

    Spotlight cesserà immediatamente di indicizzare il volume specificato.

  6. Se stai utilizzando Mac OS X 10.5 o successivo, vai al passaggio 9.

  7. Al prompt del Terminale, digitare il comando seguente, sostituendo nuovamente il percorso corretto:

    sudo mdutil -E /path_to_volume e premere Invio

  8. Se viene richiesta una password, digitare la password dell'amministratore, quindi premere Invio. Riceverai la risposta:

    /path_to_volume/: Volume index removed.

  9. Alla richiesta Terminale, digitare, exitquindi premere Invio.
  10. Esci dal terminale.

Grazie a thexlab.com , alla risoluzione dei problemi relativi agli e-book di Mac OS X e al loro sito Web per la spiegazione dettagliata del perché altri metodi funzionano.


1
Nota sudo richiede la password dell'utente corrente
user151019,

Questo ha funzionato per me. L'utilizzo del disco da Spotlight è passato da 2 GB a 200 k. Il fatto che Spotlight occupi così tanto utilizzo del disco su un disco vuoto è folle . Mi chiedo se siamo in grado di mettere insieme questa soluzione e un qualche tipo di script di trigger basato su USB, che rileva il tipo di dispositivo USB presente ed esegue questo comando automaticamente. Qualche idea su questo?
Otheus,

15

Un altro modo per gestire (solo i) file Spotlight è aggiungere quel volume all'elenco di esclusione Spotlight. Collega il dispositivo e vai al prefano Spotlight in Preferenze di Sistema. Seleziona la scheda Privacy. Ora trascina quel volume dal desktop verso l'alto nell'elenco della privacy .. o usa il pulsante + in basso per aggiungerlo. Non verrà più eseguita l'indicizzazione dei riflettori su quel volume.


Sfortunatamente, i volumi sembrano essere rimossi dall'elenco della privacy ogni volta che vengono smontati. Quindi questo dovrebbe essere ripetuto ogni volta che ricolleghi la scheda di memoria o la chiavetta USB.
LarsH

9

2017 dicembre

Penseresti che dopo tutti questi anni, Apple avrebbe inserito qualcosa nel Finder per affrontare questo. È ancora un problema molto comune per le persone che utilizzano dischi USB o schede SD per riprodurre file multimediali in auto o altri dispositivi.

Tuttavia, gli sviluppatori hanno riempito il vuoto con numerose app approvate da Apple. Le app elencate nelle risposte precedenti potrebbero essere state valide al momento, ma non sono state mantenute per funzionare con le versioni moderne di macOS.

Sarei anche un po 'diffidente nell'installare qualcosa che eserciterà il controllo totale del filesystem, scritto da sviluppatori non identificati. Non voler trattare con l'App Store è una cosa, ma non voler registrarsi con Apple come sviluppatore è un'altra cosa. Inoltre, qualcosa dall'AppStore ha subito almeno un controllo minimo da parte di Apple e può essere rimosso dal computer con la stessa facilità con cui è installato.

Quindi, ogni volta che ti capita di leggere questa "risposta", il tuo consiglio è di cercare nell'App Store qualcosa di aggiornato, ben recensito e gratuito.

TL; DR:

La mia scelta il 20 dicembre 2017 è "CleanMyDrive 2" dall'App Store. Risolve il problema, bella interfaccia, completamente gratuita. (Offre acquisti in-app di icone personalizzate. Altrimenti, tutto funziona gratuitamente.)

Domani, potrebbe succedere qualcosa di meglio, ma la linea di fondo è: l'App Store ha soluzioni facili e gratuite alla domanda originale ma duratura di jg-faustus, posta qui tanti anni fa - una domanda che mi sono posto oggi.

Quindi mi scuso se questa sembra più una sfilacciata che una risposta, ma in effetti tutte le risposte precedenti erano obsolete e non hanno portato a una soluzione utile. Non dire qualcosa porterebbe più gente a perdere tempo a giocherellare con il Terminale o installare app discutibili. Vai all'App Store : non dovrai pagare.


6

Uso la riga di comando del Terminale MacOS per elencare ed eliminare tutti questi file e cartelle prima di espellere il dispositivo dal desktop. Per alcuni file, potrebbe essere necessario eseguire il comando su / bin / rm.


Questo è quello che faccio anche io. Anche se sarebbe ancora meglio se non ne avessi bisogno, quindi sto studiando le alternative.
jg-faustus,

A proposito, il dispositivo si trova da qualche parte in / Volumes / <name>
DerMike

4

Uso Clean Eject (gratuito) e un servizio di automazione personalizzato (ancora privato) in modo da poter assegnare un tasto di scelta rapida per pulire ed espellere un volume utilizzando l'app.


Senza l'accesso al servizio Automator hai menzionato questa risposta in realtà non è molto utile. Puoi condividere anche il servizio?
Nohillside

La risposta è assolutamente utile: puoi utilizzare l'app senza l'azione di Automator. Se vuoi aggiungere un tasto di scelta rapida speciale per Clean Eject, hai molte opzioni: Alfred, Keyboard Maestro. L'azione Automator non è essenziale, ma è utile. Lo caricherò quando posso: gingerbeardman.com/services
Matt Sephton,

Il servizio che utilizzo per la pulizia di espulsione dei volumi di ricerca selezionati è ora caricato dal sito (vedi sopra per il link).
Matt Sephton,

Grazie per il caricamento, rende la risposta molto più completa.
Nohillside

4

@ Miles Leacy post

e il commento di @ qarma:

No, questo è ancora possibile anche in OSX 10.9, ma ora è necessario eseguire alcuni passaggi aggiuntivi:

1) Nel Finder fai clic su Vai quindi su Vai alla cartella ...

2) Digitare / Volumes e fare clic su Vai.

3) Si aprirà una finestra del Finder, che dovrebbe contenere Volumi in alto.

Questo è il passo più importante:

4) Accanto a dove si dice Volumi nella parte superiore della finestra del Finder, c'è una piccola icona blu della cartella. Fare clic e trascinare questa icona a sinistra nel pannello Preferiti .

5) Ora avrai accesso alla cartella Volumi ovunque, anche nelle impostazioni Spotlight come suggerito da Miles Leacy. (Ogni volta che ne hai bisogno, fai clic sul link Preferiti per selezionarlo.)

Spero che sia di aiuto,

Migliore,

Vlad :)

~ ~ ~

Come aggiungere la cartella Volumes ai Preferiti in modo che sia possibile accedervi nelle impostazioni Spotlight

~ ~ ~

Come appare dopo aver aggiunto la cartella Volumes all'elenco delle eccezioni Spotlight:

Si noti che in background è possibile visualizzare il mio post in Safari. ;)

Come appare dopo aver aggiunto la cartella Volumes all'elenco delle eccezioni Spotlight


1
FWIW, penso che questa sia una buona risposta e non debba essere un commento. Rimuoverei quella parte e la lascerei così com'è.
Mark Edington,

Dato che Mac HD è una sottocartella di Volumi, questo non disabilita Spotlight anche su Mac HD?
LarsH,

@LarsH Buona domanda. Non mi piacciono i riflettori, e al giorno d'oggi sono completamente disabilitati sul mio mac, quindi non ne sono sicuro. : 3
Vladimir

3

In realtà, toccare il file .Trash sarà il modo migliore per risolvere il problema principale poiché .Trash ora è un file anziché una cartella. Ciò significa che Apple non può spostare i file nella cartella .Trash quando li elimini e l'unità non è più piena.

Un'altra opzione è quella di premere Cmd-Opt-Shift-Backspace per forzare Finder a svuotare il contenuto .Trash sulla carta prima di espellerlo.

Il primo metodo è davvero il migliore in quanto il secondo influenza tutti i contenuti del Cestino su tutte le unità.

Tuttavia, dal tuo post sembra che tu sia più preoccupato per l'inquinamento del disco da parte dei vari file di punti. Se segui i passaggi sopra menzionati, risparmierai spazio su disco, ma verranno creati almeno un numero di punti.


3

MacOS ora fornisce questo flag diretto che puoi selezionare dal Terminale:

defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true

1
Buona risposta per parte della domanda. Questo disabilita il DSStore, ma la domanda riguardava specificamente i file Cestino e Spotlight, di cui la tua soluzione (da quello che posso leggere) non fa nulla.
Otheus

2

Un modo semplice per impedire all'audio della mia auto di provare a leggere i file nascosti di Mac OS è rimuoverli nel sistema operativo Windows. Copia semplicemente la tua musica MP3 sulla chiavetta USB da iTunes. Scambia lo stick nel sistema operativo Windows e seleziona Visualizza i file nascosti dalle opzioni della cartella. Ciò ti consentirà quindi di eliminare ogni singolo file nascosto che il tuo fidato Mac ha posizionato sulla tua chiavetta USB, inclusi quei fastidiosi file .trash. Finalmente un uso per il sistema operativo Windows!


+1 È un po 'noioso, ma certo, perché no, fa il lavoro ahah.
Vladimir

2

Ho finito per usare un'app gratuita " Hidden Cleaner ". Il lettore MP3 della mia auto stava tentando di leggere (nome file MP3) .mp3 (file mp3 vuoti e vuoti). Vai a Macintosh HD nella sezione Dispositivi nel menu a sinistra del Finder e trascina l'unità USB e rilasciala sull'app Hidden Cleaner. Pulirà i file vuoti e lascerà i veri MP3 e espellerà il tuo USB.

Nota: questa non è una soluzione permanente. Devi fare quanto sopra ogni volta che copi i file. Non mi dispiace però.


Un altro programma simile: Espelli per Windows www011.upp.so-net.ne.jp/decafish/EjectForWindows/…
Vinicius Pinto

Quando si tratta di giocare con il filesystem, non è una buona idea affidare il proprio computer a sviluppatori non identificati. Sto solo dicendo'.
ElmerCat

2

Vecchia domanda, ma alla fine ho scoperto l' asepsi . Questa è un'utilità open source che risolve questo secolare problema limitando tutte le .DS_STOREdirectory in un unico posto, per impostazione predefinita /usr/local/.dscage
dopo l'installazione e un riavvio, non più .DS_STORE su unità USB, con il vantaggio (per alcuni di noi) di non dover disabilitare l'indicizzazione su unità esterne. Dalla versione 1.4 supporta anche OS X Mavericks.

Aggiornamento dal sito Web di Aepsis: "Avvertenza: l'asepsi non è più in fase di sviluppo attivo e supportata da OS X 10.11 (El Capitan) e versioni successive.


Freddo! Mi chiedo come questo programma gestirà un crash del sistema o un carico estremo della CPU. In altre parole, mi chiedo se una discronizzazione scommetterà automaticamente gestita, o dovremo farlo da soli? L'automatismo è buono perché non dobbiamo preoccuparci, ma significa anche che il programma dovrà fare molto più controlli.
Vladimir

2

La maggior parte delle soluzioni qui sono "ripulisci i dotfile prima di espellerli", piuttosto che "impedire la creazione di dotfile".

Nella mia ricerca di una soluzione gratuita per la prima, ho provato alcune opzioni e ho optato per lo script di mele qui: SuperUser: Qualcuno ha uno script Mac Terminal per rimuovere i file nascosti? perché mi permette di vedere esattamente cosa sta succedendo lungo la strada.

Nota nel mio commento su quella risposta che ho fatto una piccola modifica per farlo funzionare su OSX 10.12.1. (Non sto ripubblicando la fonte in questo caso, poiché questa sembra una domanda piuttosto "link friendly").


2

La cosa più stupida di sempre che non posso semplicemente contribuire alla risposta di Metaxis. Ma è facile creare uno script bash che lo gestisca automaticamente per tutte le cartelle in / Volumes (o uno specifico se specificato). Dovresti essere in grado di invocarlo con Automator o Applescript quando una cartella appare in / Volumes, quindi hai la disabilitazione automatica dell'indicizzazione.

#!/bin/bash

if [ -n "$1" ]; then
    if [ ! -e "${1}/.metadata_never_index" ]; then
        echo "mdutil -i off $1"
        mdutil -i off "$1"
        cd "$1"
        rm -rf .{,_.}{fseventsd,Spotlight-V*,Trashes}
        mkdir .fseventsd
        touch .fseventsd/no_log .metadata_never_index .Trashes
    fi
else
#    echo "finding Volumes"
    find /Volumes -type d -maxdepth 1 -mindepth 1 -print0 | xargs -0 -n 1 "$0"
fi

0

Ho trovato questa App nell'App Store di Apple gratuitamente e la uso e ha funzionato benissimo per me. Devi cercare "cleanusbdrive" tutta una parola senza virgolette nell'App Store.

È di José A. Jiménez Campos.



0

Attualmente, Cleanmydrive2 è disponibile su app store gratuitamente e gestisce questo problema per utenti fino alla sierra alta.


-1

Ho ottenuto che funzioni su Sierra 10.12.3 in Automator.

Per prima cosa, ho realizzato questa versione dello script: funziona allo stesso modo di Freefly42, solo un modo diverso di scrivere la stessa cosa.

Per tradurre per i non madrelingua bash, ciò che fa è:

Se eseguito con un argomento da riga di comando, prova a vedere se l'argomento è una directory e se tale directory contiene un file denominato ".disable_osx_metadata".

Se il file speciale non è presente, non accade nulla. Quell'unità viene ignorata.

Se il file speciale è presente, lo script elimina tutti i metadati osx e crea alcuni piccoli nuovi elementi che impediscono qualsiasi altra cosa. Ad esempio, la creazione di un file denominato .Trashes impedisce al sistema operativo di creare una directory denominata .Trash e quindi di scrivere i file al suo interno.

Se eseguito senza argomenti, viene eseguito automaticamente una volta per ciascuna directory in / Volumes.

Quindi, se lo esegui manualmente o fai clic su di esso, controlla tutte le unità collegate. Se si crea un flusso di lavoro in Automator, Automator lo esegue ogni volta che un'unità è collegata, solo per tale unità.

#!/bin/bash
x=.disable_osx_metadata
[[ "$1" ]] || exec find /Volumes -type d -maxdepth 1 -mindepth 1 -exec $0 {} \;
[[ -e "$1/$x" ]] || exit 0
mdutil -i off "$1"
rm -rf "$1"/.{,_.}{fseventsd,Spotlight-V*,Trashes}
mkdir "$1/.fseventsd"
touch "$1/.fseventsd/no_log" "$1/.Trashes" "$1/$x"

Salva come "disable_osx_metadata", chmod 755, copia in / usr / local / bin.

$ cd Documents/disable_osx_metadata/
$ chmod 755 disable_osx_metadata
$ sudo cp disable_osx_metadata /usr/local/bin

Quindi apri Automatore, Nuovo, Azione cartella

Poi ho scoperto che anche in Sierra 10.12.3 puoi ancora aggiungere la directory / Volumes in Automator, in modo non ovvio.

Vai su Finder, File, "Vai alla cartella ...", scrivi manualmente in "/ Volumi" e premi Invio.

Ora questo ti mostra una finestra con le tue unità HD e USB, ma nessuna cartella "/ Volumes" ovvia su cui fare clic. Ma la barra del titolo dice "/ Volumes", e appare anche in fondo.

Puoi trascinare l'icona della cartella accanto a "/ Volumi", dalla barra del titolo o dal basso, sopra all'automatore e rilasciarla su "L'azione della cartella riceve file e cartelle aggiunti a: [______]"

Trascina / Volumi dalla barra del titolo del Finder

Chiudi Finder.

Indietro in Automator: a sinistra, scorrere verso il basso e trascinare "Ottieni contenuto cartella" a destra e rilasciarlo.

Quindi di nuovo a sinistra, scorrere verso il basso e trascinare "Esegui script shell" a destra e rilasciarlo sotto "Ottieni contenuto cartella".

Modifica "Passa input:" in "come argomenti". Shell: [/ bin / bash] Input di input: [come argomenti]

Quindi trascina lo script da / usr / local / bin nella casella sotto "Esegui script shell" in modo che sia scritto "/ usr / local / bin / disable_osx_metadata"

File, salvataggio, disable_osx_metadata.workflow

Flusso di lavoro di azione cartella automatore

Per riferimento, questo viene salvato in: / Users / YOUR_NAME / Library / Workflows / Applicazioni / Cartella Azioni Se salvi qualcosa di sbagliato, penso che devi navigare manualmente lì nel Finder per eliminarlo.

Infine, per ogni nuova unità USB che si desidera proteggere, è necessario creare un file denominato ".disable_osx_metadata" nella cartella principale.

Puoi farlo nel Terminale: $ touch / Volumes / NO \ NAME / .disable_osx_metadata

O semplicemente tenere un piccolo file di testo in giro con un nome visibile (nessun punto iniziale) e copiarlo nella radice di qualsiasi nuova unità USB e rinominarlo .disable_osx_metadata dopo la copia.

Quell'unità ora viene pulita ogni volta che lo colleghi da ora in poi.

Non pulito come vorrei. Devi inquinare un po 'l'unità, per dire al sistema operativo di non inquinare di più. Sembra che non ci sia modo di lasciare semplicemente il sistema operativo da solo e di non aggiungere alcun file che non è stato richiesto.

TODO: Aggiungi abilita / disabilita le funzioni per creare / rimuovere il file dot.

TODO: Questo non impedisce i file .DS_Store in ogni directory.

TODO: È possibile impacchettare lo script e il file foo.workflow in modo che un utente possa saltare la maggior parte di queste istruzioni manuali? Vedo che in Automator esiste un'opzione di "esportazione" che crea una sorta di file di pacchetto.

TODO: Forse obsoleto l'intero post. Questo flusso di lavoro di applecript + automator potrebbe essere migliore: https://superuser.com/questions/319553/does-anyone-have-a-mac-terminal-script-to-remove-hidden-files/814104#814104

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.