Comment empêcher OS X d'écrire des fichiers Spotlight et Trash sur des cartes mémoire et des clés USB?


126

Lorsque vous connectez une clé USB à un Mac, OS X crée plusieurs fichiers cachés sur la clé, notamment un index Spotlight et un dossier Corbeille.

Exemple du terminal pour une clé USB "Sans titre":

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

Cela se produit même sur la carte mémoire xD de mon appareil photo. Ainsi, après avoir copié mes photos et les avoir supprimées de la carte, celle-ci est toujours pleine.

Est-il possible de désactiver cette option pour les cartes mémoire et USB, afin qu'OS X écrit ces fichiers sur le disque principal ou ne les écrit pas du tout?


Les commentaires ne sont pas pour une discussion prolongée; cette conversation a été déplacée pour discuter .
bmike

Réponses:


20

MISE À JOUR, mars 2018 Il semble que ma solution n'est plus valide. La solution qui fonctionne actuellement est proposée par @ElmerCat dans l'une des réponses ci-dessous.

Il suggère d'utiliser CleanMyDrive 2

Solution obsolète

Comme je sais que vous avez 2 choix:

  1. TinkerTool (gratuit)

texte alternatif

  1. BlueHarvest (commercial)

texte alternatif


1
OK merci. Espérait-on qu'il y ait un réglage intégré quelque part, mais au moins une solution est disponible.
Jg-Faustus

3
@Philip: Malheureusement, Tinkertool traite uniquement les fichiers .DS_Store en fonction de leur page de détail , ce qui signifie probablement que c'est le seul fichier caché pouvant être désactivé via la CLI. Les autres fichiers nécessitent des outils personnalisés. Mais BlueHarvest a l'air sympa et fait ce dont j'ai besoin. (
J'ai

1
en retard! les réponses ultérieures sont meilleures
Dima Tisnek

1
@ jg-faustus Non seulement Tinkertool traite uniquement les fichiers .DS_store, mais il ne le fait que pour les systèmes de fichiers réseau
lundi

2
Testé le Tinkertool ne fonctionne pas sur les clés USB (au moins 10.9)
pufferfish

106

Pour un volume monté particulier, comme un lecteur flash appelé yourUSBstickdans cet exemple, ces commandes suppriment les données cruelles existantes, arrêtent l'indexation Spotlight maintenant et à l'avenir, arrêtent la journalisation des événements connexes et désactivent la fonctionnalité Corbeille.

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 -

Vous voudrez peut-être conserver d'autres éléments inconnus que vous voudrez peut-être conserver, comme les fichiers doubles "._ *" d'Apple et d'autres fichiers Apple DS portant sur les icônes et le placement de la fenêtre.


8
Bien que cela puisse désactiver l'indexation, ces fichiers et répertoires seront toujours présents sur le volume (ce qui est la partie gênante en premier lieu), et si vous les supprimez, les fichiers .Spotlight * et .fseventd reviendront. En fait, .metadata_never_index est une entrée de plus dans la liste de fichiers par rapport au fichier usuel.
ShreevatsaR

1
+1, en fait, j'ai eu l'idée de me toucher les ordures et je suis allé ici pour une meilleure solution, mais avoir vu celle-ci ne pouvait pas résister à +1. Cela résout le vrai problème - empêcher l'audio de la voiture de lire des fichiers mis au rebut;)
Michael Krelin - hacker

+1 savait que cela existait, mais je dois toujours le trouver quand j'en ai besoin. Ceci est utile si vous avez plus d'accès au lecteur USB qu'au système OSX.
mlhDev

2
Merci, je ne savais pas à propos de "cd -". J'ai toujours poussé pushd / popd :).
studgeek

Qu'en est-il du répertoire ".DS_Store"? C'est toujours là. Une raison pour laquelle cela n'a pas été inclus dans la ligne "rm -rf"?
Marnix A. van Ammers

30

Pour que Spotlight n'indexe pas les volumes non système, ajoutez / Volumes à la liste de confidentialité dans Préférences Système> Spotlight.

