Compactar arquivos do terminal OS X?

50

No Finder, existe essa maravilhosa capacidade de clicar com o botão direito do mouse em um arquivo ou diretório, selecionar comprimir no menu suspenso e terminar com um arquivo compactado.

É possível fazer a mesma coisa no terminal?

William Jockusch
fonte

Respostas:

69

É chamado zip.

Isso adiciona o arquivo fileao arquivo file.zip:

zip file.zip file

Obviamente, para adicionar mais arquivos, basta adicioná-los como argumentos ao comando. Confira man zipmais opções.

Freqüentemente, você vai querer pular, incluindo os .DS_Storearquivos desagradáveis , por exemplo, compactando a pasta inteira folderem folder.zip:

zip -vr folder.zip folder/ -x "*.DS_Store"
slhck
fonte
o que é o (1) após a palavra zip?
Jacob Raccuia
@JacobRaccuia Veja superuser.com/questions/297702/…
slhck
É o velho e simples zip GNU que acompanha o OS X?
mwfearnley
@mwfearnley No macOS, é Copyright (c) 1990-2008 Info-ZIP. developer.apple.com/legacy/library/documentation/Darwin/…
slhck 11/11
o link para a página de manual quebrou .. basta usar man zipna linha de comando
commonpike
15

Para compactar os arquivos exatamente como o comando Finder os compactaria, use:

ditto -c -k --sequesterRsrc --keepParent src_directory archive.zip

Veja man dittopara detalhes:

 The command:
       ditto -c -k --sequesterRsrc --keepParent src_directory archive.zip
 will create a PKZip archive similarly to the Finder's Compress function-
 ality.
qqbenq
fonte
3
Essa é a melhor resposta, pois produz um zip idêntico, enquanto o zip ou tar da CLI é diferente e um pouco menor. Uma pergunta semelhante com a mesma resposta: stackoverflow.com/questions/10738505/…
Henry Blyth 11/17
5

Existe tar (1) e gzip (ou bzip2 ou lzma). O Tar é usado para rolar vários arquivos em um arquivo morto, enquanto o outro dos três é usado para compactá-lo.

Em uma linha de comando, você chamará o tar com algumas opções para criar um arquivo morto e compactá-lo.

Por exemplo:

tar -c -z -f myarchive.tar.gz -C /home/username Downloads

Este willl -c ag reate -z ipped arquivo chamado f ile do -C diretório hange-pasta-a e conterá todos os arquivos na pasta de downloads. A opção -C é opcional e os argumentos do arquivo de origem serão obtidos da pasta atual se omitidos.

Para referência: tar tutorial

Ярослав Рахматуллин
fonte