288374
当前位置: 首页   >  课题组新闻   >  linux 压缩
linux 压缩
发布时间:2019-05-31

tar
 
解包:tar zxvf filename.tar
 
打包:tar czvf filename.tar dirname
gz
命令
 
解压1gunzip filename.gz
 
解压2gzip -d filename.gz
 
压缩:gzip filename
      .tar.gz
  .tgz
     
解压:tar zxvf filename.tar.gz
     
压缩:tar zcvf filename.tar.gz dirname
     
压缩多个文件:tar zcvf filename.tar.gz dirname1 dirname2 dirname3.....
bz2
命令
 
解压1bzip2 -d filename.bz2
 
解压2bunzip2 filename.bz2
 
压缩:bzip2 -z filename
        .tar.bz2

      
解压:tar jxvf filename.tar.bz2
      
压缩:tar jcvf filename.tar.bz2 dirname
bz
命令
   
解压1bzip2 -d filename.bz
   
解压2bunzip2 filename.bz
         .tar.bz
      
解压:tar jxvf filename.tar.bz
z
命令
   
解压:uncompress filename.z
   
压缩:compress filename
        .tar.z
         
解压:tar zxvf filename.tar.z
         
压缩:tar zcvf filename.tar.z dirname
zip
命令
    
   
解压:unzip filename.zip
   
压缩:zip filename.zip dirname




 

.tar 
解包:tar xvf FileName.tar    解包后原始文件仍存在 
打包:tar cvf FileName.tar DirName1 Filename1 … 
列出内容:tar tvf FileName.tar 
(注:tar是打包,不是压缩!) 
——————————————— 
.gz 
解压1gunzip FileName.gz    解包后原始文件消失 
解压2gzip -d FileName.gz    解包后原始文件消失 
压缩:gzip FileName(只能对单一文件压缩) 
列出内容:gzip -l 5314-GZ-1.gz

.tar.gz .tgz 
解压:tar zxvf FileName.tar.gz    解包后原始文件仍存在 
压缩:tar zcvf FileName.tar.gz DirName 
列出内容:tar tvf FileName.tar.gz      gzip -l 5314-GZ-1.gz 
——————————————— 
.bz2 
解压1bzip2 -d FileName.bz2    解包后原始文件消失 
解压2bunzip2 FileName.bz2    解包后原始文件消失 
压缩: bzip2 -z FileName 
列出内容:bzcat FileName.bz2 | wc -c

.tar.bz2 
解压:tar jxvf FileName.tar.bz2    解包后原始文件仍存在 
压缩:tar jcvf FileName.tar.bz2 DirName 
列出内容:bzcat FileName.tar.bz2 | wc -c 
——————————————— 
.bz 
解压1bzip2 -d FileName.bz    解包后原始文件消失 
解压2bunzip2 FileName.bz    解包后原始文件消失 
压缩:未知 
列出内容:bzcat FileName.bz | wc -c

.tar.bz 
解压:tar jxvf FileName.tar.bz   解包后原始文件仍存在 
压缩:未知 
列出内容:bzcat FileName.tar.bz | wc –c       tar tvf test.tar.bz 
——————————————— 
.Z 
解压:uncompress FileName.Z    解包后原始文件消失 
压缩:compress FileName 
.tar.Z

解压:tar Zxvf FileName.tar.Z 
压缩:tar Zcvf FileName.tar.Z DirName

——————————————— 
.xz 
解压:uncompress FileName.Z 
压缩:compress FileName 
.tar.Z

解压:tar Zxvf FileName.tar.Z 
压缩:tar Zcvf FileName.tar.Z DirName

——————————————— 
.zip 
解压:unzip FileName.zip    解包后原始文件仍存在 
压缩:zip FileName.zip DirName 
列出内容:unzip –l FileName.zip


——————————————— 
.rar 
解压:rar x FileName.rar    解包后原始文件仍存在 
压缩:rar a FileName.rar DirName 
列出内容:unrar –t FileName.rar 
———————————————

 

总结:gzipbzip2uncompress等命令均会改变原文件,而tarunzipunrar等命令则不会改变原始文件,压缩文件类似于.tar[.gz/bz/bz2/Z]均可用tar命令操作,而filename.gz/bz/bz2/Z等格式则只能用对应的gzipbzip2uncompress等命令操作。

