美文网首页
Linux 系统中文件的压缩及解压

Linux 系统中文件的压缩及解压

作者: 小屁孩云熙 | 来源:发表于2021-08-16 11:33 被阅读0次

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.confadmin.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. 如何确认压缩后的文件和原文件是否一致

  1. 看文件的大小和时间等信息(文件属性信息)是否一致
  2. 利用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

相关文章

网友评论

      本文标题:Linux 系统中文件的压缩及解压

      本文链接:https://www.haomeiwen.com/subject/hzsmbltx.html