7.8 压缩和解压类

7.8.1 gzip / gunzip 压缩

1)基本语法 :::info gzip 文件 (功能描述:压缩文件,只能将文件压缩*.gz文件)
gunzip 文件.gz (功能描述:解压缩文件命令) ::: 2)经验技巧
(1)只能压缩文件不能压缩目录
(2)不能保留原来的文件
(3)同时多个文件会产生多个压缩包
3)案例实操
(1)gzip压缩

  1. ls -l fstab
  2. -rw-r--r-- 1 root root 382 May 22 17:07 fstab
  3. gzip fstab
  4. ls -l fstab.gz
  5. -rw-r--r-- 1 root root 279 May 22 17:07 fstab.gz
  6. # 查看压缩包内的文件内容
  7. zcat fstab.gz

(2)gunzip解压缩文件

  1. gunzip fstab.gz
  2. ls -l fstab
  3. -rw-r--r-- 1 root root 382 May 22 17:07 fstab

7.8.2 zip / unzip 压缩

1)基本语法 :::info zip [选项] xxx.zip 将要压缩的内容 (功能描述:压缩文件和目录的命令)
unzip [选项] xxx.zip (功能描述:解压缩文件) ::: 2)选项说明

zip 选项 功能
-r 压缩目录
unzip 选项 功能
-d<目录> 指定解压后文件的存放目录

3)经验技巧
zip 压缩命令在windows/linux都通用, 可以压缩目录且保留源文件。
4)案例实操
(1)压缩 houge.txt 和 bailongma.txt ,压缩后的名称 mypackage.zip

➜  ~ touch houge.txt
➜  ~ touch bailongma.txt
➜  ~ zip mypackage.zip houge.txt bailongma.txt

(2)解压 mypackage.zip

➜  ~ ls -l mypackage.zip
-rw-r--r-- 1 root root 322 May 25 15:42 mypackage.zip
➜  ~ unzip mypackage.zip

(3)解压 mypackage.zip 到指定目录 -d

➜  ~ unzip mypackage.zip -d /data/test
➜  ~ ls -l /data/test/

7.8.3 tar 打包

1)基本语法 :::info tar [选项] xxx.tar.gz 将要打包进去的内容(功能描述:打包目录,压缩后的文件格式.tar.gz)
tar [-ABcdgGhiklmMoOpPrRsStuUvwWxzZ][-b <区块数目>][-C <目的目录>][-f <备份文件>][-F ][-K <文件>][-L <媒体容量>][-N <日期时间>][-T <范本文件>][-V <卷册名称>][-X <范本文件>][-<设备编号><存储密度>][—after-date=<日期时间>][—atime-preserve][—backuup=<备份方式>][—checkpoint][—concatenate][—confirmation][—delete][—exclude=<范本样式>][—force-local][—group=<群组名称>][—help][—ignore-failed-read][—new-volume-script=][—newer-mtime][—no-recursion][—null][—numeric-owner][—owner=<用户名称>][—posix][—erve][—preserve-order][—preserve-permissions][—record-size=<区块数目>][—recursive-unlink][—remove-files][—rsh-command=<执行指令>][—same-owner][—suffix=<备份字尾字符串>][—totals][—use-compress-program=<执行指令>][—version][—volno-file=<编号文件>][文件或目录…] ::: 2)选项说明

选项 功能
-c 产生.tar 打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩(GZIP)
-j 打包同时压缩(BZ2)
-J 打包同时压缩(XZ)
-x 解包.tar 文件
-C 解压到指定目录