补充:

tar 
-c:
建立压缩档案 
-x
:解压 
-t
:查看内容 
-r
:向压缩归档文件末尾追加文件 
-u
:更新原压缩包中的文件 
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。


-z
:有gzip属性的 
-j
:有bz2属性的 
-Z
:有compress属性的 
-v
:显示所有过程 
-O
:将文件解开到标准输出


下面的参数-f是必须的 
-f:
使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。 
# tar -cf all.tar *.jpg
这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。 
# tar -rf all.tar *.gif 
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。 
# tar -uf all.tar logo.gif 
这条命令是更新原来tarall.tarlogo.gif文件,-u是表示更新文件的意思。 
# tar -tf all.tar 
这条命令是列出all.tar包中所有文件,-t是列出文件的意思 
# tar -xf all.tar 
这条命令是解出all.tar包中所有文件,-x是解开的意思 
压缩 
tar –cvf jpg.tar *.jpg //
将目录里所有jpg文件打包成tar.jpg 
tar –czf jpg.tar.gz *.jpg //
将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz 
tar –cjf jpg.tar.bz2 *.jpg //
将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2 
tar –cZf jpg.tar.Z *.jpg //
将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z 
rar a jpg.rar *.jpg //rar
格式的压缩,需要先下载rar for linux 
zip jpg.zip *.jpg //zip
格式的压缩,需要先下载zip for linux 
解压 
tar –xvf file.tar //
解压 tar 
tar -xzvf file.tar.gz //
解压tar.gz 
tar -xjvf file.tar.bz2 //
解压 tar.bz2 
tar –xZvf file.tar.Z //
解压tar.Z 
unrar e file.rar //
解压rar 
unzip file.zip //
解压zip 
总结 
1
*.tar tar –xvf 解压 
2
*.gz gzip -d或者gunzip 解压 
3
*.tar.gz*.tgz tar –xzf 解压 
4
*.bz2 bzip2 -d或者用bunzip2 解压 
5
*.tar.bz2tar –xjf 解压 
6
*.Z uncompress 解压 
7
*.tar.Z tar –xZf 解压 
8
*.rar unrar e解压 
9
*.zip unzip 解压


 

Linux下常用压缩 解压命令和压缩比率对比

常用的格式有:
tar, tar.gz(tgz), tar.bz2,

不同方式,压缩和解压方式所耗CPU时间和压缩比率也差异也比较大。

1. tar
只是打包动作,相当于归档处理,不做压缩;解压也一样,只是把归档文件释放出来。

(1)打包归档格式:

复制代码

tar -cvf examples.tar files|dir

#说明:

-c, --create  create a new archive 创建一个归档文件

-v, --verbose verbosely list files processed 显示创建归档文件的进程

-f, --file=ARCHIVE use archive file or device ARCHIVE  后面要立刻接被处理的档案名,比如--file=examples.tar

 

#举例:

tar -cvf file.tar file1       #file1文件

tar -cvf file.tar file1 file2 #file1file2文件

tar -cvf file.tar dir         #dir目录

复制代码

(2)释放解压格式:

复制代码

tar -xvf examples.tar (解压至当前目录下)

tar -xvf examples.tar  -C /path (/path 解压至其它路径)

 

#说明:

-x, --extract, extract files from an archive 从一个归档文件中提取文件

 

#举例:

tar -xvf file.tar

tar -xvf file.tar -C /temp  #解压到temp目录下

复制代码

 

2. tar.gz tgz (tar.gztgz只是两种不同的书写方式,后者是一种简化书写,等同处理)
这种格式是Linux下使用非常普遍的一种压缩方式,
兼顾了压缩时间(耗费CPU)和压缩空间(压缩比率)
其实这是对tar包进行gzip算法的压缩

(1)打包压缩格式:

复制代码

tar -zcvf examples.tgz examples (examples当前执行路径下的目录)

 

说明:

-z, --gzip filter the archive through gzip 通过gzip压缩的形式对文件进行归档

 

举例:

tar -zcvf file.tgz dir #dir目录

复制代码

(2)释放解压格式:

tar -zxvf examples.tar (解压至当前执行目录下)

tar -zxvf examples.tar  -C /path (/path 解压至其它路径)

 

举例:

tar -zcvf file.tgz

