Como impedir que o iCloud e o Dropbox bloqueiem a ejeção da unidade
Os serviços de sincronização na nuvem são conhecidos por impedir a ejeção de unidades externas no Mac. Veja por que razão eles prendem as suas unidades e como contornar o problema.
Fechou todas as aplicações. Guardou tudo. Clica em ejetar e o macOS diz que a unidade ainda está em utilização. Executa o lsof e vê bird, cloudd ou Dropbox na lista. Um serviço de sincronização na nuvem está a manter a sua unidade como refém.
Esta é uma das causas mais comuns e menos compreendidas de falhas de ejeção no Mac. Os serviços de sincronização na nuvem correm constantemente em segundo plano e são desenhados para monitorizar ficheiros à procura de alterações. Essa monitorização significa handles de ficheiros abertos e handles de ficheiros abertos significam que a sua unidade não ejetará.
Porque é que os serviços de sincronização bloqueiam a ejeção
Os serviços de sincronização na nuvem funcionam observando pastas à procura de alterações. Quando um ficheiro é criado, modificado ou eliminado, o serviço deteta-o e sincroniza a alteração com a nuvem. Para detetar estas alterações, o serviço mantém handles de ficheiros abertos ou utiliza observadores de eventos do sistema de ficheiros nos diretórios que monitoriza.
O problema ocorre quando qualquer um dos caminhos monitorizados existe na sua unidade externa. Isto pode acontecer de várias formas:
Armazenou explicitamente uma pasta de sincronização na unidade. Talvez tenha movido a sua pasta do Dropbox para a unidade externa por motivos de espaço, ou mantém uma pasta de projeto lá que é partilhada através do iCloud Drive.
Uma aplicação criou um ficheiro na unidade que um serviço de sincronização reivindicou. Algumas aplicações guardam ficheiros temporários, caches ou metadados de projeto em qualquer volume onde estejam a trabalhar.
O Spotlight indexou a sua unidade e um serviço de sincronização apanhou os dados do índice. Isto é indireto, mas acontece.
iCloud especificamente
O daemon de sincronização do iCloud no macOS chama-se bird (sim, a sério). Também verá o cloudd a gerir algumas operações de sincronização. Estes processos correm como serviços do sistema e reiniciam automaticamente se os encerrar.
Se o bird estiver a bloquear a sua unidade, está a monitorizar um ficheiro ou pasta nesse volume. Os gatilhos comuns incluem:
- Secretária e Documentos no iCloud: Se tiver esta funcionalidade ativa e a sua unidade externa aparecer como uma localização no Finder, o iCloud pode indexar caminhos relacionados com ela.
- Pré-visualização e QuickLook: Abrir um ficheiro da sua unidade externa na Pré-visualização pode criar referências de ficheiros recentes sincronizados com o iCloud.
- Pages, Numbers ou Keynote: Estas aplicações guardam automaticamente no iCloud por predefinição. Se abriu um documento da sua unidade externa, a aplicação pode manter uma ligação entre o ficheiro local e uma referência do iCloud.
Para verificar se o iCloud é o responsável pelo bloqueio:
lsof /Volumes/NomeDaSuaUnidade | grep -i bird
lsof /Volumes/NomeDaSuaUnidade | grep -i cloudd
Dropbox especificamente
O Dropbox é ainda mais agressivo na monitorização de ficheiros. Nas versões modernas do macOS, o cliente do Dropbox utiliza a estrutura File Provider da Apple (a abordagem antiga de extensão de kernel foi descontinuada no macOS 12.3) para monitorizar as operações do sistema de ficheiros em tempo real.
Se a sua pasta do Dropbox ou qualquer pasta sincronizada pelo Dropbox estiver na sua unidade externa, o Dropbox manterá ligações persistentes com esse volume. Mesmo ficheiros que terminaram a sincronização há muito tempo podem ter handles de ficheiro do Dropbox neles para fins de monitorização.
Também pode ver o processo fileproviderd da Apple a manter ficheiros abertos em nome do Dropbox. Este é o daemon do sistema que gere todas as extensões do File Provider, incluindo Dropbox, OneDrive e Google Drive. Pode criar handles de ficheiros adicionais nos volumes que esses serviços estão a monitorizar.
A abordagem mais fiável com o Dropbox: encerre a aplicação Dropbox completamente antes de ejetar. Clique no ícone do Dropbox na barra de menus, clique na sua fotografia de perfil e selecione Encerrar. Depois de ejetar a unidade, volte a abrir o Dropbox.
Google Drive e OneDrive
A aplicação de secretária do Google Drive (Drive para Computador) cria uma unidade virtual que pode interagir com as suas unidades externas através de operações de ficheiro. Se copiou ficheiros entre o Google Drive e a sua unidade externa, o cliente do Drive pode manter referências.
O OneDrive comporta-se de forma semelhante ao Dropbox, com monitorização de ficheiros em segundo plano. É geralmente menos agressivo a manter handles de ficheiros, mas ainda pode bloquear a ejeção.
Ambos os serviços podem ser pausados ou encerrados através dos seus ícones na barra de menus antes de ejetar.
O fluxo de trabalho prático
Se trabalha regularmente com ficheiros em unidades externas e utiliza serviços de sincronização na nuvem, crie o hábito de pausar a sincronização antes de ejetar.
Para o iCloud, não existe um botão de pausa fácil, mas pode desativar temporariamente o iCloud Drive em Definições do Sistema > Apple ID > iCloud > iCloud Drive. Isto é disruptivo, no entanto.
Para o Dropbox, pause a sincronização através do ícone na barra de menus. Clique no ícone do Dropbox, clique no seu perfil e selecione “Pausar sincronização”.
Para o Google Drive, clique no ícone do Drive na barra de menus e selecione “Pausar sincronização”.
Depois de pausar, aguarde alguns segundos para que os handles de ficheiros abertos fechem e, em seguida, ejete a unidade.
Prevenir o problema
A abordagem mais limpa é nunca armazenar pastas sincronizadas na nuvem em unidades externas. Mantenha as pastas de sincronização no armazenamento interno do seu Mac e utilize unidades externas para dados que não precisam de ser sincronizados.
Se tiver de manter conteúdo sincronizado numa unidade externa, crie uma separação clara. Coloque os ficheiros sincronizados numa pasta e os ficheiros não sincronizados noutra. Quando precisar de ejetar, saberá qual o serviço de sincronização a pausar.
Evite abrir ficheiros da sua unidade externa com aplicações que guardam automaticamente no iCloud (Pages, Numbers, Keynote, Pré-visualização). Ou, no mínimo, feche essas aplicações e dê-lhes um momento para libertarem os handles de ficheiros antes de ejetar.
Quando pausar não chega
Por vezes pausou a sincronização, encerrou as aplicações e a unidade continua sem ejetar. O serviço de sincronização deixou um handle de ficheiro antigo que persiste mesmo após a pausa.
Pode forçar a libertação destes handles matando o processo específico:
kill $(lsof -t /Volumes/NomeDaSuaUnidade)
Isto mata todos os processos que utilizam a unidade. É agressivo mas eficaz.
O Ejecta gere isto de forma mais cirúrgica. Identifica exatamente quais os processos que estão a prender a sua unidade, incluindo daemons de sincronização na nuvem, e permite-lhe encerrá-los individualmente. Em vez de matar tudo o que está ligado à unidade, pode visar apenas o processo bird ou apenas o auxiliar do Dropbox que está a causar o problema. É particularmente útil quando não tem a certeza de qual dos vários serviços de sincronização é o culpado.
A sincronização na nuvem e as unidades externas não têm de estar em conflito. Apenas precisa de visibilidade sobre o que se passa nos bastidores.
Se prefere não utilizar o Terminal todas as vezes, o Ejecta mostra-lhe exatamente qual o processo que está a bloquear o seu disco — e permite-lhe encerrá-lo com um clique, direto da sua barra de menus.
Comprar Agora — $9.99