7.8 压缩和解压类
7.8.1 gzip / gunzip 压缩
1)基本语法
:::info
gzip 文件 (功能描述:压缩文件,只能将文件压缩*.gz文件)
gunzip 文件.gz (功能描述:解压缩文件命令)
:::
2)经验技巧
(1)只能压缩文件不能压缩目录
(2)不能保留原来的文件
(3)同时多个文件会产生多个压缩包
3)案例实操
(1)gzip压缩
➜ ls -l fstab
-rw-r--r-- 1 root root 382 May 22 17:07 fstab
➜ gzip fstab
➜ ls -l fstab.gz
-rw-r--r-- 1 root root 279 May 22 17:07 fstab.gz
# 查看压缩包内的文件内容
➜ zcat fstab.gz
(2)gunzip解压缩文件
➜ gunzip fstab.gz
➜ ls -l fstab
-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
选项 | 功能 |
---|---|
-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
- -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=
- —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)压缩多个文件
(2)压缩目录➜ ~ 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
(3)解压到当前目录➜ ~ tar -zcvf etc.tar.gz etc/ ➜ ~ tar -tf etc.tar.gz
(4)解压到指定目录➜ ~ tar -zxvf mypackage.tar.gz
➜ ~ 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
:::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
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)挂载前准备(必须要有光盘或者已经连接镜像文件)
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
:::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
~ 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