/ Volumes est le point dans le système de fichiers où tous les disques non-système sont montés par défaut.

entrez la description de l'image ici


impossible d'ajouter / Volumes dans 10.8; Il est toutefois possible d'ajouter des volumes individuels un à un. Je soupçonne que c'est similaire àmdutil -i off /Volumes/xxx
Dima Tisnek

15
@qarma Il est très possible d'ajouter / Volumes dans 10.8 ou plus tard. Ouvrez simplement une fenêtre du Finder, appuyez sur Shift+ Command+ Gpour afficher la fenêtre "Aller au dossier ...", tapez /Volumes, puis faites glisser la petite icône de dossier située en haut de la fenêtre du Finder (à côté du mot "Volumes") dans le dossier. liste dans la capture d'écran ci
Chris Mukherjee

Je vais devoir essayer ça ...
Dima Tisnek

1
Vous pouvez ajouter /Volumes, cela ne fonctionne tout simplement pas.
Kenny

1
Sur mon ordinateur, le disque dur intégré est saturé /Volumes/Macintosh HD. Si cela marche, est-ce que cela n'arrêtera pas Spotlight d’indexer le disque dur ?
LarsH

17
  1. Insérez le lecteur USB.
  2. Accédez au Macintosh HD > Applications > Utilitiesterminal et ouvrez-le.
  3. À l'invite du terminal, tapez la commande suivante, en remplaçant path_to_volumepar le chemin réel:

    sudo mdutil -i off /path_to_volume

  4. Retour presse.

  5. Si un mot de passe vous est demandé, tapez votre mot de passe administrateur, puis appuyez sur Retour. Vous recevrez la réponse:

    /path_to_volume/: Indexing disabled for volume. sous Mac OS X 10.4 ou

    /path_to_volume: Indexing disabled. sous Mac OS X 10.5 ou ultérieur.

    Spotlight cessera immédiatement d'indexer le volume spécifié.

  6. Si vous utilisez Mac OS X 10.5 ou une version ultérieure, passez à l'étape 9.

  7. À l'invite du terminal, tapez la commande suivante, en substituant à nouveau le chemin correct:

    sudo mdutil -E /path_to_volume et appuyez sur Entrée

  8. Si un mot de passe vous est demandé, tapez votre mot de passe administrateur, puis appuyez sur Retour. Vous recevrez la réponse:

    /path_to_volume/: Volume index removed.

  9. À l'invite du terminal, tapez exitpuis appuyez sur Retour.
  10. Quittez le terminal.

Merci à thexlab.com , à la résolution des problèmes liés aux livres électroniques Mac OS X et à leur site Web pour une explication détaillée des raisons pour lesquelles d’autres méthodes fonctionnent.


1
Remarque sudo demande le mot de passe de l'utilisateur actuel
utilisateur151019

Cela a fonctionné pour moi. L'utilisation du disque par Spotlight est passée de 2 Go à 200 000. Le fait que Spotlight occupe une place si importante sur un disque vide est insensé . Je me demande si nous pouvons rassembler cette solution et un type de script de déclenchement basé sur l'USB, qui détecte le type de périphérique USB présent et exécute cette commande automatiquement. Des idées à ce sujet?
Otheus

15

Une autre façon de traiter les fichiers Spotlight (uniquement) consiste à ajouter ce volume à votre liste d'exclusion Spotlight. Branchez le périphérique et accédez au prefpane Spotlight dans les Préférences Système. Sélectionnez l'onglet Confidentialité. Maintenant, faites glisser ce volume de votre bureau vers la liste de confidentialité .. ou utilisez le bouton + en bas pour l’ajouter. Aucune indexation Spotlight ne se produira sur ce volume.


Malheureusement, les volumes semblent être retirés de la liste de confidentialité chaque fois qu'ils sont démontés. Il faudra donc répéter cette opération chaque fois que vous rebranchez votre carte mémoire ou votre clé USB.
LarsH

