Como impedir que o OS X grave arquivos Spotlight e Lixeira em cartões de memória e pen drives?

126

Ao conectar um pendrive no Mac, o OS X cria vários arquivos ocultos no pendrive, incluindo um índice Spotlight e uma pasta Lixeira.

Exemplo do terminal para um pendrive "Sem título":

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

Ele ainda faz isso no cartão de memória xD da minha câmera. Assim, depois de copiar e excluir as fotos do cartão, o cartão ainda está cheio.

É possível desativar isso para cartões USB e de memória, para que o OS X grave esses arquivos no disco principal ou não os grave?

jg-faustus
fonte
Comentários não são para discussão prolongada; esta conversa foi movida para o bate-papo .
bmike

Respostas:

20

ATUALIZADO em março de 2018 Parece que minha solução não é mais válida, a solução que funciona no momento é proposta por @ElmerCat em uma das respostas abaixo.

Ele está sugerindo o uso do CleanMyDrive 2

Solução preterida

Como eu sei, você tem 2 opções:

  1. TinkerTool (grátis)

texto alternativo

  1. BlueHarvest (comercial)

texto alternativo

Am1rr3zA
fonte
1
OK obrigado. Esperava que houvesse uma configuração embutida em algum lugar, mas pelo menos houvesse uma solução disponível.
jg-faustus
3
@ Philips: Infelizmente, o Tinkertool lida apenas com arquivos .DS_Store de acordo com sua página de detalhes , o que presumivelmente significa que esse é o único arquivo oculto que pode ser desativado através da CLI - os outros arquivos precisam de ferramentas personalizadas. Mas o BlueHarvest parece legal e faz o que eu preciso. (Encontrado alguns mais detalhes sobre o assunto aqui e aqui )
jg-faustus
1
desatualizado! respostas posteriores são melhores
Dima Tisnek
1
@ jg-Faustus Não só trata apenas TinkerTool com arquivos .DS_Store mas fá-lo apenas para fileysystems rede
nhed
2
Testei. Não TinkerTool não funciona em drives USB (em 10,9 pelo menos)
baiacu
106

Para apenas um volume montado específico - como uma unidade flash chamada yourUSBstickneste exemplo - esses comandos removerão o cruft existente, interromperão a indexação do Spotlight agora e no futuro, interromperão o registro de eventos relacionados e desabilitarão o recurso Lixeira.

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 -

Outras coisas desconhecidas que você ainda verá que provavelmente deseja manter, como a Apple dobram os arquivos "._ *" e outros itens do Apple DS relacionados a ícones e posicionamento de janelas.

Metaxis
fonte
8
Embora isso possa desativar a indexação, esses arquivos e diretórios ainda estarão presentes no volume (que é a parte irritante em primeiro lugar) e, se você os excluir .Spotlight * e .fseventd voltarão. De fato, .metadata_never_index é mais uma entrada na lista de arquivos que o cruft usual.
ShreevatsaR
1
+1, na verdade, eu tive a ideia dele de me tocar nas lixeiras e fui aqui para uma solução melhor, mas, tendo visto essa, não resisti a +1. Ele resolve o problema real - parar de áudio do carro de reprodução de arquivos de lixeira;)
Michael Krelin - hacker de
+1 sabia que isso existia, mas sempre é necessário encontrá-lo quando eu precisar. Isso é útil se você tiver mais acesso à unidade USB do que ao sistema OSX.
mlhDev
2
Obrigado, eu não sabia sobre "cd -". Eu ainda tenho pressionado pushd / popd :).
Studgeek
E o diretório ".DS_Store"? Ainda está lá. Alguma razão pela qual isso não foi incluído na linha "rm -rf"?
Marnix A. van Ammers
30

Para impedir que o Spotlight indexe volumes que não são do sistema, adicione / Volumes à lista Privacidade em Preferências do sistema> Spotlight.

/ Volumes é o ponto no sistema de arquivos em que todos os discos que não são do sistema são montados por padrão.

insira a descrição da imagem aqui

