是否有使用任何类型的存档算法来提取/压缩文件的实用程序?

c0r*_*0rp 6 command-line archive 7zip

通常我使用tar*的.tar档案,zip/unzip* .zip文件7z* .7z压缩等..有没有尤伯杯实用程序,将所有的算法?

这是此实用程序的伪用法:

提取:

$ 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
Run Code Online (Sandbox Code Playgroud)

压缩:

$ 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
Run Code Online (Sandbox Code Playgroud)

c0r*_*0rp 6

我刚刚意识到 7-Zip (command 7z) 可以做到。7-Zip 能够提取和压缩多种类型的档案。这是引自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...
Run Code Online (Sandbox Code Playgroud)

7-Zip 可以提取/压缩档案并检测压缩算法本身。

这应该像您期望的那样工作:

压缩

$ 7z a file.tar.gz file
$ 7z a file.zip file
$ 7z a file.7z file
$ 7z a file.gzip file
Run Code Online (Sandbox Code Playgroud)

提取

$ 7z x file.tar.gz
$ 7z x file.zip
$ 7z x file.7z
$ 7z x file.gzip
Run Code Online (Sandbox Code Playgroud)

这里还有一个小测试。在这里,我创建了五个档案,并为它们提供了不同的文件扩展名。

$ 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
Run Code Online (Sandbox Code Playgroud)

现在要检测压缩算法,我将使用该binwalk实用程序。

$ for arch in testfile.*;do binwalk "$arch" | sed -n '4p' | awk {'print $3'};done
7-zip
gzip
7-zip
gzip
Zip
Run Code Online (Sandbox Code Playgroud)