:::warning

  • -A或—catenate 新增文件到已存在的备份文件。
  • -b<区块数目>或—blocking-factor=<区块数目> 设置每笔记录的区块数目,每个区块大小为12Bytes。
  • -B或—read-full-records 读取数据时重设区块大小。
  • -c或—create 建立新的备份文件。
  • -C<目的目录>或—directory=<目的目录> 切换到指定的目录。
  • -d或—diff或—compare 对比备份文件内和文件系统上的文件的差异。
  • -f<备份文件>或—file=<备份文件> 指定备份文件。
  • -F或—info-script= 每次更换磁带时,就执行指定的Script文件。
  • -g或—listed-incremental 处理GNU格式的大量备份。
  • -G或—incremental 处理旧的GNU格式的大量备份。
  • -h或—dereference 不建立符号连接,直接复制该连接所指向的原始文件。
  • -i或—ignore-zeros 忽略备份文件中的0 Byte区块,也就是EOF。
  • -k或—keep-old-files 解开备份文件时,不覆盖已有的文件。
  • -K<文件>或—starting-file=<文件> 从指定的文件开始还原。
  • -l或—one-file-system 复制的文件或目录存放的文件系统,必须与tar指令执行时所处的文件系统相同,否则不予复制。
  • -L<媒体容量>或-tape-length=<媒体容量> 设置存放每体的容量,单位以1024 Bytes计算。
  • -m或—modification-time 还原文件时,不变更文件的更改时间。
  • -M或—multi-volume 在建立,还原备份文件或列出其中的内容时,采用多卷册模式。
  • -N<日期格式>或—newer=<日期时间> 只将较指定日期更新的文件保存到备份文件里。
  • -o或—old-archive或—portability 将资料写入备份文件时使用V7格式。
  • -O或—stdout 把从备份文件里还原的文件输出到标准输出设备。
  • -p或—same-permissions 用原来的文件权限还原文件。
  • -P或—absolute-names 文件名使用绝对名称,不移除文件名称前的”/“号。
  • -r或—append 新增文件到已存在的备份文件的结尾部分。
  • -R或—block-number 列出每个信息在备份文件中的区块编号。
  • -s或—same-order 还原文件的顺序和备份文件内的存放顺序相同。
  • -S或—sparse 倘若一个文件内含大量的连续0字节,则将此文件存成稀疏文件。
  • -t或—list 列出备份文件的内容。
  • -T<范本文件>或—files-from=<范本文件> 指定范本文件,其内含有一个或多个范本样式,让tar解开或建立符合设置条件的文件。
  • -u或—update 仅置换较备份文件内的文件更新的文件。
  • -U或—unlink-first 解开压缩文件还原文件之前,先解除文件的连接。
  • -v或—verbose 显示指令执行过程。
  • -V<卷册名称>或—label=<卷册名称> 建立使用指定的卷册名称的备份文件。
  • -w或—interactive 遭遇问题时先询问用户。
  • -W或—verify 写入备份文件后,确认文件正确无误。
  • -x或—extract或—get 从备份文件中还原文件。
  • -X<范本文件>或—exclude-from=<范本文件> 指定范本文件,其内含有一个或多个范本样式,让ar排除符合设置条件的文件。
  • -z或—gzip或—ungzip 通过gzip指令处理备份文件。
  • -Z或—compress或—uncompress 通过compress指令处理备份文件。
  • -<设备编号><存储密度> 设置备份用的外围设备编号及存放数据的密度。
  • —after-date=<日期时间> 此参数的效果和指定”-N”参数相同。
  • —atime-preserve 不变更文件的存取时间。
  • —backup=<备份方式>或—backup 移除文件前先进行备份。
  • —checkpoint 读取备份文件时列出目录名称。
  • —concatenate 此参数的效果和指定”-A”参数相同。
  • —confirmation 此参数的效果和指定”-w”参数相同。
  • —delete 从备份文件中删除指定的文件。
  • —exclude=<范本样式> 排除符合范本样式的文件。
  • —group=<群组名称> 把加入设备文件中的文件的所属群组设成指定的群组。
  • —help 在线帮助。
  • —ignore-failed-read 忽略数据读取错误,不中断程序的执行。
  • —new-volume-script= 此参数的效果和指定”-F”参数相同。
  • —newer-mtime 只保存更改过的文件。
  • —no-recursion 不做递归处理,也就是指定目录下的所有文件及子目录不予处理。
  • —null 从null设备读取文件名称。
  • —numeric-owner 以用户识别码及群组识别码取代用户名称和群组名称。
  • —owner=<用户名称> 把加入备份文件中的文件的拥有者设成指定的用户。
  • —posix 将数据写入备份文件时使用POSIX格式。
  • —preserve 此参数的效果和指定”-ps”参数相同。
  • —preserve-order 此参数的效果和指定”-A”参数相同。
  • —preserve-permissions 此参数的效果和指定”-p”参数相同。
  • —record-size=<区块数目> 此参数的效果和指定”-b”参数相同。
  • —recursive-unlink 解开压缩文件还原目录之前,先解除整个目录下所有文件的连接。
  • —remove-files 文件加入备份文件后,就将其删除。
  • —rsh-command=<执行指令> 设置要在远端主机上执行的指令,以取代rsh指令。
  • —same-owner 尝试以相同的文件拥有者还原文件。
  • —suffix=<备份字尾字符串> 移除文件前先行备份。
  • —totals 备份文件建立后,列出文件大小。
  • —use-compress-program=<执行指令> 通过指定的指令处理备份文件。
  • —version 显示版本信息。
  • —volno-file=<编号文件> 使用指定文件内的编号取代预设的卷册编号。 ::: 3)案例实操
    (1)压缩多个文件
    ➜  ~ tar -zcvf mypackage.tar.gz bailongma.txt houge.txt
    ➜  ~ tar -tf mypackage.tar.gz
    bailongma.txt
    houge.txt
    ➜  ~ ls -l mypackage.tar.gz bailongma.txt houge.txt
    -rw-r--r-- 1 root root   0 May 25 15:38 bailongma.txt
    -rw-r--r-- 1 root root   0 May 25 15:38 houge.txt
    -rw-r--r-- 1 root root 139 May 25 15:53 mypackage.tar.gz
    
    (2)压缩目录
    ➜  ~ tar -zcvf etc.tar.gz etc/
    ➜  ~ tar -tf etc.tar.gz
    
    (3)解压到当前目录
    ➜  ~ tar -zxvf mypackage.tar.gz
    
    (4)解压到指定目录
    ➜  ~ tar -zxvf etc.tar.gz -C /opt
    ➜  ~ ls -l /opt
    

    7.9 磁盘查看和分区类

    7.9.1 du 查看文件和目录占用的磁盘空间

    du:disk usage 磁盘占用情况
    1)基本语法 :::info du 目录/文件 (功能描述:显示目录下每个子目录的磁盘使用情况)
    du [-abcDhHklmsSx][-L <符号连接>][-X <文件>][—block-size][—exclude=<目录或文件>][—max-depth=<目录层数>][—help][—version][目录或文件] ::: 2)选项说明
