一、前言
我们在windows系统,经常使用rar、zip、7z等格式的压缩包。下载第三方的压缩软件就能对压缩文件进行压缩、解压。
压缩有什么作用呢?
1、传输时,小文件传输会比大文件久,通过压缩打包成一个大文件,传输速度会更快。就像我们U盘在跟电脑传输文件时,可以看到传输的速率。小文件的数量很多,传输会很慢
2、通过压缩,可以节省空间,也能提高传输速度。压缩,顾名思义,就是将文件的大小进行压缩。
二、linux的压缩格式
像Linux系统常见的压缩格式有gz、bz2、zip、tar等。
2.1 文件压缩
2.1.1 gzip压缩格式
压缩语法:gzip 文件名
会生成一个xxx.gz
的文件
解压缩语法:
# 有两种方法
1、gunzip xxx.gz
2、gzip -d xxx.gz
-h 可以获取帮助
2.1.2 bzip2压缩格式
压缩语法:bzip2 文件名
会生成一个xxx.bz2
的文件
解压缩语法:
bzip2 -d xxx.bz2
-k 保留压缩文件。一般解压缩后,压缩包就不存在了,加-k压缩包和解压缩的文件都会保留
-h 可以获取帮助
2.1.3 xz压缩包格式
压缩语法:xz 文件名
会生成一个xxx.xz
的文件
解压缩语法:
xz -d xxx.xz
-k 保留压缩文件。一般解压缩后,压缩包就不存在了,加-k压缩包和解压缩的文件都会保留
-h 可以获取帮助
2.1.4 zip压缩包格式
压缩语法:zip文件名
会生成一个xxx.zip
的文件
解压缩语法:
unzip xxx.zip
-d 指定解压缩的地址
-h 可以获取帮助
2.2 目录压缩
使用tar进行目录级的压缩
用法:tar [OPTION...] [FILE]...
tar的参数前面可以不加-
参数:
-c
create创建文件
-x
-extract [ˈekstrækt] 提取 解压还原文件
-v
--verbose显示执行详细过程
-f
--file指定备份文件
-t
–list 列出压缩包中包括哪些文件,不解包,查看包中的内容
-C
(大写)–directory 指定解压位置
-P
保留绝对路径/,解压缩会覆盖原文件
-exclude
排除不打包的文件或目录
压缩语法:tar -cvf 压缩后的文件名 目录路径
例如
-cvf 打包 tar -cvf grub.tar /boot/grub
-xvf 解压缩 tar -xvf grub.tar /boot/grub
-tvf 测试查看 tar -tvf grub.tar
# 指定解压位置 -C
tar xvf grub.tar.bz2 -C /opt/
# 把两个目录或目录+文件打包成一个软件包:
mkdir back
cp /etc/passwd back/
tar -cvf back.tar /boot/grub back/ /etc/passwd
打包完成就变成一个文件,可以结合上面的文件级压缩格式一起使用,进行二次压缩
归档加压缩:
-z
--gzip 以gzip方式压缩 扩展名: tar.gz
-j
--bzip2 以bz2方式压缩的 扩展名:tar.bz2
-J
--xz 以xz 方式压缩 扩展名:tar.xz
例如:
# 压缩/etc目录
tar -zcvf test.tar.gz /etc
tar -jcvf test.tar.bz2 /etc
tar -Jcv test.tar.xz /etc
# 解压缩/etc/目录
tar -zxvf test.tar.gz /etc
tar -jxvf test.tar.bz2 /etc
tar -Jxv test.tar.xz /etc
三、应用场景
gzip压缩最快,更加倾向于小文件的压缩,速度快
bzip压缩率比gzip小,适用于大文件压缩
xz压缩是比较新型的,最佳压缩率
如果要测试压缩的结果,可以用ls -lh
查看压缩后的大小