雨林的Blog

Linux中tar.gz、bz2、zip等压缩及解压命令以及含义

Linux中tar.gz、bz2、zip等压缩及解压命令以及含义

1. 概览

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

tar.后的内容指的是压缩方式,常见的压缩方式有:


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

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

2.1 tar相关参数

主选项:

辅助选项:

需要使用多个参数时,除了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

#压缩.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

#压缩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

4. zip压缩、unzip解压缩命令的使用详解

4.1 zip 压缩

zip 压缩主要参数

zip 压缩实例

#压缩zip
#将当前文件夹下的所有文件打包成一个 myexample.zip 文件
zip myexample.zip *

#把当前文件夹下所有 my1*.doc 的文件打包成一个 myexample.zip 文件
zip myexample.zip my1*.doc

#把一个文件 abc.txt 和一个目录 dir1 压缩成为 myexample.zip
zip -r myexample.zip abc.txt dir1

#将 /home/Blinux/html/ 这个目录下所有文件和文件夹打包为当前目录下的 myexample.zip
#备注:-q 为安静模式,在压缩的时候不显示指令的执行过程
zip -qr myexample.zip /home/Blinux/html

#添加一个文件到 .zip 文件中
#备注:如果当初并没有把 my32.doc 压在 myexample.zip 里面,现在把它加进去。-g 选项是增加而不要重新产生的意思。
zip -g myexample.zip my32.doc

#将更改过的文件添加到压缩包中
#备注:如果当初 my2*.doc 都已经压缩进 myexample.zip 里面了,但是后来 my2*.doc 中有几个文件有更改,又不想去找出到底是哪些文件更改了,这条命令请系统自行帮助检查,更改过的才更新到压缩,否则就不必动。
zip -u myexample.zip my2*.doc

#删除除 .zip 文件中的指定文件
#备注:如果当初 my18.doc 是压缩在 myexample.zip 中的一个文件,现在这条命令把它从压缩文件中抽走并删掉。-d 是删除的意思。
zip -d myexample.zip my18.doc

4.2 unzip 解压缩

unzip 解压缩主要参数

unzip 解压缩实例

#解压zip
#把文件解压到当前目录下
unzip myexample.zip

#如果要把文件解压到指定的目录下,需要用到-d参数。
unzip -d /temp myexample.zip

#解压的时候,有时候不想覆盖已经存在的文件,那么可以加上 -n 参数 /temp是指定的目录
unzip -n myexample.zip
unzip -n -d /temp myexample.zip

#将压缩文件 myexample.zip 在指定目录 tmp 下解压缩,如果已有相同的文件存在,要求 unzip 命令覆盖原先的文件
unzip -o myexample.zip -d /tmp/

#只看一下 zip 压缩包中包含哪些文件,不进行解压缩
unzip -l test.zip

#查看显示的文件列表还包含压缩比率
unzip -v test.zip

#检查 zip 文件是否损坏
unzip -t test.zip

https://www.jianshu.com/p/1ea9920beecc
https://www.jb51.net/article/138120.htm

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »