Um localizador de duplicatas verifica seu Mac e oferece um número: 40 GB de duplicatas, prontas para serem removidas. Você os exclui, abre Sobre este Mac e o espaço livre aumentou 2 GB.
Nada falhou. Os arquivos eram duplicados. A estimativa ainda estava errada, porque no APFS dois arquivos podem conter os mesmos bytes sem conter a mesma quantidade de armazenamento.
A versão curta: um scanner duplicado mede o tamanho dos arquivos. O espaço livre depende dos blocos. No APFS, esses dois números param de corresponder assim que clones ou links físicos estão envolvidos.
Resposta rápida
- Um clone é um arquivo separado que compartilha seus blocos com o original, portanto, a exclusão de um lado libera apenas o que divergiu.
- Um link físico é um segundo nome para um inode, portanto, excluir um nome não libera nada.
lse o Finder informam o tamanho total de cada nome, que é exatamente o que um scanner baseado em tamanho adiciona.ls -liexpõe links físicos por meio da contagem de links; clones são invisíveis para ferramentas padrão.- A medida honesta é o espaço livre antes e depois da exclusão, obtido com
df -h /System/Volumes/Data. - Os instantâneos locais do Time Machine podem conter os blocos de arquivos que você já excluiu, portanto, o espaço retorna mais tarde, e não imediatamente.
O que um scanner duplicado realmente mede
Cada localizador de duplicatas funciona em dois estágios. Ele agrupa arquivos que podem corresponder, geralmente por tamanho, e depois confirma a correspondência lendo o conteúdo ou comparando hashes. Ambos os estágios se preocupam com os bytes dentro do arquivo.
O armazenamento funciona um nível abaixo. Um nome de arquivo aponta para um inode, um inode aponta para blocos e o contador de espaço livre rastreia os blocos. No momento em que dois nomes compartilham os mesmos blocos, a soma dos tamanhos dos arquivos deixa de descrever o disco.
Três arranjos que parecem idênticos a um scanner
Uma cópia verdadeira. Dois arquivos, dois inodes, dois conjuntos de blocos. Exclua qualquer um deles e o disco retornará ao tamanho total. Isto é o que todos presumem que estão olhando.
Um clone. O APFS cria clones quando você pressiona Duplicar no Finder, quando você executacp -ce quando um aplicativo chamaclonefile. O clone é um arquivo real com seu próprio inode, mas seus ponteiros de dados fazem referência aos blocos originais. As gravações em ambos os lados são copy-on-write: os blocos alterados são gravados separadamente, os blocos intocados permanecem compartilhados. Um clone que nunca foi editado não custa quase nada, e excluí-lo não retorna quase nada.
Um link físico. Um inode com duas entradas de diretório. Não existe nenhum segundo arquivo, apenas um segundo nome. A remoção de um nome diminui a contagem de links e mantém os dados no lugar. O disco devolve espaço quando o sobrenome vai.
Um scanner baseado em conteúdo vê os mesmos bytes em todos os três casos. A menos que verifique a camada do sistema de arquivos, ele relatará a mesma economia para todos os três.
Por que a estimativa é alta
A camada de relatório é o problema e é mais antiga que o APFS. O Finder mostra o tamanho total de um clone e de cada link físico, assim comols -l. Nenhum deles informa que o armazenamento é compartilhado. Um scanner que soma tamanhos de arquivos herda esse erro diretamente, e quanto mais seu fluxo de trabalho depende de duplicatas do Finder e cópias com reconhecimento de clones, maior fica a lacuna.
duse comporta melhor de uma maneira específica. Em uma única execução, ele conta um inode uma vez, portanto, uma pasta cheia de links físicos informa um total realista. Os clones ainda são contados duas vezes, porque os clones são inodes separados.
O resultado é uma estimativa que pode estar errada em uma ordem de magnitude em um Mac que contém projetos de vídeo, renderizações exportadas ou imagens de máquinas virtuais, que são exatamente os arquivos que as pessoas clonam em vez de copiar.
Verifique antes de confiar
Encontre links físicos. A segunda coluna dels -li é a contagem de links.
ls -li ~/Movies/big.mov
# 12345678 -rw-r--r-- 2 chama staff 4294967296 Aug 18 09:12 big.mov
# ^ link count 2: another name points at the same data
Qualquer coisa acima1 significa que excluir esse nome não libera nada até que os outros nomes também desapareçam.
Meça a economia real. Reserve espaço livre antes e depois no volume de dados.
df -h /System/Volumes/Data # before
# delete the duplicates
df -h /System/Volumes/Data # after
A diferença é o único número que descreve o seu disco. Tudo impresso antes da exclusão é uma previsão.
Espere que os clones permaneçam invisíveis. Não há comando compatível que responda “este arquivo é um clone” em um sistema macOS padrão. É precisamente por isso que uma estimativa de poupança merece um nível de confiança em vez de um total confiável.
Excluído e o espaço ainda não retornou
Dois mecanismos atrasam o resultado mesmo quando as duplicatas eram reais.
O Time Machine mantém instantâneos locais no disco de inicialização, e um instantâneo contém os blocos de arquivos que existiam quando foi obtido. Exclua uma duplicata de 20 GB e esses blocos permanecerão alocados ao instantâneo até que ele expire. O macOS relata isso como espaço purgável e o recupera automaticamente quando o disco fica apertado. Liste o que existe com:
tmutil listlocalsnapshots /
O Lixo é o caso mais simples e pega as pessoas com mais frequência. Os arquivos na Lixeira ainda ocupam blocos. Esvazie-o e meça.
Qual é a aparência de um relatório duplicado honesto
StorageRadar trata a estimativa como uma reclamação que deve sobreviver à revisão, portanto, o fluxo de trabalho é construído em torno de três regras.
Confirme a correspondência byte por byte. Os candidatos são agrupados por tamanho, selecionados com um SHA-256 parcial em três blocos e só então comparados com um SHA-256 completo. O inode, o dispositivo e o tamanho são revalidados antes de qualquer ação, portanto, um arquivo que foi alterado durante a verificação não pode ser removido com base em evidências obsoletas.
Anexar incerteza ao número. A economia física estimada é anulável, carrega um valor de confiança e lista os motivos pelos quais poderia ser menor, incluindo clones APFS e links físicos. Um grupo duplicado que compartilha blocos é relatado como um grupo que liberará menos do que parece.
Nunca deixe um grupo sem um guardião. A etapa de aplicação é bloqueada se sua seleção remover todas as cópias, e as remoções são executadas por simulação e simulação antes de qualquer movimento, com Lixeira e uma pequena janela de desfazer como padrão.
Os arquivos somente na nuvem também permanecem intactos. Um arquivo sem dados não é baixado para hash, a menos que você permita, porque materializar 200 GB de arquivos do iCloud para compará-los não é uma limpeza.
De onde vêm as duplicatas reais
As ferramentas com reconhecimento de clones reduzem silenciosamente a quantidade de desperdício genuíno em um Mac moderno, por isso é útil ver onde as duplicatas ainda aparecem como cópias completas:
- Downloads que chegaram duas vezes abaixo
file.zipefile (1).zip. - Exportações e renderizações escritas junto ao projeto e depois copiadas para uma pasta de entrega.
- Importações de câmeras e telefones executadas duas vezes em bibliotecas diferentes.
- Pastas do projeto copiadas para um diretório de backup no mesmo disco, que é uma cópia, não um backup.
- Arquivos descompactados duas vezes em destinos diferentes.
Essas são cópias comuns com seus próprios blocos, e remover o extra retorna o tamanho original.
A ordem que funciona
- Digitalize e deixe a ferramenta confirmar duplicatas por conteúdo, não por nome ou tamanho.
- Leia a estimativa de poupança como um intervalo e verifique se a ferramenta admite armazenamento partilhado.
- Grave espaço livre com
df -h /System/Volumes/Data. - Exclua pela Lixeira, guarde uma cópia por grupo e esvazie a Lixeira.
- Meça novamente e trate a diferença como verdade.
Se a segunda medição o decepcionar, os arquivos foram armazenados em armazenamento compartilhado, e não desperdiçados. Nada foi perdido e o disco já era menor do que sugeria o relatório.
Perguntas frequentes
Por que a exclusão de duplicatas quase não liberou espaço no meu Mac?
As cópias provavelmente eram clones ou links físicos. No APFS dois arquivos podem compartilhar os mesmos blocos de armazenamento, portanto, a remoção de um deles libera apenas os blocos diferentes. O scanner contou o tamanho total de ambos os arquivos porque é isso que o sistema de arquivos informa para cada nome.
O que é um arquivo clone APFS?
Um clone é um arquivo separado com seu próprio inode que aponta para os mesmos dados do original. As gravações em ambos os lados são cópia na gravação, portanto, o par custa uma cópia de armazenamento até que o conteúdo divirja. O comando Duplicar do Finder e cp -c criam clones.
Qual a diferença entre um link físico e um clone?
Um link físico é outro nome para o mesmo inode, portanto, há um objeto de arquivo com duas entradas de diretório. A exclusão de um nome nunca libera armazenamento enquanto outro nome ainda aponta para ele. ls -li mostra a contagem de links e qualquer valor acima de 1 significa que existem outros nomes.
O APFS desduplica meus arquivos automaticamente?
Não. O APFS compartilha blocos apenas quando um clone é criado explicitamente, pelo Finder, por cp -c ou por um aplicativo que chama clonefile. Dois arquivos que contêm bytes idênticos ainda ocupam duas cópias de armazenamento.
Como posso medir quanto espaço uma limpeza realmente liberou?
Registre o espaço livre antes e depois da exclusão com df -h /System/Volumes/Data e compare. A estimativa impressa por qualquer localizador de duplicatas é uma previsão e no APFS a previsão pode estar errada em ambas as direções.
Por que o espaço livre não retornou mesmo após a exclusão de duplicatas reais?
Os instantâneos locais do Time Machine mantêm os blocos de arquivos excluídos até que sejam reduzidos, de modo que o espaço apareça como purgável em vez de livre. Liste-os com tmutil listlocalsnapshots / e aguarde a redução automática ou espaço livre explicitamente.