Miles Leacy
fonte
impossível adicionar / Volumes em 10.8; é possível adicionar volumes individuais, um de cada vez. Eu suspeito que é parecido com:mdutil -i off /Volumes/xxx
Dima Tisnek
15
@ qarma É muito possível adicionar / Volumes na versão 10.8 ou posterior. Simplesmente abra uma janela do Finder, pressione Shift+ Command+ Gpara abrir a janela "Ir para a pasta ...", digite /Volumese arraste o pequeno ícone da pasta na parte superior da janela do Finder (ao lado da palavra "Volumes") para o lista na captura de tela acima
Chris Mukherjee 20/11
Vou ter que tentar de fora ...
Dima Tisnek
1
Você pode adicionar /Volumes, simplesmente não funciona.
Kenny #
1
Na minha máquina, o disco rígido interno está em /Volumes/Macintosh HD, portanto, se isso funcionasse, não impediria o Spotlight de indexar o HD?
LarsH
17
  1. Insira a unidade USB.
  2. Navegue para Macintosh HD > Applications > Utilitiese abra o Terminal.
  3. No prompt do Terminal, digite o seguinte comando, substituindo path_to_volumepelo caminho real:

    sudo mdutil -i off /path_to_volume

  4. Pressione retorno.

  5. Se for solicitada uma senha, digite sua senha de administrador e pressione retornar. Você receberá a resposta:

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

    /path_to_volume: Indexing disabled. no Mac OS X 10.5 ou posterior.

    O Spotlight imediatamente deixará de indexar o volume especificado.

  6. Se você estiver usando o Mac OS X 10.5 ou posterior, pule para a etapa 9.

  7. No prompt do Terminal, digite o seguinte comando, substituindo novamente o caminho correto:

    sudo mdutil -E /path_to_volume e pressione retornar

  8. Se for solicitada uma senha, digite sua senha de administrador e pressione retornar. Você receberá a resposta:

    /path_to_volume/: Volume index removed.

  9. No prompt do Terminal, digite exite pressione return.
  10. Saia do terminal.

Graças ao thexlab.com , seus e-books para solução de problemas do Mac OS X e seu site, para obter uma explicação detalhada de por que outros métodos funcionam.

Motosserra
fonte
1
Nota sudo pede a senha do usuário atual
user151019 16/02/2013
Isso funcionou para mim. O uso do disco pelo Spotlight passou de 2 GB para 200 k. O fato de o holofote ocupar tanto uso de disco em um disco vazio é insano . Gostaria de saber se podemos reunir essa solução e algum tipo de script de gatilho baseado em USB, que detecta qual tipo de dispositivo USB está lá e executa esse comando automaticamente. Alguma idéia sobre isso?
Otheus 30/09/16
15

Outra maneira de lidar com (apenas os) arquivos do Spotlight é adicionar esse volume à sua lista de exclusões do Spotlight. Conecte o dispositivo e vá para o painel Spotlight em Preferências do sistema. Selecione a guia Privacidade. Agora arraste esse volume da área de trabalho para a lista de privacidade .. ou use o botão + na parte inferior para adicioná-lo. Não haverá mais indexação de destaque nesse volume.

Harv
fonte
Infelizmente, os volumes parecem ser removidos da lista de privacidade sempre que são desmontados. Portanto, este teria que ser repetido cada vez que você ligar o seu cartão de memória ou stick USB novamente.
Larsh
9

2017 dezembro

Você pensaria que depois de todos esses anos, a Apple criaria algo no Finder para lidar com isso. Ainda é um problema muito comum as pessoas que usam discos USB ou cartões SD reproduzirem mídia em seus carros ou outros dispositivos.

No entanto, os desenvolvedores preencheram o vazio com vários aplicativos aprovados pela Apple. Os aplicativos listados nas respostas anteriores podem ter sido bons no momento, mas não foram mantidos para funcionar com versões modernas do macOS.

Eu também ficaria um pouco cauteloso ao instalar algo que exercerá o controle total do sistema de arquivos, escrito por desenvolvedores não identificados. Não querer lidar com a App Store é uma coisa, mas não querer se registrar na Apple como desenvolvedor é outra. Além disso, algo da AppStore passou por uma auditoria mínima da Apple e pode ser removido do seu computador tão facilmente quanto instalado.

Portanto, sempre que você ler esta "resposta", seu conselho é procurar na App Store algo atualizado, bem revisado e gratuito.

TL; DR:

Minha escolha em 20 de dezembro de 2017 é "CleanMyDrive 2" da App Store. Resolve o problema, interface adorável, completamente grátis. (Oferece compras no aplicativo de ícones personalizados. Caso contrário, tudo funciona de graça.)

Amanhã, algo melhor poderá surgir, mas o ponto principal é: a App Store tem soluções fáceis e gratuitas para a pergunta original, porém duradoura da jg-faustus, colocada aqui há muitos anos - uma pergunta que eu mesmo fiz hoje.

