Questão Descompactar resulta em um arquivo, não em uma pasta


Eu fechei 6 arquivos (tamanho total = 2gb) usando gzip -c myfiles_* > ~/myzip.gzip no servidor A e tenho o meu amigo para copiar este servidor para o servidor B. Agora eu aprendi que o arquivo deve ser nomeado .gz então eu renomei o arquivo usando mv. Eu verifiquei que o arquivo no servidor B tinha o mesmo tamanho que o original .gzip arquivo no servidor A, o que aconteceu. Então eu corri gunzip myzip.gz.

O resultado não é uma pasta contendo meus arquivos, mas um único arquivo chamado myfiles sem qualquer extensão. O tamanho do arquivo é do mesmo tamanho que os arquivos iniciais, então todos os arquivos foram compilados neste único arquivo. Como eu agora extraio os arquivos novamente deste arquivo único?

Como você pode ver, eu ainda sou muito novo no Linux.


0


origem




Respostas:


Eu fechei 6 arquivos (tamanho total = 2gb) usando gzip -c myfiles_* > ~/myzip.gzip e tenho meu amigo para copiar este servidor para outro servidor.   Agora eu aprendi que o arquivo deve ser nomeado .gz então eu   renomeado o arquivo usando mv. Então eu corri gunzip myzip.gz.

Os resultados que você está vendo são exatamente o que você criou. O GZip não retém nenhuma estrutura de diretórios quando é comprimido; apenas comprime arquivos / dados. Então, quando você executou este comando:

gzip -c myfiles_* > ~/myzip.gzip

Tudo o que o GZip fez foi concatenar todos os arquivos que encontrou com myfiles_* em uma grande bolha e comprimi-los ~/myzip.gzip. O fato de a extensão do arquivo estar incorreta é irrelevante, já que renomear esse arquivo - como você fez - resolveria o problema, mas o arquivo subjacente ainda é apenas um grande bloco de arquivos.

Quanto a como recuperar isso agora? Muito confiante que você não pode porque o problema estava em sua lógica inicial do GZip. A única recomendação que eu teria para você agora é começar de volta ao quadrado um e criar um arquivo TAR / GZipped como este.

Criando o arquivo TAR / GZipped.

Primeiro, execute este comando TAR:

tar -cf myzip.tar myfiles_*

Isso criaria um novo arquivo TAR chamado myzip.tar que consiste nos arquivos que o sistema encontrou usando o padrão, myfiles_*.

Agora com isso feito, você pode GZip aquele arquivo TAR assim:

gzip myzip.tar

Este é o meu processo de lidar com essas coisas no Mac OS X, mas se você estiver usando uma versão GNU do TAR - que a maioria dos sistemas Linux usa - você pode executar este comando para combinar as duas etapas em uma vez:

tar -cfz myzip.tar.gz

Note que extra z nas opções? Isso diz ao TAR para GZip o arquivo ao criá-lo.

Descompactando e desarquivando o arquivo TAR / GZipped.

Feito isso, você terá um novo arquivo chamado myzip.tar.gz. Transfira qualquer lugar que você precisar e então descompacte-o usando o comando TAR assim:

tar -xf myzip.tar.gz

O TAR é bastante inteligente hoje em dia para detectar compressão GZip como parte de seu processo de desarquivamento, então irá descompactar o arquivo TAR e então extrair o conteúdo do arquivo TAR de volta para exatamente igualar a estrutura de arquivos e diretórios de qualquer fonte começar com.


1



Obrigado pela resposta rápida! O novo arquivo não tem extensões e tenho certeza que o arquivo foi simplesmente copiado usando o scp comando que eu enviei para ele, que continha apenas os dois caminhos. - pir
@felbo Desculpe. Eu interpretei mal toda a sua pergunta. Por favor, confira minha última edição para a resposta, que basicamente é uma reescrita de toda a resposta. Muito confiante de que você não será capaz de extrair arquivos individuais do arquivo GZip que você possui atualmente, mas eu explico como você pode criar corretamente um arquivo GZipped que retém a estrutura de diretórios usando o TAR. - JakeGould
Eu odeio o Linux algumas vezes .. Parece que não há outra maneira, obrigado. - pir