Como compactar grandes diretórios

5

Existe uma maneira de compactar um diretório muito grande sob EXT2 / EXT3 sem simplesmente refazer o diretório?

Lembro-me de que perlfunc alerta que as implementações de SO de seekdir e telldir corre o risco de compactação de diretório. que soa como o que eu quero neste caso, mas eu não estou familiarizado com essas semânticas na prática.

plano de fundo: Eu tenho alguns diretórios que são muitos MB em tamanho - eles foram invadidos com um zilhão de pequenos arquivos no passado:

$ ls -lh
drwxr-x--- 2 root root 1.3M Oct  5 12:49 big
drwxr-x--- 2 root root 2.3M Oct  5 12:49 this_one_is_empty_now
drwxr-x--- 2 root root 6.1M Oct  5 12:49 yikes
    
por pilcrow 05.10.2011 / 15:09

2 respostas

5

Os diretórios não podem ser compactados on-line exatamente porque dos requisitos do seekdir / telldir. Eles exigem que qualquer programa seja capaz de manter a posição dentro do diretório por tempo indeterminado e ainda só leia qualquer entrada uma vez; portanto, as entradas não podem ser movidas enquanto o fs estiver montado.

Você pode compactar o diretório off-line com e2fsck -D .

    
por 05.10.2011 / 15:37
0

Você examinou o pigz ? É um gzip melhorado.

John Allspaw fala sobre isso em seu blog aqui: link

    
por 05.10.2011 / 15:11