Apaga o tar original após o untar? Não há espaço suficiente para descompactar

5

Eu tenho um arquivo tar de 130 GB que preciso descompactar para / storage.

O problema é que não tenho espaço suficiente em disco para que ambos existam ao mesmo tempo. Como posso descompactar o arquivo tar e garantir que haja espaço suficiente em disco e excluir o arquivo imediatamente após o untar?

Obrigado.

    
por Andrew Fashion 04.12.2010 / 16:11

4 respostas

2

Este é difícil. Isso realmente depende de quanto espaço livre você tem.

Outros disseram para extrair parte dos arquivos e excluir eles do alcatrão. Essa é a única opção que posso ver agora.

A atualização do tar requer que o tar seja reconstruído sem os arquivos excluídos na mesma unidade. É por isso que você precisa ter 2 x tares + algo mais para permitir a extração dos arquivos.

HTH

    
por 04.12.2010 / 16:39
1

Se for apenas um arquivo tar (ou seja, não compactado) e se você tiver espaço suficiente no disco para armazenar uma versão zipada do tarball, você pode tentar compactar isso e, em seguida, construir um unzip | tar pipe. Eu testaria isso de antemão, no entanto.

Solução mais fácil: obtenha um disco maior.

    
por 05.12.2010 / 01:31
1

Você pode colocar o arquivo tar em um servidor diferente? Porque, então, você pode descompactar via ssh sem se preocupar com o espaço ocupado pelo arquivo original.

    
por 05.12.2010 / 02:25
1

Em uma palavra: dor e sofrimento ...

Compreendendo o formato de arquivo usado pelo tar , você pode criar algumas ferramentas para ajudar com o que está fazendo , mas existem complicações que podem ou não ser relevantes para o seu arquivo em particular. O arquivo tar usa cabeçalhos de 512 bytes que especificam o nome do arquivo e o tamanho do arquivo, entre outras coisas. Você pode usar essas informações para criar uma série de deslocamentos no arquivo tar de cada entrada de arquivo. Você pode fazer algo como atravessar o arquivo tar de trás para a frente e truncar o arquivo enquanto extrai os arquivos.

No entanto, existem alguns problemas de sequência com os quais você precisa lidar. O GNU tar, por exemplo, pode criar algumas entradas "falsas" para arquivos com nomes extensos de arquivos, para armazenar informações adicionais que não cabem no cabeçalho de 512 bytes. Além disso, você pode precisar ter cuidado com as entradas de diretório, que podem especificar permissões que não permitirão que você extraia arquivos para o diretório se você extrair a entrada de diretório antes do conteúdo.

A linguagem de programação Python, entre outras, inclui uma boa biblioteca para manipular arquivos tar.

No entanto, outra opção seria apenas dividir o arquivo tar grande em muitos arquivos menores, independentemente do formato tar. Divida o final e, em seguida, trunque o arquivo de origem. Repita até que, em vez de um único arquivo de 130 GB, você tenha 130 arquivos de 1 GB. Obviamente, obter essas divisões / truncamentos corretamente pode ser um pouco complicado. Poderia ser feito usando os comandos "dd" e "truncar"

Em seguida, seria fácil criar um script que "cat" o primeiro arquivo, excluir o primeiro arquivo, cat o segundo arquivo, excluir o segundo arquivo, etc ... Pipe esse script para "tar x" e como o arquivo tar extrai os arquivos de origem seria deletado.

É claro que todas essas operações são destrutivas, então você basicamente tem uma chance de fazê-las corretamente.

O mais fácil seria se você tivesse um lugar para copiar o arquivo de 130GB e extraí-lo de lá. Diga um disco rígido USB externo ou outra máquina e extraia-o em um túnel SSH.

    
por 05.12.2010 / 05:02

Tags