Linux基础篇(五)-- 文档压缩与解压缩

        在Linux中,系统中所有的数据文件以及硬件资源都是以文件或目录的形式存储,即一切都是文件。对于文档的操作,通常有归档和压缩两种。归档是指将一系列相互关联的文件及目录整合到一个文件中。压缩是指将归档后的文件按照一定的格式储存到磁盘上,而新格式的文件大小比压缩前所有文件的大小总和要小。
        在 Windows 上最常见的不外乎这两种 *.zip*.7z 后缀的压缩文件。而在 Linux 除了上面常见的格式以外,还有 .rar*.gz*.xz*.bz2*.tar*.tar.gz*.tar.xz*.tar.bz2。其中,Ubuntu拥有自带的 ZIP 软件包,可以对ZIP格式文件进行相应的操作,但系统默认没有安装 RAR for Linux。Ubuntu还有一些特殊的压缩文件格式,如 GZIPBZIP2Compress 等。表1列出了Ubuntu系统常用的压缩文件格式和常用工具信息。

表1 Ubuntu常用压缩及解压缩工具
压缩工具 解压工具 文件扩展名
gzip gunzip .gz
bzip2 bunzip2 .bz2
zip unzip .zip
        目前,在压缩及解压缩领域,使用最广泛的是 tar 命令,通常文件扩展名为 tar,然后可以再使用 zipgzipbzip2 等压缩工具进行压缩。通常由tar 命令和 gzip 命令创建的文件以 tar.gztgz 为扩展名;由 tar 命令和 bzip2 命令创建的文件以 tar.bz2tbz2 为扩展名;由 tar 命令和 zip 命令创建的文件以 tar.ztbz 为扩展名,

1 zip压缩文件

        Zip命令用于将一个或多个文件压缩成为一个.zip文件。
        语法:zip [参数] [压缩文件名.zip] [被压缩文件列表]

参数 含义
-b<工作目录> 指定暂时存放文件的目录
-d 从压缩文件内删除指定文件
-F 尝试修复已损坏的压缩文件
-g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件
-h 在线帮助
-j 只保存文件名称及其内容,而不存放任何目录名称
-m 将文件压缩并加入压缩文件后,删除原始文件,即把文件移动到压缩文件中
-n<字尾字符串> 不压缩具有特定字尾字符串的文件
-q 不显示指令执行过程
-r 递归处理,将指定目录下的所有文件和子目录一并处理
-S 包含系统和隐藏文件
-t<日期时间> 把压缩文件的日期设为指定日期
-u 更换较新的文件到压缩文件内
-v 显示指令执行过程或显示版本信息
-x<范本样式> 压缩时排除符合条件的文件
-y 直接保存符号链接,而非该链接所指向的文件
-z 替压缩文件加上注释
-$ 保存第一个被压缩文件所在磁盘的卷册名称
-num 指定压缩效率,介于1~9的数值
*.zip   //zip程序打包压缩的文件

        常用的命令主要包括 ziptar
        例子:

zip -r -q -o shiyanlou.zip /home/shiyanlou/Desktop
du -h shiyanlou.zip

        使用 zip 打包文件夹,注意输入完整的参数和路径:
        上面命令将目录 /home/shiyanlou/Desktop 打包成一个文件,并查看了打包后文件的大小和类型。第一行命令中,-r 参数表示递归打包包含子目录的全部内容,-q 参数表示为安静模式,即不向屏幕输出信息,-o,表示输出文件,需在其后紧跟打包输出文件名。后面使用 du 命令查看打包后文件的大小。

        设置压缩级别为 9 和 1(9 最大,1 最小),重新打包:

