1. Linux 压缩文件
1.1 压缩的命令
`tar`
1.2 压缩命令语法及常用参数
tar zcvf /tmp/test.tar.gz 指定要压缩的数据文件
z -- 压缩的方式 gzip
j -- 压缩方式 bzip
c -- 创建压缩包文件
v -- 显示压缩过程
f -- 指定压缩包文件路径信息
t -- 查看压缩包内容
-C -- 指定解压路径
--exclude=PATTERN -- 压缩时,排除指定文件不要被压缩(指定单个文件)
--exclude-from=FILE -- 压缩时,排除指定文件不要被压缩(需排除多个文件名,汇总在一个文件中)
-P, --absolute-names
don't strip leading `/'s from file names
-- 不从文件名中 去掉 根目录
1.3 压缩信息显示说明
1.3.1 绝对路径的方式压缩(针对被压缩文件路径)
# 姿势一(压缩生成的文件 以 相对路径 表示,被压缩文件 以 绝对路径 表示)
[root@yunxuanedu tmp]# tar zcvf test.tar.gz /tmp/test/services
tar: Removing leading `/' from member names ## 默认将压缩时绝对路径的根信息移除(使用参数P不会有此信息)
/tmp/test/services ## 需要压缩的文件数据信息
[root@yunxuanedu tmp]# tar tf test.tar.gz
tmp/test/services
# 姿势二(压缩生成的文件 以 绝对路径 表示,被压缩文件 以 绝对路径 表示)
[root@yunxuanedu tmp]# tar zcvf /tmp/test.tar.gz /tmp/test/services
tar: Removing leading `/' from member names
/tmp/test/services
[root@yunxuanedu tmp]# tar tf test.tar.gz
tmp/test/services
1.3.2 相对路径压缩(针对被压缩文件的路径)
# 姿势一(压缩生成的文件 以 相对路径 表示,被压缩文件 以 相对路径 表示)
[root@yunxuanedu tmp]# tar zcvf test.tar.gz ./test/services
./test/services
[root@yunxuanedu tmp]# tar tf test.tar.gz
./test/services
# 姿势二(压缩生成的文件 以 绝对路径 表示,被压缩文件 以 相对路径 表示)
[root@yunxuanedu tmp]# tar zcvf /tmp/test.tar.gz ./test/services
./test/services
[root@yunxuanedu tmp]# tar tf test.tar.gz
./test/services
1.3.3 压缩时排除指定文件
1.3.3.1 排除单个文件
- 方法一 (将
/data
目录下除index.conf
文件外,其余文件全部压缩到/tmp
目录下)
【特别注意】
排除指定数据信息需要定义好路径信息,路径信息全部采用绝对路径或者全部采用相对路径
过滤文件参数 后面的文件路径 和 被压缩文件的 路径 要保持格式一致(全部相对路径或全部绝对路径)
# 相对路径
[root@yunxuanedu /]# tar zcvf /tmp/data.tar.gz ./data --exclude=./data/index.conf
./data/
./data/admin.jpg
./data/yunxuan/
./data/server/
./data/server/tools/
./data/server/yunxuan04.png
./data/server/yunxuan02.png
./data/server/data/
./data/server/scripts/
./data/server/file/
./data/server/file/my.cnf
./data/server/yunxuan05.png
./data/server/yunxuan01.png
./data/server/yunxuan03.png
./data/test/
./data/test/yunxuan04.txt
./data/test/yunxuan03.txt
./data/test/yunxuan01.txt
./data/test/yunxuan02.txt
./data/test/yunxuan05.txt
# 查看压缩包中文件
[root@yunxuanedu tmp]# tar tf data.tar.gz
./data/
./data/admin.jpg
./data/yunxuan/
./data/server/
./data/server/tools/
./data/server/yunxuan04.png
./data/server/yunxuan02.png
./data/server/data/
./data/server/scripts/
./data/server/file/
./data/server/file/my.cnf
./data/server/yunxuan05.png
./data/server/yunxuan01.png
./data/server/yunxuan03.png
./data/test/
./data/test/yunxuan04.txt
./data/test/yunxuan03.txt
./data/test/yunxuan01.txt
./data/test/yunxuan02.txt
./data/test/yunxuan05.txt
- 方法二 (将
/data
目录下除index.conf
文件外,其余文件全部压缩到/tmp
目录下)
# 绝对路径
[root@yunxuanedu /]# tar zcvf /tmp/data_01.tar.gz /data --exclude=/data/index.conf
tar: Removing leading `/' from member names
/data/
/data/admin.jpg
/data/yunxuan/
/data/server/
/data/server/tools/
/data/server/yunxuan04.png
/data/server/yunxuan02.png
/data/server/data/
/data/server/scripts/
/data/server/file/
/data/server/file/my.cnf
/data/server/yunxuan05.png
/data/server/yunxuan01.png
/data/server/yunxuan03.png
/data/test/
/data/test/yunxuan04.txt
/data/test/yunxuan03.txt
/data/test/yunxuan01.txt
/data/test/yunxuan02.txt
/data/test/yunxuan05.txt
# 查看压缩包文件内容
[root@yunxuanedu tmp]# tar tf data_01.tar.gz
data/
data/admin.jpg
data/yunxuan/
data/server/
data/server/tools/
data/server/yunxuan04.png
data/server/yunxuan02.png
data/server/data/
data/server/scripts/
data/server/file/
data/server/file/my.cnf
data/server/yunxuan05.png
data/server/yunxuan01.png
data/server/yunxuan03.png
data/test/
data/test/yunxuan04.txt
data/test/yunxuan03.txt
data/test/yunxuan01.txt
data/test/yunxuan02.txt
data/test/yunxuan05.txt
1.3.3.2 排除多个文件
排除 /data
目录下 index.conf
和 admin.jpg
文件
[root@yunxuanedu data]# vim /tmp/exclude.txt
[root@yunxuanedu data]# cat /tmp/exclude.txt
admin.jpg
index.conf
- 方法一 (相对路径)
[root@yunxuanedu /]# tar -zcvf /tmp/data.tar.gz ./data --exclude-from=./tmp/exclude.txt
./data/
./data/yunxuan/
./data/server/
./data/server/tools/
./data/server/yunxuan04.png
./data/server/yunxuan02.png
./data/server/data/
./data/server/scripts/
./data/server/file/
./data/server/file/my.cnf
./data/server/yunxuan05.png
./data/server/yunxuan01.png
./data/server/yunxuan03.png
./data/test/
./data/test/yunxuan04.txt
./data/test/yunxuan03.txt
./data/test/yunxuan01.txt
./data/test/yunxuan02.txt
./data/test/yunxuan05.txt
- 方法二 (绝对路径)
[root@yunxuanedu /]# tar zcvf /tmp/data_01.tar.gz /data --exclude-from=/tmp/exclude.txt
tar: Removing leading `/' from member names
/data/
/data/yunxuan/
/data/server/
/data/server/tools/
/data/server/yunxuan04.png
/data/server/yunxuan02.png
/data/server/data/
/data/server/scripts/
/data/server/file/
/data/server/file/my.cnf
/data/server/yunxuan05.png
/data/server/yunxuan01.png
/data/server/yunxuan03.png
/data/test/
/data/test/yunxuan04.txt
/data/test/yunxuan03.txt
/data/test/yunxuan01.txt
/data/test/yunxuan02.txt
/data/test/yunxuan05.txt
2. Linux 解压文件
2.1 解压命令
`tar`
2.2 解压命令语法
tar zxvf 压缩包文件
tar xvf 压缩包文件
-C 指定解压路径
[root@yunxuanedu tmp]# tar xvf data.tar.gz -C /home
./data/
./data/yunxuan/
./data/server/
./data/server/tools/
./data/server/yunxuan04.png
./data/server/yunxuan02.png
./data/server/data/
./data/server/scripts/
./data/server/file/
./data/server/file/my.cnf
./data/server/yunxuan05.png
./data/server/yunxuan01.png
./data/server/yunxuan03.png
./data/test/
./data/test/yunxuan04.txt
./data/test/yunxuan03.txt
./data/test/yunxuan01.txt
./data/test/yunxuan02.txt
./data/test/yunxuan05.txt
[root@yunxuanedu tmp]# cd /home/
[root@yunxuanedu home]# ll
total 8
drwxr-xr-x 5 root root 4096 Aug 14 12:18 data
drwx------ 3 yunxuan yunxuan 4096 Aug 11 19:13 yunxuan
2.3 不解压情况下查看压缩包中的数据
tar tf 压缩包文件
# 查看压缩包文件内容
[root@yunxuanedu tmp]# tar tf data_01.tar.gz
data/
data/admin.jpg
data/yunxuan/
data/server/
data/server/tools/
data/server/yunxuan04.png
data/server/yunxuan02.png
data/server/data/
data/server/scripts/
data/server/file/
data/server/file/my.cnf
data/server/yunxuan05.png
data/server/yunxuan01.png
data/server/yunxuan03.png
data/test/
data/test/yunxuan04.txt
data/test/yunxuan03.txt
data/test/yunxuan01.txt
data/test/yunxuan02.txt
data/test/yunxuan05.txt
3. 如何确认压缩后的文件和原文件是否一致
- 看文件的大小和时间等信息(文件属性信息)是否一致
- 利用
diff
或者vimdiff
命令比较两个文件的内容是否有区别
-
diff
对比
[root@yunxuanedu tmp]# echo "123" > 01.txt
[root@yunxuanedu tmp]# echo "123" > 02.txt
[root@yunxuanedu tmp]# diff 01.txt 02.txt
[root@yunxuanedu tmp]# echo "abc" >> 01.txt
[root@yunxuanedu tmp]# diff 01.txt 02.txt
2d1
< abc
-
vimdiff
对比
image-20210814125317394.png
4. 彩蛋部分
如何将一个目录中以 .txt 结尾的文件,统一进行压缩处理
- 案例实现之前的开胃小菜
# tar 压缩文件时 可以将多个目标文件压缩到同一个压缩包中
[root@yunxuanedu tmp]# tar zcvf ./test.tar.gz test01.txt test02.txt
test01.txt
test02.txt
[root@yunxuanedu tmp]# tar tf test.tar.gz
test01.txt
test02.txt
- 将
/data
目录下以.txt
结尾的文件打包压缩到/tmp
目录下
[root@yunxuanedu tmp]# find /data -type f -name "*.txt"
/data/test/yunxuan04.txt
/data/test/yunxuan03.txt
/data/test/yunxuan01.txt
/data/test/yunxuan02.txt
/data/test/yunxuan05.txt
[root@yunxuanedu tmp]# find /data -type f -name "*.txt"|xargs tar zcvPf /tmp/data.tar.gz
/data/test/yunxuan04.txt
/data/test/yunxuan03.txt
/data/test/yunxuan01.txt
/data/test/yunxuan02.txt
/data/test/yunxuan05.txt
[root@yunxuanedu tmp]# tar tPf /tmp/data.tar.gz
/data/test/yunxuan04.txt
/data/test/yunxuan03.txt
/data/test/yunxuan01.txt
/data/test/yunxuan02.txt
/data/test/yunxuan05.txt
网友评论