Por que o / home é o dobro do esperado?

6

Eu estava verificando o uso do meu disco hoje e executei os seguintes comandos (usando o sudo para não ter a "permissão negada")

$ du -hs /home
26G     /home

$ ls -la /home
total 24
drwxr-xr-x  4 root  root   4096 Dec 27  2017 .
drwxr-xr-x 25 root  root   4096 Oct  1 17:39 ..
drwxrwxr-x  3 root  root   4096 Dec 27  2017 .ecryptfs
drwx------ 53 paper paper 12288 Oct  6 14:38 paper'

$ du -hs /home/*
13G    /paper

Por que meu diretório / home tem exatamente o dobro do tamanho do meu diretório de usuários, o que parece ser a única coisa em / home?

    
por OnLinedPaper 06.10.2018 / 20:59

1 resposta

21

Tente executar shopt dotglob nesse mesmo shell.

Provavelmente, dotglob está desativado, o que faz com que * expansion (globbing) não inclua arquivos e diretórios cujos nomes começam com . (incluindo as entradas de diretório especiais . e .. que Tenho certeza absoluta de que nunca estão incluídos na expansão de curingas; imagine o caos causado se rm -rf ./* foi expandido de modo a incluir ./.. ).

Assim, quando você executa du -hs /home , ele conta tudo nesse diretório, mas du -hs /home/* se expande para apenas du -hs /home/paper e, portanto, apenas o último diretório é contado.

Como presumivelmente /home/.ecryptfs contém os dados criptografados, faz sentido que seja aproximadamente do mesmo tamanho que os dados descriptografados. Portanto, os arquivos são contados efetivamente duas vezes, mas somente quando você aponta du no diretório pai.

Se você shopt -s dotglob ativar a configuração do dotglob nessa sessão de shell, execute sudo du -hs /home/* novamente, provavelmente verá que ela é exibida com o mesmo tamanho que se você executasse sudo du -hs /home .

Outra maneira de demonstrar isso é colocar echo no início do comando. Assim, por exemplo, em vez de du -hs /home/* , você poderia tentar echo du -hs /home/* , que mostrará como o * é expandido pelo shell.

Como um aparte, eu recomendo que você não comece a executar habitualmente tudo através de sudo . Use sudo quando você deve, mas não o contrário. Não deve haver necessidade, por exemplo, de executar ls -la /home como o superusuário; o diretório /home provavelmente será legível em todo o mundo.

    
por 06.10.2018 / 21:06