Formato de arquivo que permite a extração eficiente de arquivos específicos.

2

Existe um formato de arquivo que lida com o seguinte caso de uso ...

Gostaria de criar um arquivo tar (ou qualquer outra coisa - estou usando apenas tar aqui b / c é um formato de arquivo conhecido para conter vários arquivos) que seria utilizável mesmo se eu tivesse acesso somente a partes específicas do dito arquivo.

Por exemplo, digamos que eu coloquei minha coleção de fotos e mp3 em um arquivo tar de 100 GB e coloquei o arquivo em algum armazenamento de longo prazo em algum lugar. Mais tarde, quero acessar um arquivo mp3 específico. Eu não quero baixar o arquivo tar 100GB inteiro apenas para chegar a um mp3. Na verdade, digamos que eu não possa baixar o arquivo tar de 100GB inteiro. Em vez disso, eu gostaria de dizer "me dê megabytes de 10 a 19 do arquivo tar de 100 GB" e depois ter o mp3 magicamente extraído desses 10 megabytes.

Existe um formato de arquivo como este?

    
por Jon Chase 29.11.2012 / 05:19

2 respostas

1

Sim, você poderia fazer isso com um arquivo tar, mas para fazê-lo funcionar, você precisaria salvar um log do que você escreveu, informando os deslocamentos dos vários arquivos no arquivo. Caso contrário, a única maneira de saber o que há em um arquivo TAR é ler tudo, do começo ao fim, o que acaba com a ideia de baixar apenas a parte que você precisa.

Além disso, se você só puder fazer o download do arquivo em blocos inteiros, não apenas qualquer número arbitrário de bytes em qualquer limite, será útil ter um tar que possa iniciar e terminar a leitura nos desvios especificados dentro o bloco. Meu próprio tar faz isso, mas essa é uma característica incomum; faltando isso, a alternativa seria head e tail o bloco para extrair apenas a parte que você quer desfazer tar .

    
por 29.11.2012 / 05:56
1

Eu sei que é tarde, não tenho certeza do que o OP acabou, mas aqui estão algumas sugestões:

Você pode criar uma nova partição usando um sistema de arquivos de sua escolha e copiar tudo o que quiser armazenar nessa partição. Em seguida, reduza a partição o menor que puder para economizar espaço. Então você pode usar, e. dd para criar uma imagem da partição, digamos que é /dev/sdc3 , na sua forma mais simples:

dd if=/dev/sdc3 of=backup_image.bin

Para o Windows Google, para "dd for windows" ou encontre um programa equivalente que possa fazer uma imagem byte-a-byte de uma partição ou dispositivo.

Em seguida, esse arquivo de imagem pode ser colocado em um armazenamento de longo prazo. Contanto que você tenha acesso ao arquivo e sua mídia de armazenamento de longo prazo suporte a busca aleatória, basta montar o arquivo diretamente, por exemplo:

sudo mkdir /media/backup
sudo mount /path/to/backup_image.bin /media/backup

Para o Windows, o Google busca a "imagem de partição do Windows" .

Você terá acesso total aos dados e somente a quantidade mínima de leituras necessárias para dar suporte à navegação pelo sistema de arquivos e o acesso a esse arquivo será realizado.

Outra opção, mais óbvia, é simplesmente não combinar seus arquivos em um único arquivo. Crie um sistema de arquivos normal em seu armazenamento de longo prazo e apenas copie os arquivos para ele. Sistemas de arquivos já fornecem os meios para acessar arquivos específicos sem acessar dados desnecessários, você pode não ter que reinventar uma roda.

Também existem formatos proprietários como o que você descreve, por exemplo, software de backup como Acronis pode fazer backup de dados em unidades montadas em rede ou em qualquer lugar, em arquivos ".TIB" que possam ser pesquisados (e extraídos de dados) sem exigir a leitura de todo o arquivo. Não sei se a Acronis suporta a navegação de backups do sistema de arquivos Linux / OSX, mas sei que ele suporta esse tipo de navegação para backups FAT32 e NTFS. Tenho certeza que existem outros.

    
por 11.06.2014 / 02:12