Linux系统中常见的压缩包格式
格式 | 压缩工具 |
---|---|
.zip | zip压缩工具 |
.gz | gzip压缩工具,只能压缩文件,会删除源文件(通常配合tar使用) |
.bz2 | bzip2压缩工具,只能压缩文件,会删除源文件(通常配合tar使用) |
.tar.gz | 先使用tar命令归档打包,然后使用gzip压缩 |
.tar.bz2 | 先使用tar命令归档打包,然后使用bzip压缩 |
gzip 压缩命令
1.gzip只能压缩文件,不能压缩目录
2.gzip压缩文件之后,源文件会消失
3.gzip解压文件之后,压缩包会消失
4.gzip压缩文件,后面可以跟多个文件名,但每个文件单独压缩
5.使用zcat可以查看压缩包中文件的内容
6.源文件和压缩包在同路径下
# 单个文件压缩
[root@localhost ~]# gzip file1
# 多个文件压缩
[root@localhost ~]# gzip file2 file3
# 解压
[root@localhost ~]# gzip -d file1.gz
# 查看文件类型
[root@localhost ~]# file file1.gz
zip 压缩命令
1.压缩文件,源文件不消失
2.zip解压后,如果目录下存在和压缩包内相同的文件,询问是否覆盖
3.zip压缩目录,如果不加选项,只能打包空目录,除非加-r
4.如果打包的绝对路径
,那么会把绝对路径的内容全部打包进去
,但删除/
,
在哪个目录下执行压缩,就在哪个目录下打包,解压缩的时候,也会在当前目录下解压
例子:zip -r rc.d.zip /etc/init.d/
,会以etc/init.d/
的路径格式打包,解压缩后,在当前目录会有一个etc目录、内含init.d子目录。
# zip : 行李箱 衣服...
# Usage:zip [option] [包名] [文件/目录]...
-r:递归打包
-q:不输出打包过程
# 打包单个文件
[root@localhost ~]# zip f.zip file1
# 打包多个文件
[root@localhost ~]# zip f.zip file1 file8
打包完file1 file8 以后
[root@localhost ~]# zip f.zip file9 file10
[root@localhost ~]# cd /data/ && unzip f.zip
f.zip中 包括了file1 file8 file9 file10
也就是说可以无限继续添加压缩的文件内容
# 打包目录
[root@localhost ~]# zip -r wqh_dir.zip /root/wqh_dir
tar 压缩命令(归档)
1.解压缩文件时,如果当前目录有源文件,会直接覆盖,不会提示(较危险),而unzip会提示。
2.一般命名压缩包后缀名tar.gz
的简化写法==>tgz
。
# tar 归档
用法: tar [选项...] [包名] [文件/目录]...
[root@wqh06 ~]# tar zcf /root/opt.tgz /opt
tar: Removing leading `/' from member names
c:创建新的归档文件(create)
x:解压归档文件
f:指定包文件名(行李箱),如果是多个选项,f一定要放在最后
v:显示过程
z:归档之后使用gzip压缩
P:不删 `/`,使用绝对路径打包
t:查看压缩包中的压缩项目
C:指定解压路径
# 将tar.gz解压至其他目录
# [root@student ~]# tar xf /etc/local.tar.gz -C /tmp
j: .bz2文件压缩
J: .xz文件压缩
h:打包软链接
X:将要排除的目录或者文件,写到文件中,然后使用X指定该文件,即可排除
# 正确用法示例:
[root@wqh06 ~]# tar zcf X_test.tgz /root/dir -X /root/123.txt
cat /root/123.txt
/root/dir/1 # 生效,不推荐这么写,若前面想要打包的目录(/root/dir),不写绝对路径,这么写不会生效
2 # 生效,推荐这么写!不想加入压缩包的文件名(直接写文件名,何时都管用)
# 错误用法示例:
[root@wqh06 ~]# tar zcf X_test.tgz dir -X /root/123.txt
cat /root/123.txt
/root/dir/1 # 此时不生效
2 # 生效
--exclude:直接写要排除的文件或者目录
[root@wqh06 ~]# tar zcf exclude.tgz /etc --exclude=/etc/{hosts,rc.local}