Como crio o arquivo tar.7z a partir da linha de comando?

21

Gostaria de fechar minha lição de casa do ano passado. Como tar e zipar a pasta inteira na linha de comando Ubuntu (não tenho GUI).

alphanumerical74
fonte

Respostas:

25

Use a seguinte linha única:

tar cf - <source folder> | 7z a -si <Destination archive>.tar.7z
ortang
fonte
Fonte potencial: man 7z.
Wilf
9

Leia man tar. Oferece:

     -a, --auto-compress
       use archive suffix to determine the compression program
     -j, --bzip2
     --lzip
     --lzma
     --lzop
     -z, --gzip, --gunzip --ungzip
     -Z, --compress, --uncompress

Ou, se nada disso for adequado para você e você tiver um programa de compactação que lê stdin, você pode:

tar cf- $HOME | my_compression_program >/tmp/compressed.output

Observe que estou escrevendo a saída em outro lugar que não seja $HOME(fazer backup em um diretório em que você está fazendo backup leva a um crescimento irrestrito de arquivos).

Ou você pode ler man 7z- parece que você poderia fazer

dir="directory to save"
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on /tmp/archive.7z $dir 
waltinator
fonte
7

É não uma boa idéia comprimindo diretamente com 7z spcially em Unix / Linux sistemas: 7z não preservar as permissões e ou informações de usuário / grupo . Então: primeiro alcatrão e depois comprima.

Conforme relatado na página wiki do 7zip em http://en.wikipedia.org/wiki/7z#Limitations :

Limitações

O formato 7z não armazena permissões do sistema de arquivos (como permissões de proprietário / grupo UNIX ou ACLs NTFS) e, portanto, pode ser inadequado para fins de backup / arquivamento. Uma solução alternativa para sistemas do tipo UNIX é converter dados em um fluxo de bits tar antes de compactar com 7z.

Giuseppe Curto
fonte
5

Eu sugiro que você use:

tar cf - foldername | 7z a -si -m0=lzma2 -mx=3 foldername.tar.7z

para um aumento dramático na aceleração.

Ele tem a vantagem de usar lzma2 ( -m0=lzma2) (que utiliza o máximo de núcleos disponíveis no sistema e a predefinição "Compressão rápida" ( -mx=3), que é basicamente rápida e boa o suficiente. Observe que o LZMA2 não está apenas utilizando todos os núcleos na compactação, mas também no descompressão.

vordhosbn
fonte
11
Finalmente, com sua resposta, eu descobri o que estava procurando: a capacidade de usar todos os processadores na tarefa.
Lonnie Best
0

Você deveria usar tar -Jchf <Filename>.tar.xz <Files to compress>

Ele -Jusa o algoritmo de compactação XZ, o mesmo que 7zip

-ccria um novo arquivo -hpreserva simlinks -fdefine o nome do arquivo

cristão
fonte