zip -r -9 -q -o shiyanlou-9.zip 
/home/shiyanlou/Desktop -x ~/*.zip

        这里添加了一个参数用于设置压缩级别 -[1-9],1 表示最快压缩但体积大,9 表示体积最小但耗时最久。最后那个 -x 是为了排除我们上一次创建的 zip 文件,否则又会被打包进这一次的压缩文件中,注意:这里只能使用绝对路径,否则不起作用

        创建加密 zip
        使用 -e 参数可以创建加密压缩包

zip -r -e -o shiyanlou_encryption.zip /home/shiyanlou/Desktop

        注意: 关于 zip 命令,因为 Windows 系统与 Linux/Unix 在文本文件格式上的一些兼容问题,比如换行符(为不可见字符),在 Windows 为 CR+LF(Carriage-Return+Line-Feed:回车加换行),而在 Linux/Unix 上为 LF(换行),所以如果在不加处理的情况下,在 Linux 上编辑的文本,在 Windows 系统上打开可能看起来是没有换行的。如果你想让你在 Linux 创建的 zip 压缩文件在 Windows 上解压后没有任何问题,那么你还需要对命令做一些修改:

zip -r -l -o shiyanlou.zip /home/shiyanlou/Desktop

2 使用unzip解压缩zip文件

        unzip用于将一个.zip压缩文件压缩文件解压缩,具体使用如下:
        语法:unzip [参数] [压缩文件名.zip]

参数 含义
-l 显示压缩文件内所包含的文件
-t 检查压缩文件是否正确
-v 执行时显示详细的信息
-z 仅显示压缩文件的备注文字
-C 压缩文件中的文件名称区分大小写
-j 不处理压缩文件中原有的目录路径
-L 将压缩文件中的全部文件名改为小写
-n 解压缩时不要覆盖原有文件
-P<密码> 使用zip的密码选项
-q 执行时不显示任何信息
-d<目录> 指定文件解压缩后所要存储的目录
-x<文件> 指定不要处理.zip压缩文件中的哪些文件
-Z 显示压缩文件内的文件信息,但不解压
        将 shiyanlou.zip 解压到当前目录:
unzip shiyanlou.zip

        使用安静模式,将文件解压到指定目录:

unzip -q shiyanlou.zip -d ziptest

        上述指定目录不存在,将会自动创建。如果你不想解压只想查看压缩包的内容你可以使用 -l 参数:

unzip -l shiyanlou.zip

        注意:会出现版本兼容问题,通常 Windows 系统上面创建的压缩文件,如果有有包含中文的文档或以中文作为文件名的文件时默认会采用 GBK 或其它编码,而 Linux 上面默认使用的是 UTF-8 编码,如果不加任何处理,直接解压的话可能会出现中文乱码的问题(有时候它会自动帮你处理),为了解决这个问题,我们可以在解压时指定编码类型。
使用 -O(英文字母,大写 o)参数指定编码类型:

unzip  -o GBK 中文压缩文件.zip

3 tar打包工具

        tar是Ubuntu中使用效率较高的文档压缩命令,它的优势在于将归档和压缩融合在一起同时完成,而且压缩和解压缩都使用同样的命令,只是参数不同。它可以用来对 .tar.gz.tar.bz2 后缀的文件进行操作。
        语法:tar [参数] [压缩文件名] [被压缩文件列表]

参数 含义
-c 建立新的归档文件
-C<目录> 切换到指定目录
-f<备份文件> 指定归档文件
-j 用tar生成归档文件,然后用bzip2压缩
-k 解开备份文件时,不覆盖已有文件
-m 还原文件时,不变更文件的更改时间
-r 新增文件到已存在备份文件的结尾部分
-t 列出备份文件的内容
-v 显示指令执行过程
-w 遇到问题时先询问用户
-x 从备份文件中释放文件
-z 用tar生成归档文件,然后用gzip压缩
-Z 用tar生成归档文件,然后用compress压缩
例如:
$ cd /home/shiyanlou			
$ touch a b c
$ tar -cvf test.tar a b c		# 用-c参数,将a,b,c 3个文件归档到test.tar文件中,但不压缩,用-v参数查看执行过程
$ tar -tf test.tar				# 用-t参数查看test.tar归档所包含的文件
$ tar -cvjf test.tar.bz2 a b c	# 用-cvjf参数创建test.tar.bz2压缩文件
$ tar -cvzf tast.tar.gz a b c	# 用-cvzf参数创建test.tar.gz压缩文件
$ tar -xvjf tast.tar.bz2 a b c	# 用-xvjf参数解压缩test.tar.bz2文件
$ tar -xvzf tast.tar.gz a b c	# 用-xvzf参数解压缩test.tar.gz文件
$ tar -P -cf shiyanlou.tar /home/shiyanlou/Desktop

        上面命令中,-P 保留绝对路径符,-c 表示创建一个 tar 包文件,-f 用于指定创建的文件名,注意文件名必须紧跟在 -f 参数之后,比如不能写成 tar -fc shiyanlou.tar,可以写成 tar -f shiyanlou.tar -c ~。你还可以加上 -v 参数以可视的的方式输出打包的文件。

        解包一个文件(-x 参数)到指定路径的已存在目录(-C 参数):

mkdir tardir
tar -xf shiyanlou.tar -C tardir

        只查看不解包文件 -t 参数:

tar -tf shiyanlou.tar

        保留文件属性和跟随链接(符号链接或软链接),有时候我们使用 tar 备份文件当你在其他主机还原时希望保留文件的属性(-p 参数)和备份链接指向的源文件而不是链接本身(-h 参数):

tar -cphf etc.tar /etc

        对于创建不同的压缩格式的文件,对于 tar 来说是相当简单的,需要的只是换一个参数,这里我们就以使用 gzip 工具创建 *.tar.gz 文件为例来说明。

        我们只需要在创建 tar 文件的基础上添加 -z 参数,使用 gzip 来压缩文件:

tar -czf shiyanlou.tar.gz /home/shiyanlou/Desktop

        解压 *.tar.gz 文件:

 tar -xzf shiyanlou.tar.gz

4 总结

常用命令:

  • zip:
  • 打包 :zip something.zip something (目录请加 -r 参数)
  • 解包:unzip something.zip
  • 指定路径:-d 参数
  • tar:打包:tar -cf something.tar something
  • 解包:tar -xf something.tar
  • 指定路径:-C 参数

你可能感兴趣的:(Linux,zip,tar,压缩文档,ubuntu)