Estou usando tar
para arquivar um grupo de arquivos muito grandes (vários GB) bz2
.
Se eu uso tar -tf file.tar
para listar os arquivos no arquivo morto, isso leva muito tempo para ser concluído (~ 10 a 15 minutos).
Da mesma forma, cpio -t < file.cpio
leva tanto tempo para concluir, mais ou menos alguns segundos.
Consequentemente, a recuperação de um arquivo de um arquivo morto (por tar -xf file.tar myFileOfInterest.bz2
exemplo) é tão lenta.
Existe um método de arquivamento por aí que mantém um "catálogo" prontamente disponível com o arquivo, para que um arquivo individual dentro do arquivo possa ser recuperado rapidamente?
Por exemplo, algum tipo de catálogo que armazena um ponteiro para um byte específico no arquivo morto, bem como o tamanho do arquivo a ser recuperado (assim como quaisquer outras informações específicas do sistema de arquivos).
Existe uma ferramenta (ou argumento para tar
ou cpio
) que permita a recuperação eficiente de um arquivo dentro do arquivo morto?
Você pode usar o SquashFS para esses arquivos. Isto é
A única desvantagem que conheço é que é somente leitura.
http://squashfs.sourceforge.net/ http://www.tldp.org/HOWTO/SquashFS-HOWTO/whatis.html
fonte
Embora não armazene um índice,
star
é suposto ser mais rápido quetar
. Além disso, ele suporta nomes de arquivos mais longos e oferece melhor suporte para atributos de arquivo.Como eu sei, descompactar o arquivo leva tempo e provavelmente seria um fator na velocidade da extração, mesmo que houvesse um índice.
Editar: Você também pode querer dar uma olhada
xar
. Ele tem um cabeçalho XML que contém informações sobre os arquivos no arquivo morto.Na página referenciada:
fonte
star
está inativo ......Thorbjørn Ravn Anderser está certo. O tar GNU cria arquivos "procuráveis" por padrão. Mas ele não usa essas informações quando lê esses arquivos se a opção -n não for fornecida. Com a opção -n, acabei de extrair o arquivo de 7 GB do arquivo de 300 GB no tempo necessário para ler / gravar 7 GB. Sem -n demorou mais de uma hora e não produziu resultado.
Não tenho certeza de como a compressão afeta isso. Meu arquivo não foi compactado.Os arquivos compactados não são "procuráveis" porque o tar atual do GNU (1.26) transfere a compactação para o programa externo.fonte
O único formato de arquivo que conheço que armazena um índice é o ZIP, porque tive que reconstruir índices corrompidos mais de uma vez.
fonte
Ele não indexa o que eu sei, mas eu uso o dump & restore com arquivos grandes, e navegar na árvore de restauração no modo interativo para selecionar arquivos aleatórios é MUITO rápido.
fonte
Você pode usar o formato de arquivo / compactação 7z (7zip) se tiver acesso ao
p7zip-full
pacote.No Ubuntu, você pode usar este comando para instalá-lo:
Para criar um arquivo morto, você pode usar
7z a <archive_name> <file_or_directory>
e, se você não deseja compactar os arquivos e apenas "armazená-los" como estão, pode usar a-mx0
opção como:Você pode extrair os arquivos usando
7z e
:Ou você pode listar o índice do arquivo com o
7z l
que é útil para pesquisargrep
:Essa também é a
t
opção para testar a integridade,u
adicionar / atualizar um arquivo no arquivo morto ed
excluir um arquivo.NOTA IMPORTANTE
Do não usar o formato 7zip para Linux sistema de arquivos backups, pois não armazena o proprietário eo grupo dos arquivos contidos.
fonte
Eu acredito que o GNU tar é capaz de fazer o que você deseja, mas não consigo localizar um recurso definitivo para isso.
De qualquer forma, você precisa de um formato de arquivamento com um índice (pois isso permitirá que você faça o que deseja). Eu não acredito que os arquivos ZIP possam crescer tanto assim, infelizmente.
fonte