9

2017 décembre

Vous penseriez qu'après toutes ces années, Apple aurait intégré quelque chose dans le Finder pour résoudre ce problème. C'est toujours un problème très courant chez les personnes utilisant des disques USB ou des cartes SD pour lire des fichiers multimédias dans leur voiture ou un autre appareil.

Néanmoins, les développeurs ont comblé le vide avec de nombreuses applications approuvées par Apple. Les applications répertoriées dans les réponses précédentes étaient peut-être bonnes à l'époque, mais elles ne sont pas gérées pour fonctionner avec les versions modernes de macOS.

Je serais aussi un peu prudent d'installer quelque chose qui détiendra le contrôle total du système de fichiers, écrit par des développeurs non identifiés. Ne pas vouloir traiter avec l'App Store est une chose, mais ne pas vouloir s'enregistrer auprès d'Apple en tant que développeur en est une autre. De plus, quelque chose de l'AppStore a subi au moins un audit minimal par Apple et peut être retiré de votre ordinateur aussi facilement qu'il est installé.

Ainsi, chaque fois que vous lisez cette "réponse", il vous conseille de rechercher dans l'App Store quelque chose de mis à jour, bien révisé et gratuit.

TL; DR:

Mon choix le 20 décembre 2017 est "CleanMyDrive 2" sur l'App Store. Résout le problème, belle interface, totalement gratuit. (Offre des achats in-app d'icônes personnalisées. Sinon, tout fonctionne gratuitement.)

Demain, il y aura peut-être quelque chose de mieux, mais l'essentiel est le suivant: l'App Store propose des solutions simples et gratuites à la question originale mais persistante de jg-faustus, posée ici il y a plusieurs années - une question que j'avais moi-même aujourd'hui.

Donc, je m'excuse si cela ressemble plus à un coup de gueule qu'une réponse, mais en réalité, toutes les réponses précédentes étaient périmées et n'aboutissaient pas à une solution utile. Ne pas dire quelque chose amènerait plus de gens à perdre du temps à manipuler le terminal ou à installer des applications douteuses. Il suffit d'aller sur l' App Store - vous n'aurez pas à payer.


6

J'utilise la ligne de commande du terminal MacOS pour répertorier et supprimer tous ces fichiers et dossiers avant d'éjecter le périphérique du bureau. Pour certains fichiers, vous devrez peut-être exécuter la commande / bin / rm.


C'est ce que je fais aussi. Bien que ce soit encore mieux si je n'en avais pas besoin, j'examine les alternatives.
Jg-Faustus

À propos, l'appareil se trouve quelque part dans / Volumes / <name>
DerMike le

4

J'utilise Clean Eject (gratuit) et un service Automator personnalisé (toujours privé) afin de pouvoir attribuer un raccourci clavier pour nettoyer et éjecter un volume à l'aide de l'application.


Sans accès au service Automator, vous avez mentionné que cette réponse n'était pas très utile. Pouvez-vous partager le service aussi?
nohillside

La réponse est absolument utile - vous pouvez utiliser l'application sans l'action Automator. Si vous souhaitez ajouter une touche de raccourci spéciale pour Clean Eject, vous avez beaucoup d'options: Alfred, Keyboard Maestro. L'action Automator n'est pas essentielle, mais est utile. Je le téléchargerai quand je le pourrai pour: gingerbeardman.com/services
Matt Sephton

Le service que j'utilise pour nettoyer les volumes de recherche sélectionnés est désormais chargé par site (voir le lien ci-dessus).
Matt Sephton

Merci pour le téléchargement, rend la réponse beaucoup plus complète.
nohillside

4

Message de @Mike Leacy

et le commentaire de @ qarma:

Non, cela reste possible même sous OSX 10.9, mais vous devez maintenant effectuer quelques étapes supplémentaires:

1) Dans le Finder, cliquez sur Go puis sur Go To Folder ...

2) Tapez / Volumes et cliquez sur Go.

