IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux基础学习笔记(八)——文件的压缩和打包 -> 正文阅读

[系统运维]Linux基础学习笔记(八)——文件的压缩和打包

前言

上一篇博客总结了文件的查找,这篇博客继续开始文件的压缩和打包的相关学习总结,对应《鸟哥的Linux私房菜》一书的第八章的部分内容

Linux中常见的压缩指令

在Linux的系统中,压缩文件的扩展名大多是:.tar,.tar.gz,.tgz,.gz,.Z,.bz2,.xz

不同的压缩文件名称对应的含义如下
在这里插入图片描述

其中.tar结尾的文件,只是程序打包(将很多文件归档)的数据,并没有压缩过

gzip,zcat/zmore/zless/zgrep

针对.Z,.zip和.gz压缩文件的一组命令
在这里插入图片描述

实例

## 列出/etc目录下不含子目录的文件 并按照大小排序,并显示文件详情
[root@localhost ~]# ls -ldSr /etc/*
## 可以看到最大的文件夹是/etc/services
drwxr-xr-x.  2 root root    12288 Apr 29 19:32 /etc/brltty
-rw-r--r--.  1 root root    12288 Apr 29 19:38 /etc/aliases.db
-rw-r--r--.  1 root root    15137 Sep 30  2020 /etc/autofs.conf
-rw-r--r--.  1 root root    21929 Apr 11  2018 /etc/brltty.conf
-rw-r--r--.  1 root root    26832 Oct 13  2020 /etc/dnsmasq.conf
-rw-r--r--.  1 root root    85472 Apr 30 20:55 /etc/ld.so.cache
-rw-r--r--.  1 root root   670293 Jun  7  2013 /etc/services
##进入到tmp目录
[root@localhost ~]# cd /tmp/
##copy /etc/service文件到tmp目录
[root@localhost tmp]# cp /etc/services .
##gzip 显示压缩源文件以及压缩比
[root@localhost tmp]# gzip -v services 
services:	 79.7% -- replaced with services.gz
[root@localhost tmp]# ll /etc/services /tmp/services*
-rw-r--r--. 1 root root 670293 Jun  7  2013 /etc/services
-rw-r--r--. 1 root root 136088 Jun 18 20:13 /tmp/services.gz

上述实例的最后,发现tmp文件夹下没有了原先的services文件夹,gzip在压缩的时候,在预设的情况下原本的文件不会被保留,直接会被压缩成.gz文件,源文件不再存在

## zcat 在没有解压缩的情况下,查看压缩文件 还可以试试zmore zless
[root@localhost ~]# zcat services.gz

解压的操作

##解压之后,压缩包也不在了,这点和windows还是有区别的
[root@localhost tmp]# gzip -d services.gz 
## 将services用最佳的压缩比压缩,并保留原本的文件,指定的数值表示压缩等级,从1到9,依次递增
## -c是将原本要转成压缩文件的内容输出在屏幕上,这里通过 > 输出重定向到services.gz,使得原有的文件夹得以保留
[root@localhost tmp]# gzip -9 -c services > services.gz
## 找出压缩包中带有"http"的文件
[root@localhost tmp]# zgrep -n 'http' services.gz 

bzip2,bzcat/bzmore/bzless/bzgrep

功能与gzip差不多,但是bzip2能提供更好的而压缩比,同时是针对bz2文件的解压缩命令
在这里插入图片描述

实例

[root@localhost tmp]# bzip2 -v services 压缩比达到了81%
  services:  5.409:1,  1.479 bits/byte, 81.51% saved, 670293 in, 123932 out.
##bzip2压缩之后,也是没有保留源文件
[root@localhost tmp]# ls -l services*
-rw-r--r--. 1 root root 123932 Jun 18 20:24 services.bz2
#解压
[root@localhost tmp]# bzip2 -d services.bz2 
## 最高压缩比并保留源文件
[root@localhost tmp]# bzip2 -9 -c services > services.bz2
[root@localhost tmp]# ls
-rw-r--r--. 1 root root 670293 Jun 18 20:24 services
-rw-r--r--. 1 root root 123932 Jun 18 20:39 services.bz2

