Linux中压缩/解压命令及含义

1.概览

Linux下常见的压缩包格式有5种:

  • zip
  • tar.gz
  • tar.bz2
  • tar.xz
  • tar.Z
    tar是打包格式,来源于最初打包程序被设计的目的:将文件备份到磁带上(tape archive)。tar命令本身只有打包作用,并不会进行压缩。
    tar.后的内容指的是压缩方式,常见的压缩方式有:
  • gz:gzip格式(GUNZip)
  • bz2:bzip2格式(basic leucine-zipper 2)

2.对目录(文件夹)进行压缩/解压

不管使用何种压缩方法,都必须首先对目录进行打包操作,因此需要使用tar。需要说明的是,可能是由于tar 命令更多地受到古老的 UNIX 风格影响, 以下tar 命令中的连接符 - 不是必须的,可以省略。
压缩方式以gzip为例(如使用bz2,只需把参数中的g替换成j即可。)

2.1tar相关参数

主选项:

  • -c: create,建立压缩档案
  • -x:extract,从文件中提取(即解压)
  • -t:list,查看目标tar包中目录和文件列表
  • -r:append,向压缩归档文件末尾追加文件
  • -u:update,更新原压缩包中的文件
    注意:以上5个命令是互斥的,使用了其中1个便不能再同时使用其他的4个命令。

辅助选项:

  • -f:file,使用档案文件或设备,这个选项在如今通常是必选的
  • -m:modification time,把所有文件的修改时间设定为现在
  • -v:verbose,在压缩或解压缩过程中显示正在处理的文件名
  • -w:interaction,进行每一步都需要确认
  • -N: newer,比后面接的日期更新的文件才会被打包
  • -p:preserve-permissions,保留压缩包内所有文件的属性、权限
  • -z:tar.gz,用gzip来压缩或解压
  • -Z:tar.Z,用compress来压缩或解压
  • -j:tar.bz2,用bzip2来压缩或解压
  • -J:tar.xz,用xz来压缩或解压

需要使用多个参数时,除了f需要放在最后,其他不做要求。

2.2 实例

以目录 /myexample为例。

#压缩tar.gz
tar -zcvf myexample.tar.gz myexample/
#压缩当前目录下所有.py文件到tar.gz
tar -zcvf all_py_file.tar.gz *.py
#解压tar.gz
tar -zxvf myexample.tar.gz
#解压tar.gz到指定文件夹
tar -zxvf myexample.tar.gz -C $PATH
#压缩tar.Z
tar -Zcvf myexample.tar.Z myexample/
#解压tar.Z
tar -Zxvf myexample.tar.Z
#压缩tar.bz2
tar -jcvf myexample.tar.gz myexample/
#解压tar.bz2
tar -jxvf myexample.tar.bz2
#压缩tar.xz
tar -Jcvf myexample.tar.xz myexample/
#解压tar.xz
tar -Jxvf myexample.tar.xz

其他一些可能常用的操作:

#查阅myexample.tar.gz中有哪些文件
tar -ztf myexample.tar.gz
tar -ztvf myexample.tar.gz #会显示所有文件的详细信息,包括权限、创建时间等
#只压缩比2019-1-17更新的文件
tar -N '2019/1/17' -zcvf myexample.tar.gz myexample/
#压缩myexample文件夹下除了子文件夹mysub的所有文件
tar --exculde myexample/mysub -zcvf myexample.tar.gz
#只解压myexample.tar.gz内子文件夹mysub
tar -zxvf myexample.tar.gz mysub #根目录myexample不需要写

2.3注意事项

  1. 关于tar的详细命令可以使用如下命令:
    tar --help

2.事实上, 从1.15版本开始tar就可以自动识别压缩的格式,故不需人为区分压缩格式就能正确解压:

tar -xvf filename.tar.gz
tar -xvf filename.tar.bz2
tar -xvf filename.tar.xz
tar -xvf filename.tar.Z

3 对文件进行压缩/解压

以example.py为例。

3.1 gzip zcat

  • -c :stdout,以标准输出书写,并保留源文件
  • -d :decompress,解压缩参数
  • -t :test,检验一个压缩档的一致性,看看文件有无错误;
  • -# :压缩等级,-1 最快,压缩比最差;-9 最慢,压缩比最好;默认为-6
#压缩.gz
gzip example.py #原来的example.py文件会消失并产生example.py.gz文件
#压缩.gz并保留源文件
gzip -c example.py > example.py.gz
#压缩.gz并保留源文件,以-9等级
gzip -9 -c example.py > example.py.gz
#解压.gz
gzip -d example.py.gz
#显示.gz文件内容
zcat example.py.gz

3.2 bzip2, bzcat

  • -c :stdout,以标准输出书写,并保留源文件
  • -d :解压缩的参数
  • -z :压缩的参数
  • -# :压缩等级,-1 最快,压缩比最差;-9 最慢,压缩比最好;默认为-6
#压缩bz2
bzip2 -z example.py #原来的example.py文件会消失并产生example.py.bz2文件
#压缩.bz2并保留源文件
bzip2 -c example.py > example.py.bz2
#压缩.bz2并保留源文件,以-9等级
bzip2 -9 -c example.py > example.py.bz2
#解压.bz2
bzip2 -d example.py.bz2
#显示.gz文件内容
bzcat example.py.bz2

你可能感兴趣的:(Linux中压缩/解压命令及含义)