Trabalho com dezenas de milhares de arquivos JPEG de 20 kB em lotes que somam gigabytes. Quando tento excluir um lote antigo, o Windows 10 tem uma taxa de exclusão muito baixa, que às vezes até cai para zero por algum motivo:
Isso é apenas um fato da vida do hardware em que estou ou há algumas dicas e truques que eu poderia tentar para acelerar esse processo de exclusão?
Pela imagem, parece que você está excluindo os arquivos pelo Explorer, que é o método mais lento possível.
O que você pode fazer para melhorar:
Exclua os arquivos usando Shift+ Delpara que os arquivos excluídos não sejam movidos para a Lixeira (sem recuperação possível)
Emita a exclusão de dentro de um prompt de comando usando um comando semelhante a (use
del /?
para ver todos os parâmetros):Não sei por que o Explorer é tão lento, mas você pode considerar colocar cada lote de imagens em um volume de sistema de arquivos separado e formatar rapidamente o volume para excluí-los. O Windows 10 tem suporte nativo para montar arquivos como volumes de disco . A velocidade da reformatação é independente do que está no volume, pois ignora o sistema de arquivos existente e apenas grava um novo.
Dezenas de milhares de arquivos de 20K não parecem muitos gigabytes. Se o tamanho total de todos os lotes ativos for menor que sua RAM física, você também pode colocá-los em discos RAM (usando, por exemplo, ImDisk ), ainda formatando ou desmontando o volume para excluí-los. Mesmo a exclusão recursiva comum no disco RAM pode ser muito mais rápida, dependendo do que está causando a lentidão. Obviamente, isso não é uma opção se você precisar que os arquivos sobrevivam a uma reinicialização.
Uma desvantagem de reformatar para excluir é que você precisa ser um administrador elevado. Outra é que você pode acidentalmente formatar o volume errado, mas realmente qualquer abordagem para exclusão em massa de arquivos corre o risco de excluir os errados. Se você der aos volumes rótulos descritivos
TempJpeg1
, formatá-los provavelmente é tão à prova de erros quanto excluir um diretório enorme da linha de comando.Desative qualquer proteção antivírus/antimalware em tempo real que você tenha, pelo menos durante esta operação. Isso inclui o Windows Defender. Também qualquer proteção anti-ransomware (como oferecido por alguns programas de backup).
A proteção em tempo real geralmente possui ganchos nas operações de arquivo e é historicamente conhecida por desacelerar drasticamente qualquer operação que envolva um grande número de arquivos.
Se você sentir necessidade, poderá reativá-los após a conclusão da exclusão.
Executar isso como um comando será muito mais rápido. Iniciar
cmd
e executarIsso removerá a pasta e todos os seus arquivos e subdiretórios nela, sem espalhar a tela com cada nome de arquivo que está excluindo.
Crie uma partição por lote, digamos 10 GB ou mais, quando terminar com um determinado lote, formate rapidamente a partição. Todos os arquivos desapareceram em questão de segundos.
Lidando com perfis de roaming, já vi isso bastante. Na minha experiência, enviar qualquer tipo de comando de exclusão não é tão rápido quanto usar Robocopy para /MIR uma pasta vazia para o destino. Não tenho nenhum dado bruto ou métrica real que seja mais rápido do que qualquer uma das opções já mencionadas, mas é consideravelmente mais rápido do que usar o shell do Explorer.
Basta criar um novo diretório vazio ou fazer referência a um diretório vazio atual e executar o seguinte comando:
Você vai querer LOG ao usar MT, definitivamente há um atraso mensurável ao exibir a saída na tela.
Usando /MT:128 como uma opção, ele irá maximizar a quantidade de arquivos que pode 'excluir' de uma só vez.
Observe também que, se esta for sua primeira vez com o Robocopy, você deve fazer uma simulação com o sinalizador /L:
Em seguida, verifique os logs e certifique-se de que as ações correspondam ao que você deseja.
Referências:
Para adicionar às respostas fornecidas, o motivo pelo qual as operações de exclusão demoram tanto é devido ao tipo de disco rígido que você está usando. Em um de seus comentários, você afirma que está usando um disco rígido mecânico e a quantidade de IOPS que eles podem executar é muito pequena em comparação com os SSDs. A Wikipedia tem uma lista da quantidade aproximada de IOPS que as unidades mecânicas e de estado sólido podem executar em seu site .
O que basicamente está acontecendo é que o sistema operacional está informando ao disco rígido para apagar os metadados do arquivo na tabela de partição, o que o remove da visualização (ainda está lá, mas o sistema operacional não sabe mais como acessá-lo). É basicamente uma gravação muito pequena no disco rígido (está gravando 0s nele), então é um IOP rápido, que pode fazer muito mais do que o que está listado no Wiki, já que o Wiki está listando gravações aleatórias e contínuas.
O que você deve ter em mente agora é que o Explorer tenta jogar bem com tudo o mais em execução no sistema enquanto está excluindo, o que pode ser lento. O
del
comando, por outro lado, não tenta ser legal e exclui o mais rápido possível.A atualização para um SSD ajudaria no seu trabalho, pois o IOPS normalmente é medido em milhares e as unidades mecânicas são medidas em centenas. Você também pode tentar usar uma unidade flash para ver se isso ajuda; no entanto, seus resultados seriam altamente dependentes da unidade que você usa. Se você tiver RAM (e não se importar com o risco de perder as imagens), poderá criar uma unidade de RAM e usá-la. Eu pessoalmente uso o ImDisk Virtual Disk Driver , (sem afiliação), com grande sucesso e é gratuito.
Eu tive exatamente esse problema com alguns testes automatizados que criaram e excluíram milhares de arquivos para cada execução de teste.
Aqui está o que eu fiz para obter um bom desempenho.
Sempre exclua a pasta inteira e evite a lixeira. Se você estiver fazendo isso manualmente, use a linha de comando.
Você pode converter parte da sua memória em uma unidade de RAM? Comprei RAM extra e funcionou perfeitamente porque os arquivos deveriam ser excluídos como parte do meu teste. (Uma solução melhor são as unidades RAM dedicadas com bateria, mas elas são muito caras.)
A gravação em unidades SSD de 1ª e 2ª geração fica mais lenta com o tempo e elas eventualmente se tornam inutilizáveis. A execução de um "comando Trim" de baixo nível corrige isso, embora nem todas as combinações de SO/Hardware suportem o Trim. Eventualmente, precisei comprar novos SSDs porque o meu havia sido reescrito muitas vezes. (Obviamente, meu teste estava matando minhas unidades SSD baratas. Levei um tempo para descobrir isso.)
Se você estiver usando um HDD, desfragmente a unidade regularmente.
Boa sorte. Levei muitos meses e alguns SSDs, seguidos de RAM extra, para encontrar uma estratégia que funcionasse para mim, então sinto sua dor.
Além das outras ótimas respostas, gostaria de compartilhar alguns truques com você:
del *.*
del.
.Agora facilite sua vida:
echo Y | del.
A exclusão de muitas entradas de diretório levará mais tempo do que a exclusão de um único diretório do tamanho da rede. Ao excluir muitos arquivos, são necessários muitos comandos em vez de um único quando um único arquivo é excluído.
Agora, quando um arquivo grande é excluído, o mapeador de arquivos é instruído a desalocar a memória desse arquivo grande, mas os 1s e 0s do arquivo não são redefinidos. O mapeador é apenas informado de que é livre para escrever coisas novas sobre os antigos 1s e 0s. Basicamente, é um comando que leva tempo para limpar todas as alocações de memória do arquivo fragmentado. Quando você exclui um milhão de arquivos pequenos, está enviando um milhão de comandos para o mapeador, que deve fazer um de cada vez.
Portanto, a solução é usar um software para limpar uma unidade de arquivos excluídos e os 1s e 0s deixados para trás. Levará um único comando para limpar o espaço. Use o software somente se achar que os arquivos não precisam ser recuperados posteriormente.