'du' mostra tamanho diferente de zero do catálogo vazio [duplicado]

0

Eu sei que, quando eu crio um catálogo vazio, ele tem seu próprio tamanho:

mkdir test && du -h test

dá:

4,0K    test

Mas este caso é outro. Eu tinha catálogo com arquivos 1e6 (74 GB) no disco rígido externo (ext4). Eu processei esses arquivos, salvei em outro catálogo e apaguei deste local no script em paralelo. Agora este catálogo deve estar vazio. Então está bem que

ls -a raw/all

imprimir

.  ..

Mas

du -h raw/all

19M     raw/all

Sem -h , temos exatamente 19288B. E este também é um resultado estranho:

ls -la raw/all

total 19292
drwxr-xr-x 2 daniel daniel 19746816 wrz 18 19:23 .
drwxrwxr-x 4 daniel daniel     4096 wrz 17 13:21 .. 

O que está acontecendo? Existe algum cache no comando du ? Ou depois de processar tantos arquivos, há algum descanso após esses arquivos? Eu deletei arquivado por unlink no script perl5.

Atualização - respostas a perguntas de comentários

ls -aiR raw/all
raw/all:
51647758 .  51647760 ..

lsof +L1 

imprime 44 linhas, mas nada está relacionado com este catálogo. Mas lsof dá algo com números como 19746816 .

lsof | grep raw
bash      5355                daniel  cwd       DIR               8,17  19746816   51647758 /media/daniel/f2971ccd-4841-4da3-8ce3-d9f2cc03fc27/daniel/pro/scraper/raw/all
lsof      5677                daniel  cwd       DIR               8,17  19746816   51647758 /media/daniel/f2971ccd-4841-4da3-8ce3-d9f2cc03fc27/daniel/pro/scraper/raw/all
grep      5678                daniel  cwd       DIR               8,17  19746816   51647758 /media/daniel/f2971ccd-4841-4da3-8ce3-d9f2cc03fc27/daniel/pro/scraper/raw/all
lsof      5679                daniel  cwd       DIR               8,17  19746816   51647758 /media/daniel/f2971ccd-4841-4da3-8ce3-d9f2cc03fc27/daniel/pro/scraper/raw/all

O laptop foi reinicializado. A unidade externa foi desconectada. Mas du ainda mostra 19M .

    
por Daniel 18.09.2017 / 19:46

1 resposta

2

Diretórios em sistemas de arquivos ext4 crescem, mas não diminuem. Então, se em algum momento tiver que levar 19M para armazenar detalhes de arquivos, ele reterá muito espaço mesmo se esses arquivos forem excluídos. Se você quiser reduzir um diretório agora vazio, exclua e recrie:

rmdir foo && mkdir foo

Ou, mantendo as permissões:

mkdir foo2
chown --reference=foo foo2
getfacl foo | setfacl --set-file=- foo2
rmdir foo
mv foo2 foo

Fonte:

por muru 21.09.2017 / 10:47