Existe algum utilitário para extrair / comprimir arquivos usando qualquer tipo de algoritmo de arquivamento?

6

Normalmente, uso tar para arquivos *. tar , zip/unzip para *. zip , 7z para *. 7z , etc ... Existe uma utilidade que combina todos os algoritmos?

Aqui está o pseudo uso deste utilitário:

Extraindo:

$ unpack *.tar -d /home/c0rp/this_is_tar
$ unpack *.rar -d /home/c0rp/this_is_rar
$ unpack *.tar.gz -d /home/c0rp/this_is_targz
$ unpack *.zip -d /home/c0rp/this_is_zip
$ unpack *.7z -d /home/c0rp/this_is_7z

Compactação:

$ pack some_name.tar /home/c0rp/for_tar1 /home/c0rp/for_tar2
$ pack some_name.rar /home/c0rp/for_rar1 /home/c0rp/for_rar2
$ pack some_name.tar.gz /home/c0rp/for_targz1 /home/c0rp/for_targz2
$ pack some_name.zip /home/c0rp/for_zip1 /home/c0rp/for_zip2
$ pack some_name.7z /home/c0rp/for_zip1 /home/c0rp/for_7z
    
por c0rp 21.11.2014 / 12:45

2 respostas

6

Acabei de perceber que o 7-Zip (comando 7z ) pode fazer isso. O 7-Zip é capaz de extrair e compactar muitos tipos de arquivos. Aqui está uma citação de man 7z :

DESCRIPTION
    7-Zip is a file archiver with the highest compression ratio. The pro-
    gram supports 7z (that implements LZMA compression algorithm), LZMA2,
    XZ, ZIP, Zip64, CAB, RAR (if the non-free p7zip-rar package is
    installed), ARJ, GZIP, BZIP2, TAR, CPIO, RPM, ISO, most filesystem
    images and DEB formats...

O 7-Zip pode extrair / compactar arquivos e está detectando o próprio algoritmo de compactação.

Isso deve funcionar como você espera:

Comprimindo

$ 7z a file.tar.gz file
$ 7z a file.zip file
$ 7z a file.7z file
$ 7z a file.gzip file

Extraindo

$ 7z x file.tar.gz
$ 7z x file.zip
$ 7z x file.7z
$ 7z x file.gzip

Também aqui está um pequeno teste. Aqui eu crio cinco arquivos e dou a eles extensões de nome de arquivo diferentes.

$ cd /tmp
$ touch testfile
$ for alg in {zip,gzip,7z,tar.gz,rar};do 7z a testfile."$alg" testfile;done
$ ls testfile*
testfile.7z
testfile.gzip
testfile.rar
testfile.tar.gz
testfile.zip

Agora, para detectar o algoritmo de compactação, usarei o utilitário binwalk .

$ for arch in testfile.*;do binwalk "$arch" | sed -n '4p' | awk {'print '};done
7-zip
gzip
7-zip
gzip
Zip
    
por c0rp 21.11.2014 / 13:13
2

link

  

inteligentemente extrair vários tipos de arquivos

Para instalar:

sudo apt-get install dtrx

Página inicial: link

    
por NGRhodes 21.11.2014 / 13:36