Alternativa mais rápida ao ArchiveMount?

11

No momento, estou usando ArchiveMount para montar um arquivo de 123.000 kb que contém mais de 3 milhões de arquivos. Até agora, ele tem sido montado por mais de 5 horas e ainda não terminou.

Existe uma maneira melhor de montar um arquivo .tar.gz ? Eu estou tentando montar em uma pasta, e descomprimido leva alguns shows. Eu nem preciso de modo de escrita, apenas de leitura é suficiente.

    
por user511046 06.11.2011 / 04:45

4 respostas

5

Você também pode criar uma imagem comprimida do squashfs

mksquashfs /etc squashfs.img -comp xz
mkdir img
mount -o squashfs,ro squashfs.img img

Para fazer isso, você precisará extrair seu arquivo tar.gz.

A vantagem também é que a imagem tem melhor tolerância a falhas do que gz.

    
por 12.01.2014 / 20:19
2

O problema aqui é com o formato, o formato TAR (Tape ARchive) é projetado para acesso sequencial, não acesso aleatório. E o gzip é um bom complemento para o tar, já que é um formato de compressão baseado em fluxo, também não para acesso aleatório.

Portanto, uma ferramenta de alto nível que não interage diretamente com os blocos compactados, terá que analisar todo o arquivo toda vez que precisar ler alguma coisa, primeiro para obter a lista de arquivos, então talvez o cache invalide e lê-lo novamente e, em seguida, para cada arquivo copiado, ele pode ler novamente. Você pode criar uma ferramenta que lembra a posição de cada arquivo e quais blocos ele precisa descompactar para obtê-lo, mas parece que poucos se incomodaram com isso.

Se você quiser que isso seja mais rápido, faça um tar tzf file.tar.gz > filelist , abra a lista de arquivos em vim , gedit ou o que for, remova as linhas dos arquivos que você não precisa, salve e extraia-os com tar xzf file.tar.gz -T filelist -C extracted/ .

Para obter acesso aleatório a um arquivo compactado, você deve usar talvez zip com extensões posix, rar ou como dru8274 sugerido, squashfs ou mesmo ZFS com compactação ativada, ou btrfs se o btrfs tiver obtido compactação para funcionar no momento de ler.

    
por 22.07.2013 / 19:28
0

Minha abordagem. Se você tiver espaço livre em disco suficiente em uma unidade USB externa ou unidade de HDD externa / secundária com espaço suficiente, considere apenas extrair seu arquivo .tar.gz. Pensando que você provavelmente não quer 3 milhões de arquivos no seu disco de sistema principal, pois isso pode atrasar as coisas. Eu recomendo que o disco externo, neste caso, tenha um sistema de arquivos que lide com um grande número de arquivos facilmente: pensando em ReiserFS, ext4 (com opção dir_index), XFS, talvez BtrFS. Pode levar de 1 a 2 horas para fazer o extrato, mas você pode ir almoçar sozinho ou deixá-lo funcionar da noite para o dia; quando você voltar, o acesso aos arquivos extraídos deve ser de alto desempenho.

    
por 04.06.2014 / 00:34
-1

Isso não abrange todos os casos de uso, pois restringe o uso a um editor de texto. Mas, se você se importa apenas com o acesso de leitura, talvez seja útil para algumas situações. vim , quando executado em um tarball, mostrará a hierarquia de conteúdo do archive (semelhante a como ele exibirá uma hierarquia de arquivos se for executado em um diretório). Ao selecionar um dos arquivos na lista, ele abrirá o arquivo selecionado em um buffer somente leitura.

Mais uma vez, isso não necessariamente oferece acesso a imagens ou outras mídias, mas se tudo que você precisa é ver o conteúdo ou acessar apenas arquivos de texto, isso deve ser útil.

Nota : isto não funcionará em todos os formatos de arquivo.

    
por 17.04.2014 / 22:37

Tags