O dilema: eu tenho um arquivo de 10GB e um disco rígido de 20GB. Quando vou descompactar / desarquivar o arquivo, o disco rígido fica cheio e o processo falha.
Pergunta: No servidor ubuntu 12.04 / linux existe uma maneira de desarquivar um arquivo enquanto reduzo o tamanho do arquivo?
Respostas:
Aqui está outra solução. Ele não permite que você extraia arquivos individuais de um arquivo e reduza seu tamanho, mas permite que você extraia todos os arquivos reduzindo o tamanho do arquivo à medida que você vai:
Salvar isso em um arquivo como, por exemplo,
untar_and_destroy.sh
e execute como:O que isto faz é dar parte do
.tar.gz
file to tar, pede ao Linux para desalocar essa parte do arquivo, e então repete para a próxima parte. Quando tiver terminado,ls -l
vai dizer o.tar.gz
arquivos tem o mesmo tamanho de antes, masdu
irá relatar seu tamanho como 0. Isso ocorre porque o.tar.gz
foi transformado em um arquivo esparso, com o mesmo tamanho de antes, mas como todos os 0s que não precisam ser armazenados no disco.Não use isso na produção ou em qualquer lugar onde esse arquivo excluído seja ruim. Isso torna o arquivo ilegível assim que é iniciado, por isso, se algo der errado, por exemplo, você fica sem espaço no disco rígido enquanto extrai, você não terá uma segunda chance de executar isso.
fonte
count=1
opção em dd, caso contrário, ele irá mostrar o arquivo inteiro na primeira iteração do loop, que não libera o espaço em disco durante a execução do comando. Além disso, eu reformulariatar xfz -
paratar xz
.Eu não conheço nenhuma ferramenta que possa fazer isso, e não acho que nenhum dos formatos comuns de arquivamento suportem isso.
Uma solução possível para o seu problema seria manter o arquivo em uma máquina diferente e encaminhá-lo para a máquina em que você deseja descompactá-lo. Por exemplo, você poderia executar este comando na máquina com o arquivo:
O arquivo será transmitido para o
tar
processo em execução no servidor, que irá descompactá-lo sem precisar que o arquivo esteja presente no servidor.fonte
tar
formato para permitir que você faça isso, mas não depois de ter sido compactado. Realmente não faria muito sentido usar um arquivo nessa situação, em vez de apenas os arquivos em si.Embora possa ser impraticável expandir o armazenamento primário, talvez você possa extrair o conteúdo do arquivo para um dispositivo de armazenamento externo.
Como alternativa, gere uma lista de arquivos no archive e, em seguida, escreva um script que extraia alguns deles. Mova esses arquivos para a nuvem, selecione outro lote para extrair, ensaboar, enxaguar, repetir.
Mas, todo aplicativo de arquivamento que eu conheço tem que ter o arquivo original intacto enquanto cria um novo arquivo sem o que você não quer, então o armazenamento externo será muito, muito útil.
fonte