Minha limpeza de 200 GB no iCloud usando JavaScript
(andykong.org)- Quando o armazenamento do iCloud se aproximou do limite de 200 GB e só as fotos passaram a ocupar cerca de 127 GB, foi tentada uma alternativa ao upgrade para 1 TB: encontrar e apagar manualmente vídeos grandes
- No Apple Photos e na web do iCloud não existe ordenação por tamanho de arquivo, e apps de terceiros também mostravam como 0 B as fotos descarregadas para o iCloud, o que dificultava usá-las como critério de limpeza
- Aproveitando o fato de que o selo de duração dos vídeos no iCloud Photos Web é um elemento HTML
video-text-badge, foi usado JavaScript para localizar vídeos longos e destacá-los com uma borda vermelha - Depois de baixar e apagar vídeos com mais de 30 segundos, os arquivos baixados somavam cerca de 7 GB, mas o espaço usado no iCloud caiu aproximadamente 55 GB, uma diferença inesperada
- Vídeos novos em 4K quase batiam entre tamanho de arquivo e variação mostrada no iCloud, mas vídeos antigos pareciam ocupar mais espaço no iCloud do que o arquivo real, então vídeos antigos grandes podem ser a prioridade na limpeza
Selecionando vídeos longos na web do iCloud
- Depois do alerta de armazenamento da Apple, começou a busca por uma alternativa, já que subir de 200 GB para 1 TB aumentaria o custo em mais de 3 vezes
- A maior parte do armazenamento era de fotos, ocupando cerca de 127 GB, mas nem o Apple Photos nem o navegador do iCloud tinham função para ordenar fotos por tamanho de arquivo
- Apps que mostravam fotos duplicadas ou o tamanho de arquivos de vídeo também exibiam como 0 B as fotos descarregadas para o iCloud, então não ajudavam muito na limpeza real
- O processo foi ir para
Photos -> Media Types -> Videosno site do iCloud e reduzir o zoom da tela ao máximo para exibir muitos vídeos de uma vez - Partindo da ideia de que, se o selo de duração de cada vídeo fosse um elemento HTML, daria para pesquisar e filtrar com JavaScript, foi escrito um código para destacar vídeos longos
- A classe do selo de duração é
video-text-badge - O script encontra os selos na página, ordena com base no tempo de reprodução e destaca os itens acima de um certo limite
- Como o iCloud carrega apenas os elementos visíveis na tela, o script roda repetidamente com um temporizador para também processar os itens que entram ao rolar a página
- A classe do selo de duração é
- O modo de uso é abrir o console JavaScript na página do iCloud e colar o gist completo
- Como resultado, vídeos com mais de 20 segundos passaram a aparecer com uma caixa vermelha, facilitando selecionar vários vídeos grandes, baixá-los e depois apagá-los
Mudança no armazenamento após apagar e os dois experimentos
- Quando o script foi usado para remover todos os vídeos do iCloud com mais de 30 segundos, os vídeos baixados somavam cerca de 7 GB, mas o armazenamento usado no iCloud caiu aproximadamente 55 GB
- O conjunto completo de vídeos baixados ocupava 8 GB em disco
- O uso do iCloud caiu de 199 GB para 143 GB
- No primeiro experimento, foi enviado um vídeo 4K com muito movimento para observar a reação do armazenamento do iCloud
- O arquivo enviado tinha 281 MB
- Depois do upload, o uso do iCloud ficou em 145,33 GB
- Após baixar e apagar, o arquivo continuava com 281 MB
- Depois da exclusão, o uso do iCloud apareceu como 145,6 GB, então a diferença mostrada ficou em cerca de 270 MB
- No segundo experimento, foi escolhido entre vídeos antigos um vídeo curto que o iCloud mostrava como um arquivo grande
- O iCloud mostrava esse vídeo como 128 MB
- O arquivo baixado tinha 47 MB
- Antes de apagar, o uso do iCloud era 145,29 GB e, depois, 145,12 GB, uma queda de cerca de 170 MB
- Apagar cerca de 7 GB em arquivos liberou mais de 7 vezes esse valor em armazenamento, e vídeos antigos grandes pareciam ter uma ocupação de armazenamento maior no iCloud do que o tamanho real do arquivo
- A causa não foi confirmada, mas o resultado final foi recuperar mais de 50 GB de espaço no iCloud e ficar com um pequeno script em JavaScript para repetir o processo
1 comentários
Opiniões no Hacker News
Como o Photos.app não mostra o tamanho do arquivo, pensei em criar uma extensão para o Photos.app ou um app separado que encontrasse arquivos grandes
Mas a API não parecia expor “tamanho do arquivo”, e pelo menos não encontrei uma forma simples
Vejo “foto” ou “vídeo” mais como uma visualização que mostra o “objeto de foto ou vídeo” subjacente. Mesmo que você corte um vídeo, o vídeo original inteiro continua lá, e parece que só ao exportar é que um arquivo recortado menor de fato passa a existir
Então acho que é por isso que os tamanhos de arquivo parecem diferentes. Além disso, disseram que alguém criou um AppleScript para consultar o tamanho dos arquivos: https://discussions.apple.com/docs/DOC-250000422
Fiquei curioso sobre em qual API você estava procurando o “tamanho do arquivo”
Consegui obter os dados de tamanho do Photos.app com a API PhotoKit: https://alexwlchan.net/2023/finding-big-photos/
Testei apenas na minha biblioteca, com cerca de 26 mil itens, mas foi útil como indicador para encontrar os maiores itens. Ainda assim, não verifiquei se exportar um vídeo de 1 GB reduz o uso do iCloud em 1 GB
Por isso, uma foto recém-importada que aparece como uma única miniatura na biblioteca pode, na prática, ter 5 MB ou 50 MB
Isso também explica por que o armazenamento do iPhone fica sempre perto do limite, mesmo quando é gerenciado de forma tão obsessiva
osxphotos query --min-size 100MB --add-to-album "Big Files"Encontra todas as fotos e vídeos maiores que 100 MB e os adiciona ao álbum “Big files”
Para mais detalhes, veja
osxphotos query --help; para abrir a documentação no navegador, useosxphotos docs. A propósito, fui eu que criei a ferramentaPode ser um bug, mas em alguns casos também é possível que o iCloud esteja armazenando discretamente várias versões do mesmo arquivo. A Apple faz coisas parecidas com outros arquivos de mídia
O último exemplo é interessante:
“O iCloud diz que o vídeo tem 128 MB, mas ao baixá-lo o vídeo real tinha 48 MB e, ao apagá-lo, o espaço livre aumentou cerca de 170 MB”
Isso sugere que o iCloud não está apenas mostrando incorretamente o tamanho do arquivo do exemplo. Se você apagasse um arquivo de 128 MB, o espaço do iCloud deveria liberar cerca de 128 MB, mas na prática liberou um espaço próximo aos 176 MB, que é a soma do tamanho exibido, 128 MB, com a versão baixada, 48 MB. Se o iCloud mostra o espaço livre arredondando em unidades de 10 MB, parece bater bem
No fim, você fica cada vez mais preso a algum serviço de armazenamento e paga uma assinatura recorrente com base no volume total armazenado, mas quase não tem informações sobre como otimizar esse armazenamento. Do ponto de vista de um consumidor que quer permanecer em uma faixa fixa de custo ou reduzir a relação armazenamento/custo, dá a impressão de que só resta ficar parado e continuar pagando mais
A estratégia de negócios moderna da indústria de tecnologia é se esconder atrás da complexidade. Os custos são complexos demais para serem entendidos, ou exporiam informações internas demais para concorrentes, e assim por diante. Mas, quando a empresa precisa verificar se está operando acima do custo, de algum jeito ela calcula essas métricas. Quando o consumidor tenta entender, de repente é complexo demais
O problema é que a tecnologia muitas vezes de fato cresce até uma escala complexa demais, e os executivos sabem disso, então vira uma desculpa bastante eficaz. E, convenientemente, é exatamente nesse ponto que concentram investimentos e aplicam margem
O arquivo cortado era menor do que o tamanho exibido pelo iCloud, mas, ao escolher baixar o original não modificado, o tamanho coincidiu com o tamanho exibido pelo iCloud
Portanto, ao sincronizar fotos com o iCloud, não são apenas arquivos individuais que são sincronizados, mas o contêiner “Photos Library” gerenciado pelo app Photos
Se você adicionar arquivos individuais diretamente pelo Finder ou pelo app Files, os tamanhos coincidem exatamente no iCloud e no sistema de arquivos local
Quando você compra um disco rígido ou pendrive USB, pode usar uma certa quantidade de GB como quiser. Se colocar um arquivo de 1 GB, o espaço livre diminui 1 GB. Dependendo do sistema de arquivos, pode perder alguns KB em metadados, mas a escolha do sistema de arquivos é do usuário, não imposta pelo dispositivo de armazenamento
Mesmo que o controlador NAND use alguns MB da área de overprovisioning para armazenar a tabela de mapeamento de blocos, ou duplique dados por conveniência, o usuário não é cobrado por essa área de overprovisioning
Aqui, eles estão vendendo um dispositivo de armazenamento acessado por HTTP e, quando você grava um arquivo de 1 GB, fazem replicação/conversão etc. para conveniência deles e cobram também pelo armazenamento dessas cópias que o usuário não pediu. Isso é novo e inesperado
Transformei essa ideia/solução em um script TamperMonkey/Greasemonkey
Também adicionei uma função para “ocultar” todos os elementos que não atendem aos critérios
https://github.com/seffignoz/icloudcleanup
Esse é um dos motivos pelos quais eu faço self-hosting. Não confio na clareza nem na transparência dos provedores de nuvem. Mesmo que soluções self-hosted sejam muito menos estáveis, menos seguras e tenham desempenho inferior, acho que provavelmente não trocaria
Pessoalmente, uso o immich. É uma solução bem completa, com apps para iOS/Android, componentes de servidor e opções de sincronização/backup
https://immich.app/
O Google faz isso. Em https://one.google.com/storage e https://photos.google.com/quotamanagement, ele ajuda você a encontrar bem o que excluir e, no fim, a estrutura parece feita para você se cansar de apagar coisas e comprar mais armazenamento
Pelo que sei, o iCloud armazena os originais em qualidade total e baixa para o celular versões otimizadas de qualidade inferior
Nas configurações do iPhone, em
Apple ID > iCloud > Photos, há a opção “Optimise iPhone Storage”, que vem ativada por padrãoA descrição dessa opção diz que, se o espaço no celular estiver acabando, fotos e vídeos em resolução total são automaticamente substituídos por versões menores para o dispositivo, e que as versões em resolução total podem ser baixadas do iCloud a qualquer momento
Isso parece bastante razoável
Isso é sobre o armazenamento do celular que você vê em Settings > Manage storage, e não tem relação com o armazenamento em nuvem
Texto interessante. Também precisei subir meu plano do iCloud por um problema parecido, então talvez, do ponto de vista da Apple, corrigir isso não seja uma prioridade alta
Quando você fotografa em RAW+JPEG, o Apple Photos agrupa as duas imagens. Não é uma prática tão rara entre entusiastas de fotografia, e é útil porque permite alternar facilmente entre RAW e JPEG sem encher a biblioteca com um monte de fotos quase duplicadas
Mas, por causa dessa forma de agrupamento e do design do sistema de arquivos descrito no texto, parece impossível separar facilmente os dois e apagar apenas o RAW. Depois de alguns anos, ficam arquivos RAW enormes nos quais nunca mais vou mexer, mas não posso apagá-los porque quero manter os JPEGs, que são muito menores
O caminho mais fácil parece ser exportar os originais, apagar da biblioteca e depois importar de volta apenas os JPEGs, mas isso faria perder anos de metadados acumulados na biblioteca
Por isso não resta outra opção a não ser subir o plano
Se você está falando de recursos adicionais, como reconhecimento facial, o app não processaria tudo de novo depois que os JPEGs fossem reimportados?
osxphotos export /path/to/export --has-raw --skip-raw --exiftoolIsso exporta todas as imagens que têm um par RAW, mas pula o componente RAW, e usa o exiftool(https://exiftool.org/) para gravar metadados como palavras-chave nos arquivos JPEG exportados. Depois, você pode importá-los de volta arrastando para o Photos ou executando
osxphotos import /path/to/export/*Os comandos export e import têm muitas outras opções para controlar diretórios de exportação etc. Use
osxphotos help exportouosxphotos docspara abrir a documentação no navegador. Para constar, eu sou o autor do osxphotosAo executar File/Export Unmodified Originals, parece que ele exporta RAW+HEIC e um arquivo sidecar separado com metadados. Depois, ao retirar o arquivo RAW e importar o HEIC, dizem que o arquivo sidecar de metadados também é importado automaticamente
Mas as edições são perdidas. Ainda assim, aparentemente dá para “copy edits” de alguma forma. Para alguém técnico, parece possível automatizar esse processo com AppleScript
Mas é trabalhoso sem necessidade e deveria ser um recurso integrado ao Photos.app. Como isso ajuda a empurrar planos mais caros do iCloud, parece claro que a prioridade é baixa
Surpreendentemente, antes do feriado recebi da Apple um alerta de armazenamento parecido, e decidi baixar todas as fotos/vídeos para o meu servidor de mídia em vez de deixá-los no iCloud
Não há uma forma fácil e intuitiva de baixar um arquivo do iCloud. Estou fazendo isso aos poucos, usando várias máquinas e dispositivos
O problema das mudanças recentes da Apple é que ela aumenta os preços sem muito motivo. Vamos continuar tirando fotos e gravando vídeos, e, por causa das tecnologias e recursos mais recentes, o tamanho dos arquivos inevitavelmente só vai aumentar
Funciona de modo parecido com o Google Takeout. Em um Mac, iPhone, iPad ou PC, faça login na página da conta do Apple ID em appleid.apple.com, vá para “Data & Privacy” e selecione “Manage Your Data and Privacy”
Na página seguinte, vá em “Get a copy of your data” e selecione “Get started”
https://github.com/icloud-photos-downloader/icloud_photos_downloader
Se necessário, ele também baixa fotos do iCloud e consegue converter formatos. A cada poucos dias envio as fotos novas para o NAS para manter sempre uma cópia local, e essas cópias também são copiadas todas as noites para o Backblaze B2
Graças à conversão de formatos, consigo manter as fotos em pares HEIC+JPG, tendo tanto o original quanto uma versão mais fácil de usar
O que eu queria mesmo é uma ferramenta que fizesse a mesma coisa com o iCloud Drive. Guardo várias coisas lá, e me incomoda não haver uma forma razoável de fazer backup. O método recomendado pela Apple (https://support.apple.com/en-us/HT204055) deixa bastante a desejar
O que mais odeio é o estranho degrau de planos que pula de 200 GB para 2 TB. Não há como pagar incrementalmente por 500 GB ou 1 TB, que seriam ideais para muitas famílias
Em uma era em que armazenamento virou commodity, a cobrança deveria ser por GB usado
O que consome grande parte do meu armazenamento no iCloud são as versões em vídeo “live” das fotos. Elas ocupam mais espaço do que as fotos acompanhadas de um pedacinho curtíssimo de movimento
O único método que encontrei até agora é baixar os arquivos localmente, apagá-los do iCloud, excluir os vídeos locais e subir de volta apenas as imagens estáticas restantes
É demorado e tosco, e durante o processo fico com medo de apagar algo ou perder alguma coisa importante
Fico me perguntando se existe uma ferramenta que automatize esse processo oferecendo algum nível de controle de edição, para identificar e preservar as poucas imagens “live” que eu realmente quero guardar
Será que eu li direito?
Se isso for um fenômeno disseminado, poderia ser visto como a Apple inflando os números para induzir upgrades, e talvez até acabar em processo, não?
Não sou especialista jurídico
Quando você adiciona uma foto ou vídeo, o app Fotos analisa o item e armazena vários metadados necessários para o funcionamento do app, incluindo o histórico de edições. No fim, isso é sincronizado com o iCloud
A Apple talvez ainda esteja usando no iCloud algum formato antigo de sistema de arquivos. Ele existe há bastante tempo, e talvez eles não tenham se preocupado em mudar o formato de armazenamento. Também é possível que imagens/vídeos de contas antigas estejam em drives “antigos”