3) Une fenêtre du Finder s'ouvrira et devrait indiquer Volumes en haut.

Ceci est l'étape la plus importante:

4) À côté de la mention Volumes en haut de la fenêtre du Finder, une petite icône de dossier bleue apparaît. Cliquez et faites glisser cette icône à gauche dans votre panneau Favoris .

5) Vous aurez désormais accès à votre dossier Volumes où que vous soyez, y compris dans les paramètres Spotlight comme suggéré par Miles Leacy. (Chaque fois que vous en avez besoin, cliquez simplement sur le lien Favoris pour le sélectionner.)

J'espère que cela t'aides,

Meilleur,

Vlad :)

~ ~ ~ ~

Comment ajouter le dossier Volumes à vos Favoris afin de pouvoir y accéder dans les paramètres de Spotlight

~ ~ ~ ~

A quoi ça ressemble après avoir ajouté le dossier Volumes à la liste des exceptions Spotlight:

Notez en arrière-plan que vous pouvez voir mon message dans Safari. ;)

A quoi ça ressemble après avoir ajouté le dossier Volumes à la liste des exceptions Spotlight


1
FWIW, je pense que c'est une bonne réponse et qu'il n'est pas nécessaire que ce soit un commentaire. Je supprimerais cette partie et la laisser telle quelle.
Mark Edington

Le Mac HD étant un sous-dossier de volumes, ne désactive-t-il pas Spotlight sur le Mac HD?
LarsH

@LarsH Bonne question. Je n'aime pas les projecteurs et le désactive complètement sur mon mac aujourd'hui, alors je ne suis pas sûr. : 3
Vladimir

3

En fait, toucher le fichier .Trashes sera le meilleur moyen de résoudre votre problème principal car .Trashes est désormais un fichier au lieu d'un dossier. Cela signifie qu'Apple ne peut pas déplacer les fichiers dans le dossier .Trashes lorsque vous les supprimez et que votre lecteur n'est plus plein.

Une autre option consiste à appuyer sur Cmd-Opt-Shift-Backspace pour forcer le Finder à vider le contenu .Trashes de la carte avant de l'éjecter.

La première méthode est vraiment la meilleure car la seconde affecte tout le contenu de la corbeille sur tous les lecteurs.

Cependant, il semblerait d'après votre message que vous soyez davantage préoccupé par la pollution du lecteur par les différents fichiers de points. Si vous suivez les étapes mentionnées ci-dessus, vous économiserez de l'espace disque, mais au moins un fichier point sera créé.


3

MacOS fournit maintenant cet indicateur direct que vous pouvez basculer de Terminal:

defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true