选项 功能
-h 以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-a 不仅查看子目录大小, 还要包括文件
-c 显示所有的文件和子目录大小后, 显示总和
-s 只显示总和
—max-depth=n 指定统计子目录的深度为第 n 层
  • -a或-all 显示目录中个别文件的大小。
  • -b或-bytes 显示目录或文件大小时,以byte为单位。
  • -c或—total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
  • -D或—dereference-args 显示指定符号连接的源文件大小。
  • -h或—human-readable 以K,M,G为单位,提高信息的可读性。
  • -H或—si 与-h参数相同,但是K,M,G是以1000为换算单位。
  • -k或—kilobytes 以1024 bytes为单位。
  • -l或—count-links 重复计算硬件连接的文件。
  • -L<符号连接>或—dereference<符号连接> 显示选项中所指定符号连接的源文件大小。
  • -m或—megabytes 以1MB为单位。
  • -s或—summarize 仅显示总计。
  • -S或—separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
  • -x或—one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
  • -X<文件>或—exclude-from=<文件> 在<文件>指定目录或文件。
  • —exclude=<目录或文件> 略过指定的目录或文件。
  • —max-depth=<目录层数> 超过指定层数的目录后,予以忽略。
  • —help 显示帮助。
  • —version 显示版本信息。

3)案例实操
(1)查看当前用户主目录占用的磁盘空间大小

➜  ~ du -sh
73M     .

7.9.2 df 查看磁盘空间使用情况