Portanto, peço desculpas se isso parece mais um discurso do que uma resposta, mas, de fato, todas as respostas anteriores estavam desatualizadas e não levaram a uma solução útil. Não dizer algo levaria mais pessoas a perder tempo brincando com o Terminal ou instalando aplicativos questionáveis. Basta ir à App Store - você não precisará pagar.

ElmerCat
fonte
6

Eu uso a linha de comando do MacOS Terminal para listar e excluir todos esses arquivos e pastas antes de ejetar o dispositivo da área de trabalho. Para alguns arquivos, talvez você precise sudo o comando / bin / rm.

hotpaw2
fonte
É o que eu também faço. Embora fosse ainda melhor se eu não precisasse, estou investigando as alternativas.
jg-faustus
A propósito, o dispositivo é encontrado em algum lugar em / Volumes / <name>
DerMike
4

Uso Ejetar Limpo (gratuito) e um Serviço Automator personalizado (ainda privado) para atribuir uma tecla de atalho para limpar e ejetar um volume usando o aplicativo.

Matt Sephton
fonte
Sem acesso ao Serviço de Automator, você mencionou que esta resposta não é realmente muito útil. Você também pode compartilhar o serviço?
Nohillside
A resposta é absolutamente útil - você pode usar o aplicativo sem a ação do Automator. Se você deseja adicionar uma tecla de atalho especial ao Clean Eject, você tem várias opções: Alfred, Keyboard Maestro. A ação do Automator não é essencial, mas é útil. Vou enviá-lo quando eu puder para: gingerbeardman.com/services
Matt Sephton
O serviço que eu uso para limpar ejetar volumes do localizador selecionado agora é carregado no site (veja o link acima).
precisa saber é o seguinte
Obrigado pelo upload, torna a resposta muito mais completa.
nohillside
4

Publicação de @ Miles Leacy

e comentário de @ qarma:

Não, isso ainda é possível, mesmo no OSX 10.9, mas você precisa executar algumas etapas extras agora:

1) No Finder, clique em Ir e clique em Ir para pasta ...

2) Digite / Volumes e clique em Ir.

3) Uma janela do Finder será aberta, e deve aparecer Volumes na parte superior.

Este e o passo mais importante:

4) Ao lado de onde se encontra Volumes na parte superior da janela do Finder, existe um pequeno ícone de pasta azul. Clique e arraste este ícone para a esquerda no painel Favoritos .

5) Agora você terá acesso à sua pasta Volumes em qualquer lugar, inclusive nas configurações do Spotlight, como sugerido por Miles Leacy. (Sempre que precisar, basta clicar no link Favoritos para selecioná-lo.)

Espero que isto ajude,

melhor,

Vlad :)

~ ~ ~

Como adicionar a pasta Volumes aos seus Favoritos, para que você possa acessá-la nas configurações do Spotlight

~ ~ ~

Como é a aparência depois de adicionar a pasta Volumes à lista de exceções do Spotlight:

Observe no fundo que você pode ver minha postagem no Safari. ;)

Como é a aparência depois de adicionar a pasta Volumes à lista de exceções do Spotlight

Vladimir
fonte
1
FWIW, acho que essa é uma boa resposta e não precisa ser um comentário. Eu removeria essa parte e a deixaria como está.
precisa saber é o seguinte
Como o Mac HD é uma subpasta de Volumes, isso também não desativa o Spotlight no Mac HD?
LarsH # 11/18
@LarsH Boa pergunta. Atualmente, não gosto de holofotes e o desativou completamente no meu mac, por isso não tenho certeza. : 3
Vladimir
3

Tocar efetivamente no arquivo .Trashes será a melhor maneira de resolver o seu problema principal, já que o .Trashes agora é um arquivo, e não uma pasta. Isso significa que a Apple não pode realocar os arquivos para a pasta .Trashes quando você os exclui e sua unidade não está mais cheia.

Outra opção é pressionar Cmd-Opt-Shift-Backspace para forçar o Finder a esvaziar o conteúdo .Trashes no cartão antes de ejetar.

O primeiro método é realmente o melhor, pois o segundo afeta todo o conteúdo da Lixeira em todas as unidades.

No entanto, parece que você está mais preocupado com a poluição da unidade pelos vários arquivos de pontos. Se você seguir as etapas mencionadas acima, economizará espaço em disco, mas haverá um mínimo de arquivos de pontos criados.

Timpraetor
fonte
3

O MacOS agora fornece esse sinalizador direto que você pode alternar no Terminal:

defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true
tj0719
fonte
1
Boa resposta para parte da pergunta. Isso desativa o DSStore, mas a pergunta era especificamente relativa aos arquivos Lixeira e Spotlight, sobre os quais sua solução (pelo que eu sei ler) não faz nada.
Otheus
2

Uma maneira fácil de parar o áudio do carro tentando ler arquivos ocultos do Mac OS é removê-los no sistema operacional Windows. Simplesmente copie sua música MP3 para o pendrive do iTunes. Troque o stick no sistema operacional Windows e selecione exibir arquivos ocultos nas opções da pasta. Isso permitirá que você exclua todos os arquivos ocultos que o seu confiável Mac colocou no seu pendrive, incluindo os arquivos .trashes irritantes. Finalmente, um uso para o sistema operacional Windows!

MacMad
fonte
+1 É um pouco tedioso, mas com certeza, por que não, ele faz o trabalho, haha.
Vladimir
2

Acabei usando um aplicativo gratuito " Hidden Cleaner ". O MP3 player do meu carro também estava tentando ler. (MP3filename) .mp3 (arquivos mp3 vazios e vazios). Vá para Macintosh HD na seção Dispositivos no menu esquerdo do Finder e arraste sua unidade USB e solte no aplicativo Hidden Cleaner. Ele irá limpar os arquivos ocos e deixar os MP3s reais e ejetar seu USB.

Nota: Essa não é uma solução permanente. Você precisa fazer o procedimento acima sempre que copiar arquivos. Eu não me importo.

Uygar Y
fonte
Outro programa semelhante: Ejetar para Windows www011.upp.so-net.ne.jp/decafish/EjectForWindows/…
Vinicius Pinto
Quando se trata de brincar com o sistema de arquivos, não é uma boa idéia confiar no seu computador para desenvolvedores não identificados. Estou só a dizer'.
ElmerCat 16/07
2

Pergunta antiga, mas eu finalmente descobri Asepsis . Isto é um utilitário de código aberto que resolve esse problema antigo, confinando todos os .DS_STOREdiretórios em um só lugar, por padrão /usr/local/.dscage
Após a instalação e uma reinicialização, não mais .DS_STORE em unidades USB, com a vantagem (para alguns de nós) de não ter que desativar a indexação em unidades externas. Desde a versão 1.4, ele também suporta o OS X Mavericks.

Atualização no site da Aepsis: "Aviso: a assepsia não está mais em desenvolvimento ativo e é suportada no OS X 10.11 (El Capitan) e posterior.

Carlo
fonte
Legal! Gostaria de saber como este programa irá lidar com uma falha do sistema ou carga extrema da CPU. Em outras palavras, eu me pergunto se uma discronização será apostada automaticamente ou será necessário fazer isso por você mesmo. Automaticamente é bom porque não precisamos nos preocupar com isso, mas também significa que o programa precisará fazer muito mais verificações.
Vladimir
2

A maioria das soluções aqui são 'limpar arquivos de pontos antes da ejeção', em vez de 'impedir a criação de arquivos de pontos'.

Na minha busca por uma solução gratuita para o primeiro, tentei algumas opções e resolvi o AppleScript aqui: Superusuário: Alguém tem um script do Mac Terminal para remover arquivos ocultos?porque me permite ver exatamente o que está acontecendo ao longo do caminho.

Observe no meu comentário sobre essa resposta que fiz uma pequena edição para fazê-la funcionar no OSX 10.12.1. (Não estou reposicionando a fonte nesse caso, pois essa parece uma pergunta bastante "amigável ao link").

ptim
fonte
2

O pior de tudo é que não posso simplesmente contribuir com isso para a resposta da Metaxis. Mas é fácil criar um script bash que lida com isso automaticamente para todas as pastas em / Volumes (ou um específico, se você especificar). Você deve poder invocá-lo com o Automator ou o Applescript quando uma pasta aparecer em / Volumes, para desativar a indexação.

#!/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
freefly42
fonte
0

Encontrei este aplicativo gratuitamente na Apple App Store e use-o, e funcionou muito bem para mim. Você precisa pesquisar "cleanusbdrive" em uma única palavra sem as aspas na App Store.

É de José A. Jiménez Campos.

compromisso especial
fonte
0

Atualmente, o Cleanmydrive2 está disponível gratuitamente na loja de aplicativos e lida com esse problema para usuários de alta serra.

Blurber
fonte
-1