1
Bonne réponse pour une partie de la question. Cela désactive le DSStore, mais la question portait spécifiquement sur les fichiers Corbeille et Spotlight, ce que votre solution (d'après ce que je peux lire) ne fait rien.
Otheus

2

Un moyen facile d’arrêter l’audio de ma voiture pour essayer de lire des fichiers Mac OS masqués consiste à les supprimer sous Windows OS. Copiez simplement votre musique MP3 sur la clé USB depuis iTunes. Échangez la clé dans le système d'exploitation Windows et sélectionnez Afficher les fichiers cachés à partir des options de dossier. Cela vous permettra ensuite de supprimer tous les fichiers cachés que votre fidèle Mac a placés sur votre clé USB, y compris ces fichiers .trashes embêtants. Enfin une utilisation pour Windows OS!


+1 C'est un peu fastidieux, mais bien sûr, pourquoi ne pas le faire, haha.
Vladimir

2

J'ai fini par utiliser une application gratuite " Hidden Cleaner ". Le lecteur MP3 de ma voiture essayait de lire. (MP3filename) .mp3 (fichiers MP3 creux et vides). Allez dans Macintosh HD dans la section Appareils du menu de gauche du Finder, faites glisser votre clé USB et déposez-la dans l'application Hidden Cleaner. Il va nettoyer les fichiers creux et laisser les vrais MP3 et éjecter votre clé USB.

Remarque: Ce n'est pas une solution permanente. Vous devez faire ci-dessus chaque fois que vous copiez des fichiers. Cela ne me dérange pas cependant.


Un autre programme similaire: Eject for Windows www011.upp.so-net.ne.jp/decafish/EjectForWindows/…
Vinicius Pinto

Quand il s’agit de jouer avec le système de fichiers, ce n’est pas une bonne idée de faire confiance à des développeurs non identifiés. Je dis juste.
ElmerCat

2

Vieille question, mais j'ai finalement découvert l' asepsie . Il s’agit d’un utilitaire open source qui résout ce problème séculaire en confinant tous les .DS_STORErépertoires au même endroit, par défaut. /usr/local/.dscage
Après l’installation et un redémarrage, plus de .DS_STORE sur les clés USB, avec l’avantage (pour certains d’entre nous) de ne pas avoir à désactiver l'indexation sur des disques externes. Depuis la version 1.4, il supporte également OS X Mavericks.

Mise à jour depuis le site Web d’Aepsis: "Avertissement: Asepsis n’est plus en développement et est pris en charge sous OS X 10.11 (El Capitan) et les versions ultérieures.


Cool! Je me demande comment ce programme gérera un plantage du système ou une charge extrême du processeur. En d'autres termes, je me demande si une désycronisation sera automatiquement gérée, ou devra-t-elle le faire vous-même? Automaticlly est bon parce que nous n'avons pas à nous en soucier, mais cela signifie également que le programme devra effectuer beaucoup plus de vérifications.
Vladimir

2

La plupart des solutions proposées ici consistent à "nettoyer les fichiers de données avant éjection", plutôt qu'à "empêcher la création de fichiers de données".

Dans ma recherche d’une solution gratuite pour l’ancien, j’ai essayé quelques options et j’ai choisi l’applecript ici: SuperUser: Quelqu'un at-il un script de terminal Mac pour supprimer les fichiers cachés? parce que cela me permet de voir exactement ce qui se passe en cours de route.

Notez dans mon commentaire sur cette réponse que j'ai fait une petite modification pour le faire fonctionner sous OSX 10.12.1. (Je ne republie pas la source dans ce cas, car cela semble être une question plutôt intéressante pour les liens).


2

La chose la plus stupide de tous les temps que je ne puisse pas simplement contribuer à la réponse de Metaxis. Mais il est facile de créer un script bash qui le gère automatiquement pour tous les dossiers de / Volumes (ou un dossier spécifique si vous le spécifiez). Devrait pouvoir l'invoquer avec Automator ou Applescript lorsqu'un dossier apparaît sous / Volumes, vous devez alors désactiver automatiquement l'indexation.

#!/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

J'ai trouvé cette application gratuite dans l'Apple App Store et je l'utilise, et cela a très bien fonctionné pour moi. Vous devez rechercher "cleanusbdrive" tous les mots sans les guillemets dans l'App Store.

C'est par José A. Jiménez Campos.



0

Actuellement, Cleanmydrive2 est disponible gratuitement sur l’app store et traite ce problème pour les utilisateurs jusqu’à la Sierra.


-1

Je travaille sur Sierra 10.12.3 dans Automator.

Tout d’abord, j’ai réalisé cette version du script: elle fonctionne de la même manière que celle de freefly42, c’est une façon différente d’écrire la même chose.

Pour traduire pour des bashistes non natifs, il s’agit:

S'il est exécuté avec un argument de ligne de commande, il essaie de voir si l'argument est un répertoire et si ce répertoire contient un fichier nommé ".disable_osx_metadata".

Si le fichier spécial n'est pas là, rien ne se passe. Ce lecteur est ignoré.

Si le fichier spécial est là, le script supprime toutes les métadonnées osx et crée quelques nouveaux petits éléments qui empêchent toute autre chose. Par exemple, la création d'un fichier nommé .Trashes empêche le système d'exploitation de créer un répertoire nommé .Trashes, puis d'écrire des fichiers.

S'il est exécuté sans arguments, il s'exécute une fois pour chaque répertoire de / Volumes.

Donc, si vous l'exécutez manuellement ou cliquez dessus, il vérifie tous les lecteurs connectés. Si vous créez un flux de travail dans Automator, Automator l'exécute chaque fois qu'un lecteur est connecté, uniquement pour ce lecteur.

#!/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"

Enregistrez sous "disable_osx_metadata", chmod 755, copiez-le dans / usr / local / bin.

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

Puis ouvrez Automator, Nouveau, Action de dossier

Ensuite, j’ai trouvé que même dans Sierra 10.12.3, vous POUVEZ toujours ajouter le répertoire / Volumes dans Automator, d’une manière non évidente.

Allez dans le Finder, Fichier, "Aller au dossier ...", écrivez manuellement "/ Volumes" et appuyez sur Entrée.

Maintenant, cela vous montre une fenêtre avec vos disques durs et usb, mais aucun dossier "/ Volumes" évident sur lequel cliquer. Mais la barre de titre indique "/ Volumes" et elle apparaît également au bas.

Vous pouvez faire glisser l'icône de dossier à côté de "/ Volumes", de la barre de titre ou du bas vers l'Automator, et la déposer dans "L'action de dossier reçoit les fichiers et les dossiers ajoutés à: [______]".

Faites glisser / Volumes de la barre de titre du Finder

Fermer le Finder.

Retour dans Automator: à gauche, faites défiler vers le bas et faites glisser "Obtenir le contenu du dossier" vers la droite et déposez-le.

Ensuite, à gauche à nouveau, faites défiler vers le bas et faites glisser "Run Shell Script" vers la droite et déposez-le ci-dessous "Obtenir le contenu du dossier".

Remplacez "Pass input:" par "comme arguments". Shell: [/ bin / bash] Passe l'entrée: [comme arguments]

Ensuite, faites glisser le script de / usr / local / bin dans la boîte de dialogue "Exécuter le script shell" afin qu'il indique "/ usr / local / bin / disable_osx_metadata".

Fichier, enregistrer, disable_osx_metadata.workflow

Processus d'Action d'Automator Folder Action

Pour référence, cela est enregistré dans: / Users / YOUR_NAME / Bibliothèque / Workflows / Applications / Actions sur les dossiers Si vous enregistrez quelque chose de mal, je pense que vous devez y accéder manuellement dans le Finder pour le supprimer.

Enfin, pour chaque nouveau lecteur USB que vous souhaitez protéger, vous devez créer un fichier nommé ".disable_osx_metadata" dans le dossier racine.

Vous pouvez le faire dans Terminal: $ touch / Volumes / NO \ NAME / .disable_osx_metadata

Ou conservez simplement un petit fichier texte avec un nom visible (sans point) et copiez-le à la racine de tout nouveau lecteur USB, puis renommez-le .disable_osx_metadata après l'avoir copié.

Ce lecteur est maintenant nettoyé à chaque fois que vous l'attachez à partir de maintenant.

Pas aussi propre que je le voudrais. Il faut polluer un peu le disque pour que le système d'exploitation ne le pollue pas davantage. Il semble impossible de faire en sorte que le système d'exploitation le laisse simplement tranquille et n'ajoute aucun fichier que vous n'avez pas demandé.

TODO: Ajoutez des fonctions d'activation / désactivation pour créer / supprimer le fichier de points.

TODO: Cela n’empêche pas les fichiers .DS_Store de tous les répertoires.

TODO: Est-il possible de conditionner le script et le fichier foo.workflow afin qu'un utilisateur puisse ignorer la plupart de ces instructions manuelles? Je vois qu'il y a une option "export" dans Automator qui crée une sorte de fichier de package.

TODO: Peut-être obsolète tout ce post. Ce flux de travaux AppleScript + Automator pourrait être mieux: https://superuser.com/questions/319553/does-anyone-have-a-mac-terminal-script-to-remove-hidden-files/814104#814104

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.