前言

今天主要和大家分享下Linux中的压缩、解压缩命令。

zip:是比较常用的文档压缩格式,最大的有点是跨平台,缺点是支持的压缩率不是很高。

tar:好处是只消耗非常少的CPU及时间打包,只是一个打包工具,并不负责压缩。

tar.gz:压缩时不会占用太多的CPU,就可以得到一个非常理想的压缩率。

tar.bz2和xz:有更好的压缩率,压缩文件小,但是压缩时间也比较长。

tar压缩

tar 命令用于文件的打包或压缩,是最为常用的打包压缩命令,其语法格式如下:

tar [选项] 文件名.tar.gz 源文件

常用参数选项

-c --create :创建新的归档文件,即打包,打包的意思就是说把一堆文件打包成一个文件
-v --verbose :可视化,显示详细的tar处理的文件信息的过程
-f --file :要操作的文件名
-x --extract :解压文件
-z --gzip, --gunzip, --ungzip :通过 gzip 来进行归档压缩,如 tar -czvf etc.tar.gz /etc/,解压使用tar -zxvf test.tar.gz
-j --bzip2 :通过 bzip2 来归档压缩文件,如 tar -jcvf test.tar.bz2 /etc/,解压使用tar -jxvf test.tar.bz2
-J :使用xz压缩工具压缩成.xz文件,如 tar -Jcvf test.tar.xz /etc/,解压使用tar -Jxvf test.tar.xz
-t --list :表示查看文件,查看文件中的文件内容
-C --directory=DIR :解压文件至指定的目录,如果是解压到当前目录,可以不加-C

压缩

#将dir1文件夹压缩成dir1.tar.gz
tar -zcvf dir1.tar.gz dir1/

解压缩

#将dir1.tar.gz解压到当前目录(若当前目录中存在目录dir1,会替换覆盖目录中的同名文件)
tar -zxvf dir1.tar.gz
#将dir1.tar.gz解压到dir1_copy目录下(前提是要自己创建dir1_copy目录)
tar -zxvf dir1.tar.gz -C dir1_copy/

查看压缩文件中包含的内容

tar -tvf dir1.tar.gz

打包

仅仅是打包/etc/目录,并没有压缩:

tar -cvf etc.tar  /etc/

解包

tar -xvf etc.tar

我们一般使用-z选项来进行gzip格式压缩,虽然使用-J选项来进行xz格式压缩,压缩率最好的,压缩后文件大小也是最小的,但它的压缩时间也相对较长。

注意tar -zcfv nie.tar.gz dir1会报错,-f选项后面需要紧跟文件才行,所以-f要放在所有参数选项的最后面。

zip压缩

Centos7默认没有zip压缩、unzip解压缩命令,需要安装,命令如下:

yum install zip unzip

zip命令的基本用法:

zip [参数] [打包后的文件名] [打包的目录路径]

zip命令参数选项

-a 将文件转成ASCII模式

-F 尝试修复损坏的压缩文件

-h 显示帮助界面

-m 将文件压缩之后,删除源文件

-n 特定字符串 不压缩具有特定字尾字符串的文件

-o 将压缩文件内的所有文件的最新变动时间设为压缩时候的时间

-q 安静模式,在压缩的时候不显示指令的执行过程

-r 将指定的目录下的所有子目录以及文件一起处理

-S 包含系统文件和隐含文件(S是大写)

-t 日期 把压缩文件的最后修改日期设为指定的日期,日期格式为mmddyyyy

-y 保留符号链接

-x 指定不追加到zip包里的文件

unzip命令参数选项

-l:显示压缩文件内所包含的文件;

-t:检查压缩文件是否正确;

-o:不必先询问用户,unzip执行后覆盖原有的文件;

-n:解压缩时不要覆盖原有的文件;

-q:执行时不显示任何信息;

-d<目录>:指定文件解压缩后所要存储的目录;

压缩

# 将dir1目录下所有内容压缩到dir1.zip
zip -r dir1.zip dir1
#压缩当前目录下所有的内容到all.zip(.代表当前目录)
zip -r all.zip .
zip -r all.zip *

解压缩

#直接解压到当前目录(解压后当前目录中并没有dir1_copy目录)
unzip dir1_copy.zip
#将dir1.zip解压到test目录下(若在当前目录下没有test目录,会自动新建test目录)
unzip dir1.zip -d test

查看压缩文件中包含的内容

unzip -l dir1.zip

更多推荐

Linux压缩解压缩命令