du -sh * mostra um espaço significativo mais usado que ls -lah

4

Estou com problemas para ficar sem espaço em disco em um dos servidores de meus clientes.

A saída dos comandos ls -lah em /var/lib/mysql mostra:

drwx------  2 mysql mysql  16K Dec 30  2015 database_xyz

Mas quando eu verifico o tamanho do arquivo no mesmo catálogo com o comando du -sh * , a saída mostra:

22G     database_xyz

Por que a saída dos comandos mostra dois resultados completamente diferentes?

Eu tenho apenas 2,2 GB no drive.

root@jon-cust-lifeincity:/var/lib/mysql# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg-root    49G   44G  2.2G  96% /
tmpfs                1007M     0 1007M   0% /lib/init/rw
udev                 1002M  108K 1002M   1% /dev
tmpfs                1007M     0 1007M   0% /dev/shm
/dev/sda1             228M   16M  200M   8% /boot

EDITAR:

Acontece que database_xyz é, na verdade, um catálogo, não um arquivo. Então a confusão foi feita pelo meu cérebro.

    
por Orphans 09.11.2016 / 09:26

3 respostas

7

Parece que você tem um mal-entendido sobre o que está sendo dito. O comando ls -lah lista o conteúdo do diretório atual. Neste caso em particular, é /var/lib/mysql . Entre outras coisas, você foi informado disso

drwx------  2 mysql mysql  16K Dec 30  2015 database_xyz

Você está entendendo mal o que isso está lhe dizendo.

Você pode considerar um diretório como um arquivo simples contendo uma lista de entradas de diretório. (simplesmente) Uma entrada de diretório é um nome de arquivo e um ponteiro para onde esse arquivo reside no disco. Esta informação ocupa espaço em disco.

O que

drwx------  2 mysql mysql  16K Dec 30  2015 database_xyz

está lhe dizendo é que existe uma entrada de diretório em /var/lib/mysql chamada database.xyz . Essa entrada é para um tipo de arquivo d , que indica que é um diretório e, entre outras coisas, o tamanho do diretório 'file' é 16K.

    
por 09.11.2016 / 09:54
2

Para saber o tamanho do arquivo database_xyz , basta digitar

du -sh database_xyz

você encontrará o resultado exato

    
por 09.11.2016 / 09:54
1

ls não é a ferramenta certa para encontrar o tamanho do diretório. Funciona apenas para arquivos que não são diretórios.

Posso ver que você está listando detalhes de um diretório (o primeiro d char)

drwx------  2 mysql mysql  16K Dec 30  2015 database_xyz

Use du . Este é um post semelhante no stackoverflow.

    
por 09.11.2016 / 09:31