df:disk free 空余磁盘
Linux df(英文全拼:disk free) 命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计。
1)基本语法 :::info df [选项] (功能描述:列出文件系统的整体磁盘使用量,检查文件系统的磁盘空间占用情况)
df [选项]… [FILE]… ::: 2)选项说明

  • 文件-a, —all 包含所有的具有 0 Blocks 的文件系统
  • 文件—block-size={SIZE} 使用 {SIZE} 大小的 Blocks
  • 文件-h, —human-readable 使用人类可读的格式(预设值是不加这个选项的…)
  • 文件-H, —si 很像 -h, 但是用 1000 为单位而不是用 1024
  • 文件-i, —inodes 列出 inode 资讯,不列出已使用 block
  • 文件-k, —kilobytes 就像是 —block-size=1024
  • 文件-l, —local 限制列出的文件结构
  • 文件-m, —megabytes 就像 —block-size=1048576
  • 文件—no-sync 取得资讯前不 sync (预设值)
  • 文件-P, —portability 使用 POSIX 输出格式
  • 文件—sync 在取得资讯前 sync
  • 文件-t, —type=TYPE 限制列出文件系统的 TYPE
  • 文件-T, —print-type 显示文件系统的形式
  • 文件-x, —exclude-type=TYPE 限制列出文件系统不要显示 TYPE
  • 文件-v (忽略)
  • 文件—help 显示这个帮手并且离开
  • 文件—version 输出版本资讯并且离开

3)案例实操
(1)查看磁盘使用情况

➜  ~ df -Th

image.png :::warning 其中;df 可以查看硬盘的文件系统,内存的文件系统也可以查看
tmpfs 是临时文件系统。基于内存的文件系统;内存和SWAP分区就是使用 tmpfs 文件系统。/dev/shm shared memory 共享内存,默认是系统内存的一半。
内存和SWAP分区(虚拟内存)是跟系统或者运行时有关的东西。
devtmpfs 是设备临时文件系统。用来管理Linux系统所有的设备文件。在Linux 开启时就会创建devtmpfs文件系统,并将该文件系统和 /dev 进行挂载。 :::

~ free -h
              total        used        free      shared  buff/cache   available
Mem:           2.0G        581M         82M        104M        1.3G        1.1G
Swap:          2.0G         12M        2.0G

image.png

7.9.3 lsblk 查看设备挂载情况

lsblk命令的英文是“list block”,即用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。块设备有硬盘,闪存盘,CD-ROM等等。lsblk命令包含在util-linux-ng包中,现在该包改名为util-linux。
1)基本语法 :::info lsblk [选项说明] (功能描述:查看设备挂载情况) ::: 2)选项说明

选项:
-a,——all打印所有设备
-b,——bytes以字节而不是人类可读的格式打印SIZE
-d,——nodeps不打印slave或holder
-D,——discard打印丢弃功能
-e,——exclude <list>根据重要号排除设备(默认:RAM磁盘)</list>
-I,——include <list>只显示具有指定主号码的设备</list>
-f,——fs输出文件系统信息
-h,——help使用信息(this)
-i,——ascii只使用ascii字符
-m,——perms输出权限信息
-l,——list使用列表格式输出
-n,——noheading不打印标题
-o,——output <list>输出列</list>
-p,——paths输出完整的设备路径
-P,——pair使用key="value"的输出格式
-r,——raw使用原始输出格式
-s,——逆逆依赖关系
-t,——topology输出拓扑信息
-S,——scsi输出关于scsi设备的信息

-h,——help显示帮助并退出
-V,——version输出版本信息并退出

3)案例实操

➜  ~ lsblk -af

7.9.4 mount / umount 挂载 / 卸载

对于Linux用户来讲, 不论有几个分区, 分别分给哪一个目录使用, 它总归就是一个根目录、 一个独立且唯一的文件结构。
Linux中每个分区都是用来组成整个文件系统的一部分, 它在用一种叫做“挂载”的处理方法, 它整个文件系统中包含了一整套的文件和目录, 并将一个分区和一个目录联系起来,要载入的那个分区将使它的存储空间在这个目录下获得。
1)挂载前准备(必须要有光盘或者已经连接镜像文件)
image.png
image.png
2)基本语法 :::info mount [-t vfstype] [-o options] device dir (功能描述:挂载设备)
umount 设备文件名或者挂载点 (功能描述:卸载设备) ::: 3)参数说明