xz,xzcat/xzmore/xzless/xzgrep

xz命令的用法,也和前两个一样,只是是针对xz的压缩文件

image-20220618204227051

命令实例

## xz压缩 services文件夹
[root@localhost tmp]# xz -v services
services (1/1)
  100 %        97.3 KiB / 654.6 KiB = 0.149     
##压缩比似乎更大
[root@localhost tmp]# ls -l services*
-rw-r--r--. 1 root root 123932 Jun 18 20:39 services.bz2
-rw-r--r--. 1 root root 135489 Jun 18 20:43 services.gz
-rw-r--r--. 1 root root  99608 Jun 18 20:24 services.xz
##列出压缩前后的对比
[root@localhost tmp]# xz -l services.xz 
Strms  Blocks   Compressed Uncompressed  Ratio  Check   Filename
    1       1     97.3 KiB    654.6 KiB  0.149  CRC64   services.xz
##xz 命令操作解压
[root@localhost tmp]# xz -d services.xz
[root@localhost tmp]# ll services*
-rw-r--r--. 1 root root 670293 Jun 18 20:24 services
-rw-r--r--. 1 root root 123932 Jun 18 20:39 services.bz2
-rw-r--r--. 1 root root 135489 Jun 18 20:43 services.gz
## 保留原有的文件,并进行压缩
[root@localhost tmp]# xz -k services
[root@localhost tmp]# ll services*
-rw-r--r--. 1 root root 670293 Jun 18 20:24 services
-rw-r--r--. 1 root root 123932 Jun 18 20:39 services.bz2
-rw-r--r--. 1 root root 135489 Jun 18 20:43 services.gz
-rw-r--r--. 1 root root  99608 Jun 18 20:24 services.xz

tar指令

tar命令可以将多个目录或者文件归档打包成一个大文件,同时还可以利用前面三个压缩命令的支持。
在这里插入图片描述

后续的先关实例都以bz2的压缩包为例

打包和压缩

1、使用tar命令备份/etc目录的数据

## time命令,显示程序运行的时间
## 这里是在tmp目录下备份/etc目录的数据,-p选项,在备份压缩的时候,会保留原文件的权限和属性。这里是备份成.gz文件
[root@localhost tmp]# time tar -zpcv -f etc.tar.gz /etc
##……省略部分结果
/etc/nfs.conf

real	0m0.998s
user	0m0.863s
sys	0m0.063s

## 这里是在tmp目录下备份/etc目录的数据,备份成.bz2文件
[root@localhost tmp]# time tar -jpcv -f etc.tar.bz2 /etc/
##……省略部分结果
/etc/exports.d/
/etc/nfs.conf

real	0m2.048s
user	0m1.965s
sys	0m0.010s
## 这里是在tmp目录下备份/etc目录的数据,备份成.xz文件
[root@localhost tmp]# time tar -Jpcv -f etc.tar.xz /etc/
##……省略部分结果
/etc/nfs.conf

real	0m10.725s
user	0m10.310s
sys	0m0.255s

执行结果可以看到,从压缩成gz,到压缩成xz,耗时依次递增,毕竟压缩比也是依次提升的。

2、打包的时候排除指定的文件夹

这个可以通过–exclude来指定,如下所示

##这个命令有点长,是将/etc /root两个目录下的文件打包,同时排除掉/root下的etc文件夹,和自己本身打包的system.tar.gz2文件
[root@localhost tmp]# tar -jcv -f /root/system.tar.gz2 --exclude=/root/etc* --exclude=/root/system.tar.gz2 /etc /root

3、打包比某个文件还新的文件

