Uso do disco dentro de arquivos, como o ncdu

4

Sou um bom usuário do utilitário ncdu para descobrir como o espaço é usado em um diretório.

No entanto, tenho um caso de uso em que estou tentando escolher quais pastas fazer backup e quais pastas não devem fazer backup, e os backups serão compactados (como um arquivo .tar.xz, mas suponho que .tar.gz seria produzir o mesmo resultado para o que tenho em mente). Então, intuitivamente, eu não me importo muito com arquivos grandes, mas que compactam bem (por exemplo, arquivos de e-mail), enquanto eu me preocupo mais com arquivos que são relativamente pequenos, mas que não são compactados (por exemplo, imagens JPG). Quero ver arquivos e pastas classificados por tamanho compactado, e não pelo tamanho real não compactado.

Uma solução natural seria compactar todos os arquivos e, em seguida, ter uma ferramenta ncdu -like que operaria no archive para me informar como as pastas ocupam espaço no archive.

Existe alguma utilidade desse tipo?

Estou bem com programas GUI (embora eu prefira os baseados em texto), e estou bem com métodos que só funcionariam para um algoritmo de compressão diferente, pois imagino que eles ainda renderiam resultados úteis (por exemplo, replicar a hierarquia em um sistema de arquivos com compactação / desduplicação integrada).

    
por a3nm 17.08.2014 / 13:36

1 resposta

2

Você pode usar o ncdu em si!

Isso mostra os tamanhos descompactados dos arquivos.
No caso que você diz que se importa, ou seja, muitos arquivos incompressíveis, deve refletir o que você precisa muito bem:


Para tornar os tamanhos de arquivo acessíveis para ncdu , eles precisam estar em um sistema de arquivos . Então, precisamos montar o arquivo como um sistema de arquivos.

Usamos uma implementação do sistema de arquivos espaciais user-space , archivemount :

Instale o sistema de arquivos de fusíveis:

sudo apt-get install archivemount

mkdir um diretório, mount do arquivo para ele, cd , e execute ncdu :

$ mkdir bash-4.3-mount
$ archivemount bash-4.3.tar.gz bash-4.3-mount
$ cd bash-4.3-mount
$ ncdu


Agora você pode usar ncdu normalmente:

ncdu 1.10 ~ Use the arrow keys to navigate, press ? for help                     
--- /tmp/archivedutest/bash-4.3-mount/bash-4.3/lib ----------------
                        /..                                                      
    1.2MiB [##########] /readline
  343.0KiB [##        ] /sh
  316.5KiB [##        ] /intl
  104.5KiB [          ] /glob
   97.0KiB [          ] /malloc
   32.0KiB [          ] /termcap
   22.0KiB [          ] /tilde

 Total disk usage:   2.1MiB  Apparent size:   2.0MiB  Items: 251                 


Agora, o que realmente interessa é o tamanho compactado dos arquivos, e não descompactado: você deseja ver quais arquivos ocupam mais espaço no arquivo real.

Estritamente falando, isso não é possível porque o arquivo é compactado como um todo. Um arquivo individual não tem "tamanho compactado".

Assim, o tamanho compactado de arquivos individuais só pode ser aproximado.
Uma aproximação seria o tamanho de arquivos compactados individualmente.
Outra seria uma fração do tamanho comprimido, assumindo que todos os arquivos são compactados pela mesma proporção. Existem certamente outras maneiras.

O primeiro parece estar ok. Para implementá-lo, não há como descompactar e recompactar os arquivos individuais, então não vejo razão para não apenas fazer isso, descompactar o sistema de arquivos e usar o ncdu nos arquivos.

    
por 17.08.2014 / 14:57