Algo em que me perguntei ao excluir uma dúzia de imagens do meu computador: Com um rápido rm -rf
comando no conteúdo do diretório, todas as imagens desapareceram rapidamente. Quando arrasto a mesma dúzia de imagens para uma proibição de reciclagem / lixeira, às vezes leva 10 segundos ou mais.
Agora eu tenho certeza que parte disso vem da sobrecarga da GUI e tal, e parte disso pode ser o fato de o arquivo ainda "existir" de alguma forma se for colocado na lixeira, mas há mais alguma coisa que é responsável por uma disparidade de tempo tão grande ? São "rm" e "delete" apenas esses comandos fundamentalmente diferentes, então estou tentando comparar maçãs e laranjas?
linux
command-line
Jordan Plahn
fonte
fonte
Respostas:
Como você notou com razão, a GUI faz mais do que apenas "excluir" os arquivos.
apenas se repete em pastas, excluindo os arquivos e pastas encontrados lá.
A GUI primeiro examina a árvore inteira para descobrir o que há lá (para saber o quanto precisa fazer para desenhar a barra bonita) e, em seguida, retorna pela árvore novamente, movendo os arquivos do local atual para o local da barra. arquivos de lixeira para sua GUI específica. Essa mudança leva mais tempo, pois é necessário primeiro gerar um novo nome de arquivo exclusivo, vincular o arquivo na pasta lixeira, desvinculá-lo da pasta atual e atualizar um índice de onde os arquivos vieram para que eles possam ser "desfeitos" - muitas operações em vez de apenas uma.
Por exemplo, no Gnome 3, os arquivos são movidos para o local:
Onde
filename
é o nome do arquivo original eversion
é um número de versão incremental para garantir que o arquivo seja exclusivo (a primeira instância do arquivo não possui número de versão). Associado a isso, há um.trashinfo
arquivo armazenado na pasta:Este arquivo contém o caminho original do arquivo antes da exclusão, bem como a data e a hora em que esse arquivo foi excluído.
Todas essas operações extras, que devem ser executadas em todos os arquivos individuais da árvore que você está excluindo, garantem a capacidade de restaurar qualquer arquivo da lixeira e a exclusão de arquivos com o mesmo nome no diretório mesmo local e ainda restaura versões anteriores.
Nada disso é feito com um simples
rm
oumv
comando.fonte
trash-cli
não parece fazê-lo recursivamente. Ao excluir uma pasta, o Gnome 3 realmente coloca um.trashinfo
arquivo recursivamente para cada subpasta e todos os arquivos que contêm?