## find命令找出比 /etc/passwd还要新的文件
[root@localhost etc]# find /etc -newer /etc/passwd
/etc
/etc/resolv.conf
/etc/group
/etc/gshadow
/etc/shadow
/etc/subgid
/etc/subuid
/etc/sysctl.conf
/etc/security
/etc/security/limits.conf
/etc/tuned/active_profile
/etc/tuned/profile_mode
## 通过tar命令来打包,通过 --newer-mtime来指定更新的文件
[root@localhost tmp]# tar -jcv -f /root/etc.newer.then.passwd.tar.bz2 --newer-mtime="2022/06/12" /etc/*
## 显示出文件即可,grep -v表示取反 这里的正则表示/结尾
[root@localhost tmp]# tar -jtv -f /root/etc.newer.then.passwd.tar.bz2 | grep -v '/$'
-rw-r--r-- root/root       501 2022-06-12 18:54 etc/group
---------- root/root       398 2022-06-12 18:54 etc/gshadow
-rw-r--r-- root/root       887 2022-06-12 18:54 etc/passwd
-rw-r--r-- root/root      1976 2022-06-12 18:49 etc/profile
-rw-r--r-- root/root        76 2022-06-19 09:08 etc/resolv.conf
-rw-r--r-- root/root      2498 2022-06-12 18:55 etc/security/limits.conf
---------- root/root       719 2022-06-12 18:54 etc/shadow
-rw-r--r-- root/root        20 2022-06-12 18:54 etc/subgid
-rw-r--r-- root/root        20 2022-06-12 18:54 etc/subuid
-rw-r--r-- root/root       516 2022-06-12 18:56 etc/sysctl.conf
-rw-r--r-- root/root        14 2022-06-19 09:08 etc/tuned/active_profile
-rw-r--r-- root/root         5 2022-06-19 09:08 etc/tuned/profile_mode

4、除了打包,还可以通过管道边打包,边解压

[root@localhost etc]# cd /tmp/
[root@localhost etc]# tar -cvf - /etc/ | tar -xvf -

上述命令中的 - 其实表示的是生成的打包文件,不过我们马上就解压了,所以我们不想让中间文件存在,就用 - 来处理。这个操作等同于cp -r

其中的- 代表标准的输入输出命令,| 代表管道命令,这些我们在后面bash和shell学习的时候会总结。

查阅tar文件

通过上面总结的命令选项来看,如果需要查看tar压缩包的文件,则需要用到-t选项

实例

## 查看.bz2压缩包中的文件,在没有解压的情况下
[root@localhost tmp]# tar -jtv -f etc.tar.bz2

在查看的时候,会发现,压缩包中并没有/etc的根目录,通常要压缩指定文件的时候也会提示——并没有将根目录压缩到压缩包中,如果需要在压缩包中保留根目录,我们需要用到-P 选项。

将tar打包的数据解压

通过上面总结的命令选项来看,将tar包的文件解压,则需要用到-x选项。

## 默认解压到当前目录
[root@localhost tmp]# tar -jxv -f etc.tar.bz2
## 如果需要解压到指定目录,需要通过-C选项指定 目标文件夹
[root@localhost tmp]# tar -jxv -f etc.tar.bz2 -C /tmp

上面的操作是将整个tar包全部解压,其实tar命令还支持,只解压单个文件

## 这里结合grep命令,在为拆包的情况下查看指定的文件
[root@localhost tmp]# tar -jtv -f etc.tar.bz2 | grep 'shadow'
---------- root/root       398 2022-06-19 09:19 ./etc/gshadow
---------- root/root       690 2022-06-19 09:19 ./etc/shadow-
---------- root/root       719 2022-06-19 09:19 ./etc/shadow
---------- root/root       387 2022-06-19 09:19 ./etc/gshadow-
## tar解压指定的文件 tar -jxv -f [压缩包名] [待拆包的单个文件名]
[root@localhost tmp]# tar -jxv -f etc.tar.bz2 ./etc/shadow
[root@localhost tmp]# cd etc
[root@localhost etc]# ll
总用量 4
----------. 1 root root 719 619 09:19 shadow

总结

至此,关于文件的基本操作,算是总结完成,后续会梳理学习bash和shell的基础内容

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-06-23 01:01:37  更:2022-06-23 01:01:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/30 2:00:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码