Trash extremamente lento ubuntu 16.04 quando usado para arquivos grandes

1

Estou escrevendo a pergunta para evitar confusão ... No Ubuntu 16.04 eu tive que deletar cerca de 6500 arquivos. 50% eram imagens RAW e 50% eram arquivos .XML associados. Totalizando 72 GB. Eu estou usando o Samsung Evo SSD 500GB. Na verdade, movi os arquivos para atacar primeiro e depois os excluí. Notei que apenas mover os arquivos para o lixo consumia toda a minha memória RAM (8GB) e todo o meu SWAP (8GB). Existe uma configuração que pode fazer o lixo no Ubuntu se comportar de forma mais eficiente? Eu sei que posso forçar excluir os arquivos e ignorar a lixeira, mas isso acaba com o propósito do lixo completamente. Ou esse comportamento é esperado?

    
por BB1 12.11.2016 / 00:50

2 respostas

0

Esse comportamento é esperado, porque quando você exclui algo usando o nautilus, ele simplesmente o move para a lixeira, como você sabe.

Correção: isso não é o comportamento esperado. Como o BB1 aponta, 'mover' um arquivo para o lixo não o move em lugar algum, apenas atualiza seu inode para refletir a localização.

Eu acho que seu ram está sendo comido porque é preciso muito mais recursos do sistema para excluir (ou fazer qualquer coisa com) um monte de arquivos pequenos do que excluir um arquivo maior.

O comportamento do Lixo não parece ser muito personalizável. Não há muito a ser feito sobre isso, infelizmente. Você pode procurar em trash-cli , mas não sei se seria mais eficiente ou não.

Quando eu tenho que apagar um monte de arquivos pequenos, eu sempre faço isso do shell, porque é mais rápido. Mesmo assim, eu encontrei um erro ao tentar excluir quase 100 mil arquivos, algo como "rm: argument list too long". Para contornar isso, eu corri rm em um loop e iterou pelos arquivos como:

for letter in {a..z};do rm -f $letter*;done

Se você quisesse imitar a funcionalidade de lixeira no shell, poderia tentar algo assim:

#!/bin/bash
## pseudotrash
elsewhere=/media/$USER/some-external-drive/pseudo-trash
for file in "$@";do
  cp $file $elsewhere
  if [ "$?" -eq "0" ] ; then
    rm -f $file && echo "Backed up and deleted $file"||\
    (echo "Could not delete $file , aborting";exit 1)
  else
    echo "Could not copy $file,aborting" ;exit 1
  fi
done

E depois execute como:

pseudotrash 'ls'

ou

pseudotrash 'file1 file2 file3'

Espero que responda à sua pergunta e ofereça algumas dicas para ajudar a resolver seu problema.

    
por Chev_603 13.11.2016 / 01:26
0

Este é (foi) um bug muito chato no Nautilus (pacote gvfs):

Mas há apenas 3 dias esse bug foi corrigido e a versão de correção foi adicionada aos repositórios.

% bl0ck_qu0te%

Execute sudo apt-get update && sudo apt-get upgrade para atualizar para a nova versão.

    
por RoVo 31.08.2017 / 11:29