Consegui fazer isso funcionar no Sierra 10.12.3 no Automator.

Primeiro, criei esta versão do script: Funciona da mesma forma que o freefly42, apenas uma maneira diferente de escrever a mesma coisa.

Para traduzir para falantes do bash não nativos, o que ele faz é:

Se executado com um argumento de linha de comando, ele tenta ver se o argumento é um diretório e se esse diretório contém um arquivo chamado ".disable_osx_metadata".

Se o arquivo especial não estiver lá, nada acontecerá. Essa unidade é ignorada.

Se o arquivo especial estiver lá, o script excluirá todos os metadados do osx e criará alguns pequenos itens novos que impedirão qualquer outra coisa. Por exemplo, a criação de um arquivo chamado .Trashes impede que o sistema operacional crie um diretório chamado .Trashes e, em seguida, grave arquivos nele.

Se executado sem argumentos, ele será executado uma vez para cada diretório em / Volumes.

Portanto, se você executá-lo manualmente ou clicar nele, ele verifica todas as unidades conectadas. Se você criar um fluxo de trabalho no Automator, o Automator executará sempre que uma unidade estiver conectada, apenas para essa unidade.

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

Salve como "disable_osx_metadata", chmod 755, copie para / usr / local / bin.

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

Em seguida, abra Automator, New, Folder Action

Então eu descobri que, mesmo no Sierra 10.12.3, você ainda pode adicionar o diretório / Volumes no Automator, de uma maneira não óbvia.

Vá para o Finder, File, "Go To Folder ...", escreva manualmente em "/ Volumes" e pressione Enter.

Agora isso mostra uma janela com suas unidades HD e USB, mas nenhuma pasta "/ Volumes" óbvia para clicar. Mas a barra de título diz "/ Volumes" e também aparece na parte inferior.

Você pode arrastar o ícone da pasta ao lado de "/ Volumes", da barra de título ou da parte inferior, para o Automator e soltá-lo em "A ação da pasta recebe arquivos e pastas adicionados a: [______]"

Arrastar / Volumes da Barra de Título do Finder

Feche o Finder.

De volta ao Automator: à esquerda, role para baixo e arraste "Obter conteúdo da pasta" para a direita e solte-o.

Em seguida, à esquerda novamente, role para baixo e arraste "Executar script de shell" para a direita e solte-o abaixo de "Obter conteúdo da pasta".

Altere "Passar entrada:" para "como argumentos". Shell: [/ bin / bash] Passe a entrada: [como argumentos]

Em seguida, arraste o script de / usr / local / bin para a caixa em "Executar script do shell", para que ele diga "/ usr / local / bin / disable_osx_metadata"

Arquivo, salvar, desativar_osx_metadata.workflow

Pasta de automação Ação Fluxo de trabalho

Para referência, isso é salvo em: / Usuários / YOUR_NAME / Biblioteca / Fluxos de trabalho / Aplicativos / Ações de pasta Se você salvar algo errado, acho que você deve navegar manualmente lá no Finder para excluí-lo.

Finalmente, para cada nova unidade USB que você deseja proteger, é necessário criar um arquivo chamado ".disable_osx_metadata" na pasta raiz.

Você pode fazer isso no Terminal: $ touch / Volumes / NO \ NAME / .disable_osx_metadata

Ou apenas mantenha um pequeno arquivo de texto com um nome visível (sem ponto inicial) e copie-o para a raiz de qualquer nova unidade USB e renomeie-o como .disable_osx_metadata após a cópia.

Essa unidade agora é limpa sempre que você a anexar a partir de agora.

Não é tão limpo quanto eu gostaria. Você precisa poluir um pouco a unidade, para dizer ao sistema operacional para não poluí-la mais. Parece que não há como fazer com que o SO simplesmente o deixe em paz e não adicione nenhum arquivo que você não pediu.

TODO: adicione funções de habilitar / desabilitar para criar / remover o arquivo de ponto.

TODO: Isso não impede os arquivos .DS_Store em todos os diretórios.

TODO: É possível empacotar o script e o arquivo foo.workflow para que um usuário possa pular a maioria dessas instruções manuais? Vejo que existe uma opção de "exportação" no Automator que cria algum tipo de arquivo de pacote.

TODO: Possivelmente obsoleto todo esse post. Esse fluxo de trabalho do AppleScript + Automator pode ser melhor: https://superuser.com/questions/319553/does-anyone-have-a-mac-terminal-script-to-remove-hidden-files/814104#814104

Brian White
fonte