tar -zcvf file.tgz -C /temp

3 tar.bz

Linux下压缩比率较tgz大,即压缩后占用更小的空间,使得压缩包看起来更小。
但同时在压缩,解压的过程却是非常耗费CPU时间。

(1)打包压缩格式:

复制代码

tar -jcvf examples.tar.bz2 examples   (examples为当前执行路径下的目录)

 

说明:

-j, --bzip2 filter the archive through bzip2 通过bzip2压缩的形式对文件进行归档

 

举例:

tar -jcvf file.tar.bz2 dir #dir目录

复制代码

 

(2)释放解压:

tar -jxvf examples.tar.bz2 (解压至当前执行目录下)

tar -jxvf examples.tar.bz2  -C /path (/path 解压至其它路径)

 

举例:

tar -jxvf file.tar.bz2

tar -jxvf file.tar.bz2 -C /temp

 

4 gz
压缩:
gzip -d examples.gz examples

解压:
gunzip examples.gz


5 zip
zip
格式是开放且免费的,所以广泛使用在 WindowsLinuxMacOS 平台,要说 zip 有什么缺点的话,就是它的压缩率并不是很高,不如 rar tar.gz 等格式。
压缩:
zip -r examples.zip examples (examples
为目录)

解压:
zip examples.zip

6 .rar
压缩:
rar -a examples.rar examples

解压:
rar -x examples.rar

 

压缩比率,占用时间对比

为了保证能够让压缩比率较为明显,需选取一个内容较多、占用空间较大的目录作为本次实验的测试。
找了一个大概有23G的目录来测试,首先要明确由于执行环境的变化,误差在所难免

首先明确一个概念:
压缩比率=原内容大小/压缩后大小,压缩比率越大,则表明压缩后占用空间的压缩包越小

.tar

复制代码

打包:

time tar -cvf test.tar /usr/test

时间:

real    3m20.709s

user    0m3.477s

sys     0m42.595s

 

大小:

打包前:23214680

打包后:22202984

 

耗时:3m20.709s

压缩比率:22202984/23214680

 

 

解压:

time tar -xvf test.tar

 

大小:

解压前:22202984

解压后:23211064

 

耗时:

real    2m47.548s

user    0m4.999s

sys     1m14.186s

复制代码

 

.tgz

复制代码

打包压缩:

time tar -zcvf test.tgz /usr/test

时间:

real    16m30.767s

user    16m1.394s

sys     1m7.391s

 

大小:

打包前:23211064

打包后:18949032

 

耗时:

压缩比率:

 

解压:

tar -zxvf test.tar

 

大小:

解压前:18949032

解压后:23211064

 

耗时:

real    3m52.418s

user    2m46.325s

sys     1m21.442s

复制代码

 

.tar.bz2

复制代码

打包压缩:

time tar -jcvf test.tar.bz2 /usr/test

 

时间:

real    80m39.422s

user    80m14.599s

sys     0m58.623s

 

大小:

打包前:23211064

打包后:18728904

 

耗时:80m39.422s

压缩比率:

 

 

解压:

time tar -jxvf test.tar.bz2

 

时间:

real    27m54.525s

user    27m44.108s

sys     1m43.645s

 

大小:

解压前:18728904

解压后:23211064

复制代码

 

 

 

 

综上结果,初步结论:

综合起来,在压缩比率上: tar.bz2>tgz>tar
占用空间与压缩比率成反比: tar.bz2<tgz<tar
耗费时间(打包,解压)
打包:tar.bz2>tgz>tar
解压: tar.bz2>tar>tgz
从效率角度来说,当然是耗费时间越短越好

因此,Linux下对于占用空间与耗费时间的折衷多选用tgz格式,不仅压缩率较高,而且打包、解压的时间都较为快速,是较为理想的选择。

结论:

再一次印证了物理空间与时间的矛盾(想占用更小的空间,得到高压缩比率,肯定要牺牲较长的时间;反之,如果时间较为宝贵,要求快速,那么所得的压缩比率一定较小,当然会占用更大的空间了)


.tar.zst 格式 (需安装zstd,下载程序包含直接make)

解压:tar -I zstd -xvf  xxx.tar.zst 

压缩:不知道怎么搞


openmpi,默认路径:/usr/local/lib

./configure -prefix=/home/.......

make all install