四周第四次课(1月5日)
6.1 压缩打包介绍
6.2 gzip压缩工具
6.3 bzip2压缩工具
6.4 xz压缩工具
=====================================================================================================================================================================================================================================================================================================================================================================================================================================================================
gzip命令:
用来压缩文件。
gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处“.gz”扩展名。
gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。
语法
gzip(选项)(参数)
选项
-a或——ascii:使用ASCII文字模式;
-d或--decompress或----uncompress:解开压缩文件;
-f或——force:强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接;
-h或——help:在线帮助;
-l或——list:列出压缩文件的相关信息;
-L或——license:显示版本与版权信息;
-n或--no-name:压缩文件时,不保存原来的文件名称及时间戳记;
-N或——name:压缩文件时,保存原来的文件名称及时间戳记;
-q或——quiet:不显示警告信息;
-r或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
-S或<压缩字尾字符串>或----suffix<压缩字尾字符串>:更改压缩字尾字符串;
-t或——test:测试压缩文件是否正确无误;
-v或——verbose:显示指令执行过程;
-V或——version:显示版本信息;
-<压缩效率>:压缩效率是一个介于1~9的数值,预设值为“6”,指定愈大的数值,压缩效率就会愈高;
--best:此参数的效果和指定“-9”参数相同;
--fast:此参数的效果和指定“-1”参数相同。
参数
文件列表:指定要压缩的文件列表。
实例
把test6目录下的每个文件压缩成.gz文件
gzip *
把上例中每个压缩的文件解压,并列出详细的信息
gzip -dv *
详细显示例1中每个压缩的文件的信息,并不解压
gzip -l *
压缩一个tar备份文件,此时压缩文件的扩展名为.tar.gz
gzip -r log.tar
递归的压缩目录
gzip -rv test6
这样,所有test下面的文件都变成了*.gz,目录依然存在只是目录里面的文件相应变成了*.gz.这就是压缩,和打包不同。因为是对目录操作,所以需要加上-r选项,这样也可以对子目录进行递归了。
递归地解压目录
gzip -dr test6
=====================================================================================================================================================================================================================================================================================================================================================================================================================================================================
bzip2命令:
用于创建和管理(包括解压缩)“.bz2”格式的压缩包。
我们遇见Linux压缩打包方法有很多种,以下讲解了Linux压缩打包方法中的Linux bzip2命令的多种范例供大家查看,相信大家看完后会有很多收获。
语法
bzip2(选项)(参数)
选项
-c或——stdout:将压缩与解压缩的结果送到标准输出;
-d或——decompress:执行解压缩;
-f或-force:bzip2在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件。若要覆盖。请使用此参数;
-h或——help:在线帮助;
-k或——keep:bzip2在压缩或解压缩后,会删除原始文件。若要保留原始文件,请使用此参数;
-s或——small:降低程序执行时内存的使用量;
-t或——test:测试.bz2压缩文件的完整性;
-v或——verbose:压缩或解压缩文件时,显示详细的信息;
-z或——compress:强制执行压缩;
-V或——version:显示版本信息;
--repetitive-best:若文件中有重复出现的资料时,可利用此参数提高压缩效果;
--repetitive-fast:若文件中有重复出现的资料时,可利用此参数加快执行效果。
参数
文件:指定要压缩的文件。
实例
压缩指定文件filename:
bzip2 filename
或
bzip2 -z filename
这里,压缩的时候不会输出,会将原来的文件filename给删除,替换成filename.bz2.如果以前有filename.bz2则不会替换并提示错误(如果想要替换则指定-f选项,例如bzip2 -f filename;如果filename是目录则也提醒错误不做任何操作;如果filename已经是压过的了有bz2后缀就提醒一下,不再压缩,没有bz2后缀会再次压缩。
解压指定的文件filename.bz2:
bzip2 -d filename.bz2
或
bunzip2 filename.bz2
这里,解压的时候没标准输出,会将原来的文件filename.bz2给替换成filename。如果以前有filename则不会替换并提示错误(如果想要替换则指定-f选项,例如bzip2 -df filename.bz2。
压缩解压的时候将结果也输出:
$bzip2 -v filename
输入之后,输出如下:
filename: 0.119:1, 67.200 bits/byte, -740.00% saved, 5 in, 42 out.
这里,加上-v选项就会输出了,只用压缩举例了,解压的时候同理bzip2 -dv filename.bz2不再举例了。
模拟解压实际并不解压:
bzip2 -tv filename.bz2
输入之后,输出如下:
filename.bz2: ok
这里,-t指定要进行模拟解压,不实际生成结果,也就是说类似检查文件,当然就算目录下面有filename也不会有什么错误输出了,因为它根本不会真的解压文件。为了在屏幕上输出,这里加上-v选项了,如果是真的解压bzip2 -dv filename.bz2则输出的是把"ok"替换成了"done"。
压缩解压的时候,除了生成结果文件,将原来的文件也保存:
bzip2 -k filename
这里,加上-k就保存原始的文件了,否则原始文件会被结果文件替代。只用压缩举例了,解压的时候同理$bzip2 -dk filename.bz2不再举例了。
解压到标准输出:
bzip2 -dc filename.bz2
输入之后,输出如下:
hahahhaahahha
这里,使用-c指定到标准输出,输出的是文件filename的内容,不会将filename.bz2删除。
压缩到标准输出:
bzip2 -c filename
bzip2: I won‘t write compressed data to a terminal.
bzip2: For help, type: `bzip2 --help‘.
这里,使用-c指定压缩到标准输出不删除原有文件,不同的是,压缩后的文件无法输出到标准输出。
使用bzip2的时候将所有后面的看作文件(即使文件名以‘-‘开头):
bzip2 -- -myfilename
这里主要是为了防止文件名中-产生以为是选项的歧义。
=====================================================================================================================================================================================================================================================================================================================================================================================================================================================================
KEYMAP="cn"
FOnT="latarcyrheb-sun16"
LANG="zh_CN.UTF-8"
PRUNE_BIND_MOUNTS = "yes"
PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fuse.sshfs fusectl gfs gfs2 gpfs hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs"
PRUNENAMES = ".git .hg .svn"
PRUNEPATHS = "/afs /media /mnt /net /sfs /tmp /udev /var/cache/ccache /var/lib/yum/yumdb /var/spool/cups /var/spool/squid /var/tmp"
[[email&#160;protected] d6z]# gzip -d 1.txt.gz
[[email&#160;protected] d6z]# gzip -c 1.txt > /tmp/11.txt.gz
[[email&#160;protected] d6z]# ls
1.txt
[[email&#160;protected] d6z]# ls /tmp/11.txt.gz
/tmp/11.txt.gz
[[email&#160;protected] d6z]# file !$
file /tmp/11.txt.gz
/tmp/11.txt.gz: gzip compressed data, was "1.txt", from Unix, last modified: Fri Jan 5 21:32:55 2018
[[email&#160;protected] d6z]# gzip -d -c 1.txt > /tmp/11.txt.gz /tmp/d6z/2.txt
gzip: 1.txt: not in gzip format
gzip: /tmp/d6z/2.txt.gz: No such file or directory
[[email&#160;protected] d6z]# gzip -d -c 1.txt > /tmp/11.txt.gz > /tmp/d6z/2.txt
gzip: 1.txt: not in gzip format
[[email&#160;protected] d6z]# lsd
-bash: lsd: 未找到命令
[[email&#160;protected] d6z]# ls
1.txt 2.txt
[[email&#160;protected] d6z]# wc -l 1.txt 2.txt
123139 1.txt
0 2.txt
123139 总用量
[[email&#160;protected] d6z]# gzip -d -c /tmp/11.txt.gz > /tmp/d6z/2.txt
gzip: /tmp/11.txt.gz: unexpected end of file
[[email&#160;protected] d6z]# ls /tmp/11.txt.gz
/tmp/11.txt.gz
[[email&#160;protected] d6z]# gzip -d -c /tmp/11.txt.gz > /tmp/d6z/3.txt
gzip: /tmp/11.txt.gz: unexpected end of file
[[email&#160;protected] d6z]# ls
1.txt 2.txt 3.txt
[[email&#160;protected] d6z]# wc -l 1.txt 2.txt 3.txt
123139 1.txt
0 2.txt
0 3.txt
123139 总用量
[[email&#160;protected] d6z]# gzip -d -c /tmp/11.txt.gz > /tmp/d6z/3.txt
gzip: /tmp/11.txt.gz: unexpected end of file
[[email&#160;protected] d6z]# gzip -dc /tmp/11.txt.gz > /tmp/d6z/3.txt
gzip: /tmp/11.txt.gz: unexpected end of file
[[email&#160;protected] d6z]# ls /tmp/
11.txt.gz fstab
123 passwd.sh
12.txt systemd-private-7534822b871f401a97d8ffc1abd00603-vmtoolsd.service-28fmWV
1.txt systemd-private-fc86786af1c94a90a7ee58458ca44c06-vmtoolsd.service-NvU9XZ
d6z xxx.sh
[[email&#160;protected] d6z]# gzip -c 1.txt > /tmp/1.txt.gz
[[email&#160;protected] d6z]# gzip -d -c /tmp/1.txt.gz > /tmp/d6z/4.txt
[[email&#160;protected] d6z]# wc -l 1.txt 2.txt 3.txt 4.txt
123139 1.txt
0 2.txt
0 3.txt
123139 4.txt
246278 总用量
[[email&#160;protected] d6z]# ls /tmp/
11.txt.gz fstab
123 passwd.sh
12.txt systemd-private-7534822b871f401a97d8ffc1abd00603-vmtoolsd.service-28fmWV
1.txt systemd-private-fc86786af1c94a90a7ee58458ca44c06-vmtoolsd.service-NvU9XZ
1.txt.gz xxx.sh
d6z
[[email&#160;protected] d6z]# du -sh *.txt
4.7M 1.txt
0 2.txt
0 3.txt
4.7M 4.txt
[[email&#160;protected] d6z]# file !$
file *.txt
1.txt: C source, UTF-8 Unicode text, with very long lines
2.txt: empty
3.txt: empty
4.txt: C source, UTF-8 Unicode text, with very long lines
[[email&#160;protected] d6z]# file /tmp/11.txt.gz 1.txt.gz
/tmp/11.txt.gz: empty
1.txt.gz: cannot open (No such file or directory)
[[email&#160;protected] d6z]# file /tmp/11.txt.gz
/tmp/11.txt.gz: empty
[[email&#160;protected] d6z]# file /tmp/1.txt.gz
/tmp/1.txt.gz: gzip compressed data, was "1.txt", from Unix, last modified: Fri Jan 5 21:32:55 2018
[[email&#160;protected] d6z]# file /tmp/11.txt.gz
/tmp/11.txt.gz: empty
[[email&#160;protected] d6z]# ls
1.txt 2.txt 3.txt 4.txt
[[email&#160;protected] d6z]# yum install -y bzip2
已加载插件:fastestmirror
base | 3.6 kB 00:00:00
extras | 3.4 kB 00:00:00
updates | 3.4 kB 00:00:00
updates/7/x86_64/primary_db | 5.2 MB 00:00:03
Determining fastest mirrors
* base: mirrors.aliyun.com
* extras: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.aliyun.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 bzip2.x86_64.0.1.0.6-13.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
============================================================================================
Package 架构 版本 源 大小
============================================================================================
正在安装:
bzip2 x86_64 1.0.6-13.el7 base 52 k
事务概要
============================================================================================
安装 1 软件包
总下载量:52 k
安装大小:82 k
Downloading packages:
bzip2-1.0.6-13.el7.x86_64.rpm | 52 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : bzip2-1.0.6-13.el7.x86_64 1/1
验证中 : bzip2-1.0.6-13.el7.x86_64 1/1
已安装:
bzip2.x86_64 0:1.0.6-13.el7
完毕!
[[email&#160;protected] d6z]# bzip2 1.txt
[[email&#160;protected] d6z]# ls
1.txt.bz2 2.txt 3.txt 4.txt
[[email&#160;protected] d6z]# du -sh 1.txt.bz2
496K 1.txt.bz2
[[email&#160;protected] d6z]# du -sh 4.txt
4.7M 4.txt
[[email&#160;protected] d6z]# bzip2 -d 1.txt.bz2
[[email&#160;protected] d6z]# bzip2 1.txt
[[email&#160;protected] d6z]# bunzip2 1.txt.bz2
[[email&#160;protected] d6z]# ls
1.txt 2.txt 3.txt 4.txt
[[email&#160;protected] d6z]# bzip2 -c 1.txt > /tmp/1.txt.bz2
[[email&#160;protected] d6z]# du -sh /tmp/1.txt.bz2
496K /tmp/1.txt.bz2
[[email&#160;protected] d6z]# bzip2 -d -c /tmp/1.txt.bz2 > 3.txt
[[email&#160;protected] d6z]# ls
1.txt 2.txt 3.txt 4.txt
[[email&#160;protected] d6z]# du -sh 3.txt
4.7M 3.txt
[[email&#160;protected] d6z]# bzip2 -9 1.txt
[[email&#160;protected] d6z]# du -sh 1.txt.bz2
496K 1.txt.bz2
[[email&#160;protected] d6z]# file 1.txt.bz2
1.txt.bz2: bzip2 compressed data, block size = 900k
[[email&#160;protected] d6z]# ls
1.txt.bz2 2.txt 3.txt 4.txt
[[email&#160;protected] d6z]# mv 1.txt.bz2 1.txt
[[email&#160;protected] d6z]# ls
1.txt 2.txt 3.txt 4.txt
[[email&#160;protected] d6z]# less 1.txt
"1.txt" may be a binary file. See it anyway?
[[email&#160;protected] d6z]# file 1.txt
1.txt: bzip2 compressed data, block size = 900k
[[email&#160;protected] d6z]# file 3.txt
3.txt: C source, UTF-8 Unicode text, with very long lines
[[email&#160;protected] d6z]# less 3.txt ^C
[[email&#160;protected] d6z]# mv 1.txt 1.txt.bz2
[[email&#160;protected] d6z]# ls
1.txt.bz2 2.txt 3.txt 4.txt
[[email&#160;protected] d6z]# bzcat
[[email&#160;protected] d6z]# xz 3.txt
[[email&#160;protected] d6z]# ls
1.txt.bz2 2.txt 3.txt.xz 4.txt
[[email&#160;protected] d6z]# du -sh 3.txt.xz
60K 3.txt.xz
[[email&#160;protected] d6z]# du -sh 4.txt
4.7M 4.txt
[[email&#160;protected] d6z]# xz -d 3.txt.xz
[[email&#160;protected] d6z]# ls
1.txt.bz2 2.txt 3.txt 4.txt
[[email&#160;protected] d6z]# xz 3.txt
[[email&#160;protected] d6z]# unxz 3.txt.xz
[[email&#160;protected] d6z]# ls
1.txt.bz2 2.txt 3.txt 4.txt
[[email&#160;protected] d6z]# xz -c 3.txt > /tmp/2.txt.xz
[[email&#160;protected] d6z]# xz -d -c /tmp/2.txt.xz > ./2.txt
[[email&#160;protected] d6z]# xzcat /tmp/2.txt.xz
=====================================================================================================================================================================================================================================================================================================================================================================================================================================================================
=====================================================================================================================================================================================================================================================================================================================================================================================================================================================================