参数 功能说明
-t vfstype 指定文件系统的类型, 通常不必指定。 mount 会自动选择正确的类型。 常用类型有:
光盘或光盘镜像: iso9660
DOS fat16 文件系统: msdos
Windows 9x fat32 文件系统: vfat
Windows NT ntfs 文件系统: ntfs
Mount Windows 文件网络共享: smbfs
UNIX(LINUX) 文件网络共享: nfs
-o options 主要用来描述设备或档案的挂接方式。 常用的参数有:
loop: 用来把一个文件当成硬盘分区挂接上系统
ro: 采用只读方式挂接设备
rw: 采用读写方式挂接设备
iocharset: 指定访问文件系统所用字符集
device 要挂接(mount)的设备
dir 设备在系统上的挂接点(mount point)

4)案例实操
(1)挂载光盘镜像文件

# 建立挂载点
mkdir /mnt/cdrom
# 设备/dev/cdrom 挂载到挂载点:/mnt/cdrom
mount -t iso9660 /dev/cdrom /mnt/cdrom/
# 查看挂载点
ls -l /mnt/cdrom
du -sh /mnt/cdrom/*

(2)卸载光盘镜像文件

umount /mnt/cdrom

5)设置开机自动挂载

➜  ~ vim /etc/fstab

image.png :::warning /etc/fstab 文件格式

  • 挂载设备ID
  • 挂载点
  • 挂载的文件类型
  • 挂载的参数
  • Dump选项(整个系统做备份,定期备份,值有0[不做备份]和1[定期备份])
  • 当前文件系统的检查的优先级(fsck检查和修复文件系统;系统开机的时候会使用该命令对系统分区进行检查,根据/etc/fstab的优先级来决定检查的顺序。值有0[不检查],1[优先级最高],2[等1的检查完毕后再来检查2]) :::

    7.9.5 fdisk 分区

    Linux fdisk 是一个创建和维护分区表的程序,它兼容 DOS 类型的分区表、BSD 或者 SUN 类型的磁盘列表。
    1)基本语法 :::info fdisk -l (功能描述:查看磁盘分区详情)
    fdisk 硬盘设备名 (功能描述:对新增硬盘进行分区操作)
    fdisk [必要参数][选择参数] ::: 2)选项说明
    必要参数:

  • -l 列出素所有分区表

  • -u 与 -l 搭配使用,显示分区数目

选择参数:

  • -s<分区编号> 指定分区
  • -v 版本信息

菜单操作说明

  • m :显示菜单和帮助信息
  • a :活动分区标记/引导分区
  • d :删除分区
  • l :显示分区类型
  • n :新建分区
  • p :显示分区信息
  • q :退出不保存
  • t :设置分区号
  • v :进行分区检查
  • w :保存修改
  • x :扩展应用,高级功能

3)经验技巧
该命令必须在 root 用户下才能使用
4)功能说明 :::info (1) Linux 分区
Device: 分区序列
Boot: 引导
Start: 从X磁柱开始
End: 到Y磁柱结束
Blocks: 容量
Id: 分区类型ID
System: 分区类型

(2) 分区操作按键说明
m: 显示命令列表
p: 显示当前磁盘分区
n: 新增分区
w: 写入分区信息并退出
q: 不保存分区信息直接退出 ::: 5)案例实战
(1)查看系统分区情况

[root@kubesphere-master ~]#fdisk -l

Disk /dev/sda: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000b8f7b

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     4196351     2097152   83  Linux
/dev/sda2         4196352   302008319   148905984   8e  Linux LVM

image.png

~ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   0  200G  0 disk
└─sdb1   8:17   0   10G  0 part

~ lsblk -fp
NAME        FSTYPE  LABEL           UUID                                 MOUNTPOINT
/dev/sdb
└─/dev/sdb1

# 硬盘格式化文件系统
~ mkfs -t xfs /dev/sdb1
~ lsblk -fp
NAME        FSTYPE  LABEL           UUID                                 MOUNTPOINT
/dev/sdb
└─/dev/sdb1 xfs                     abb7f166-a42f-4ef6-b5e5-112eaf80ac82

~ mkdir /home/kubesphere
~ mount -t xfs /dev/sdb1 /home/kubesphere
~ lsblk -fp
NAME        FSTYPE  LABEL           UUID                                 MOUNTPOINT
/dev/sdb
└─/dev/sdb1 xfs                     abb7f166-a42f-4ef6-b5e5-112eaf80ac82 /home/kubesphere
~ df -Th | grep /dev/sdb1
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/sdb1      xfs        10G   33M   10G   1% /home/kubesphere