Comando para 'gzip' uma pasta?

57

Eu sou novo no material de prompt de comando do Mac. Como você cria um gzip de uma pasta no Mac OS X? Foi-me dito por algumas pessoas que, se você quiser criar um gzip de uma pasta, você deve 'tar' primeiro e depois 'gzip'. Está correto?

    
por thndrkiss 09.07.2010 / 13:58

6 respostas

113

Tar é a ferramenta de arquivo e gzip é a ferramenta de compressão. Para compactar um diretório completo, primeiro você precisa arquivá-lo em um único arquivo. Isso é o que o trabalho é tar. e, em seguida, você compacta o arquivo arquivado. Você pode fazer as duas tarefas em um único comando tar com a opção apropriada.

tar -czf folder_name.tar.gz folder_name/

Se você não quer fazer um arquivo tar (pode ser que você queira comprimir apenas um único arquivo), então você pode usar o comando gzip diretamente.

gzip file.txt

Ele criará um arquivo compactado chamado file.txt.gz

    
por 09.07.2010 / 14:10
12

Se alguém ainda estiver encontrando essa pergunta ao pesquisar "gzip no Mac", escrevi um guia que pode ser útil para outra pessoa. Aqui vai:

Compactando

O comando mais básico comprimirá o arquivo filename.ext e depois o substituirá por filename.ext.gz no mesmo diretório.

gzip filename.ext

Se você não quiser perder seu arquivo original, precisará enviar a saída de gzip -c para um arquivo.

gzip -c filename.ext > anotherfile.gz

Também podemos comprimir a partir da entrada padrão, para que possamos compactar a saída de outros comandos.

cat filename.ext | gzip > anotherfile.gz

O OS X também vem com os comandos compress e uncompress . Eles criam um gzip "mais inteligente", já que ele não compacta o arquivo se ele crescer após o processo de compactação. O comando a seguir substitui filename.ext por filename.ext.Z no mesmo diretório.

compress filename.ext

Descompactando

Para restaurar um arquivo para seu estado natural não-comprimido, você pode usar o gzip ou outro dos wrappers. O modo de descompactação do gzip é chamado com o sinalizador -d . Esse modo substituirá o arquivo filename.ext.gz por filename.ext no mesmo diretório. Há também um atalho chamado gunzip que fará o mesmo.

gzip -d filename.ext.gz
gunzip filename.ext.gz

Também podemos enviar o arquivo descompactado para a saída padrão para salvá-lo em outro arquivo.

gzip -cd filename.ext.gz > anotherfile
gunzip -c filename.ext.gz > anotherfile

Outra maneira rápida de ler o conteúdo de um gzip para a saída padrão é zcat , é basicamente o mesmo que chamar gzip -cd , mas você pode chamar vários arquivos e concatená-los da mesma maneira que o comando cat arquivos de texto. A única desvantagem é que seus arquivos precisam ser sufixados com o sufixo .Z para que funcione ...

zcat filename.ext.Z
zcat file_a.Z file_b.Z file_c.Z

Mas não tenha medo! zcat ainda é útil, porque pode descomprimir a partir da saída padrão. Então você pode basicamente enviar seus arquivos para o zcat para que eles sejam descomprimidos na janela do terminal.

cat filename.ext.gz | zcat

Isso é muito útil se você precisar verificar o conteúdo de um arquivo com muita rapidez e até mesmo salvar a saída do zcat em um arquivo, com a mesma facilidade.

cat filename.ext.gz | zcat > anotherfile

O wrapper uncompress funciona como gzip -cd , mas procura arquivos com a extensão .Z para substituí-los no diretório atual, portanto, você só precisa especificar o nome do arquivo a ser restaurado, mas tudo bem se você chame-o com a extensão .Z, pois o programa irá ignorá-lo.

compress filename.ext
uncompress filename.ext

Espero que você ache meu guia útil:)

    
por 25.03.2015 / 03:35
4

MacOS X é Unix, então isso deve funcionar (este trabalho no GNU / Linux)

tar czvf compressed.tar.gz folder
    
por 09.07.2010 / 14:03
3

Sim, você precisa colocar o diretório tar primeiro. O comando tar pode fazer as duas coisas:

tar -czf archiv.tar.gz mydir/

extraia seu arquivo:

tar -xzf archiv.tar.gz
    
por 09.07.2010 / 14:04
3

Para adicionar a resposta a @taskinoor: se você usa a versão de arquivo único, também conhecido

gzip file.txt

esteja ciente de que o arquivo original (file.txt) será removido e você terá apenas file.txt.gz

Eu coloco isso como comentário, mas não tenho karma suficiente para fazer isso: =)

    
por 10.07.2010 / 00:42
1

Sim, isso está correto. gzip só pode compactar um arquivo. tar codifica o conteúdo do diretório em um único arquivo, que pode ser ainda mais compactado usando gzip , bzip2 , lzma ou qualquer outra coisa.

    
por 09.07.2010 / 14:04