Linux压缩工具
tar:打包目录调用压缩算法
介绍:前面我们提到了,大多数压缩工具只能针对单一文件进行操作,如果你要压缩目录的话就会很麻烦,这时候我们可以使用tar这个打包工具,将目录内的多个文件打包成一个文件,再进行压缩。
解压工具介绍:
zip 压缩免费开源压缩算法,兼容性高,压缩率相对较低
gz GNU组织优化版的zip,仅在Linux平台使用,压缩率高于zip
bz2 gz升级版,仅在Linux平台使用,压缩率高于gz
xz 压缩率高于bz2,但是压缩速度慢,资源占用高
tar 打包目录,调用压缩算法压缩打包好的文件;
-c 创建打包文件
-x 解开打包文件
-v 显示过程
-f 指定压缩文件
-z gzip算法
-j bzip2算法
-J xz算法
-C 指定解压缩的目录
-t 查看tar包内的文件
-p 不修改文件属性
-P 允许压缩路径中包含有"/"
--exclude 压缩过程中排除指定的文件
tar -cvf etc.tar /etc # 仅归档不压缩
tar -czvf etc.tar.gz /etc # 使用gzip压缩
tar -cjvf etc.tar.bz2 /etc # 使用bzip2压缩
tar -cJvf etc.tar.xz /etc # 使用xz压缩
例:
压缩
[root@zuolaoshi test]# tar -czf etc.tar.gz etc
[root@zuolaoshi test]# ls
etc etc.tar.gz
解压缩
[root@zuolaoshi test]# ls
etc.tar.gz
[root@zuolaoshi test]# tar -xf etc.tar.gz
[root@zuolaoshi test]# ls
etc etc.tar.gz
查看压缩包内容
[root@zuolaoshi test]# tar -tf etc.tar.gz
etc/
etc/libreport/
etc/libreport/workflows.d/
etc/libreport/workflows.d/report_uploader.conf
etc/libreport/workflows.d/anaconda_event.conf
.
.
.
查询压缩包里面的文件信息
[root@zuolaoshi test]# tar -tvf etc.tar.gz |more
drwxr-xr-x root/root 0 2019-10-21 04:35 etc/
drwxr-xr-x root/root 0 2019-10-21 04:35 etc/libreport/
drwxr-xr-x root/root 0 2019-10-21 04:35 etc/libreport/workflows.d/
.
.
.
解压压缩包指定的文件
[root@zuolaoshi test]# tar -tvf etc.tar.gz | grep shadow
---------- root/root 792 2019-10-21 04:35 etc/gshadow
---------- root/root 1506 2019-10-21 04:35 etc/shadow
---------- root/root 781 2019-10-21 04:35 etc/gshadow-
---------- root/root 1374 2019-10-21 04:35 etc/shadow-
-rw-r--r-- root/root 214 2019-10-21 04:35 etc/pam.d/sssd-shadowutils
[root@zuolaoshi test]# tar -xf etc.tar.gz etc/shadow
[root@zuolaoshi test]# ls
etc etc.tar.gz
[root@zuolaoshi test]# ls etc
shadow
lrzsz:本地和服务器上传下载
安装lrzsz方法:
yum install -y lrzsz
使用方法:
rz 上传
sz 下载
wget:下载
特点:它有几个非常实用的特点,特别适合服务器环境:
非交互式(省心):你敲下命令后,它就在后台默默下载,哪怕你退出了终端,它也能继续跑,不需要你一直盯着。
断点续传(防中断):如果下载大文件时网络突然断了,它可以从断开的地方继续下载,不用从头再来。
支持协议多:支持 HTTP、HTTPS、FTP 等最常见的网络协议。
递归下载(能爬网站):它不仅能下载单个文件,还能顺着网页里的链接,把整个网站或者整个目录的文件都扒下来(像爬虫一样)。
========================================
wget 命令常用选项速查表
========================================
选项 说明
----------------------------------------
-c # 断点续传(下载中断后,再次执行可从断开处继续,不用重头再来)
-b # 后台下载(不占用当前终端界面,默默在后台运行)
-P [目录] # 指定保存目录(例如:-P /tmp 把文件直接存到 tmp 文件夹中)
-O [新文件名] # 下载并重命名(例如:-O app.zip 把下载的文件存为 app.zip)
-i [文件] # 批量下载(从指定的文本文件中读取链接,一行一个,逐个下载)
-q # 静默模式(下载时不输出任何进度条和状态信息)
-t [次数] # 设置重试次数(例如:-t 10 网络波动失败后自动重试 10 次)
-T [秒数] # 设置超时时间(例如:-T 30 如果 30 秒没响应就放弃连接)
--limit-rate=[速度] # 限速下载(例如:--limit-rate=500k 限制下载速度为 500KB/s)
--no-check-certificate # 跳过 SSL 证书验证(下载 HTTPS 资源证书报错时常用)
========================================
常用组合示例:
wget https://example.com/file.zip # 基础下载单个文件
wget -c https://example.com/bigfile.iso # 断点续传下载大型文件
wget -b -o wget.log https://example.com/data.tar.gz # 后台下载,并把日志保存到 wget.log
wget -P /opt/downloads -O redis.tar.gz https://redis.io/redis.tar.gz # 下载到指定目录并重命名
wget --limit-rate=1m https://example.com/video.mp4 # 限制网速为 1MB/s 进行下载
wget -i urls.txt # 从 urls.txt 文件中读取链接进行批量下载
========================================nginx源码编译安装
介绍:GNU提供大量开源软件,我们可以下载到服务器自主编译安装;
高级语言分类:
* 编译型语言:例如C\C++、Go、Rust、Java,源码不能直接执行,需要编译器将源码"编译"成二进制程序(java字节码需要jvm运行);
* 解释型语言:例如:Python、Shell、JavaScript、PHP,源码可以被解释器直接运行;
# 准备工作
# 先配置好yum源,配好网络
# 安装wget
yum install -y wget
# 下载nginx/redis源码,并编译;
1.去官网下载源代码; nginx.org
cd /usr/local/src #进入这个文件进行下载,文件会下载到/src里面
wget https://nginx.org/download/nginx-1.31.0.tar.gz #开始下载
2.解压缩;
tar -xvf nginx-1.31.0.tar.gz #解压文件
3.安装编译环境;gcc make openssl #安装gcc、make、openssl
yum install -y make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
4.执行环境检测脚本;指定安装路径与开启的模块;
cd nginx-1.31.0 #进入文件
./configure --with-http_stub_status_module --with-http_ssl_module #检查linux环境(比如有没有安装必要的编译器、依赖库等)
5.编译,make
make -j4 #动用4个cpu核心,同时开工编译程序。
6.安装,编译成功后,make install
make install #正式安装到系统,可以使用。
7.测试是否安装成功
cd /usr/local/nginx/sbin #进入文件目录
./nginx #启动器在目录里面,启动程序。
systemctl stop firewalld # 关闭防火墙
systemctl disable firewalld # 开机不启动防火墙
# 真机ping通Linux虚拟机;
浏览器:地址栏输入Linux的ip地址;
# nginx默认的web文件路径
cd /usr/local/nginx/htmlgdisk:磁盘分区工具
介绍:专门用来管理GPT分区表,升级版fdisk,支持超过2T硬盘分区。
下载方式:
yum install -y gdisk
p | 打印(Print)当前分区表
n | 新建(New)分区
d | 删除(Delete)分区
t | 修改(Type)分区类型代码
i | 查看(Info)分区详细信息
w | 写入(Write)磁盘并退出
q | 不保存退出(Quit)LVM逻辑卷管理
介绍:磁盘的管理工具,可以灵活的对分区大小进行扩容或缩容。
PV:物理卷,将物理磁盘通过命令转换为物理卷PV
PE:默认4MB大小的数据存储单元,在PV中创建
VG:卷组,由多个P组合而成的“存储池”
LV:逻辑卷,在VG拆分出来建立文件系统,可以被系统挂载,当逻辑卷容量空间不足时,可以使用VG中剩余空间进行扩容也可以“缩容”(但不推荐),将多余空间回归到VG
#下载lvm2
yum install lvm2
操作流程:
添加物理磁盘 -> pvcreate ( PV ) -> vgcreate (VG) -> lvcreate (LV) -> mkfs.ext4 格式化 ->
mount 挂载 -> 创建文件 -> lvextend 扩容 -> 修复磁盘 让系统正确识别lv的容量
功能/命令 物理卷管理 卷组管理 逻辑卷管理
扫描 pvscan vgscan lvscan
建立 pvcreate vgcreate lvcreate
显示 pvdisplay vgdisplay lvdisplay
删除 pvremove vgremove lvremove
扩展 vgextend lvextend
缩小 vgreduce lvreduce
# 创建PV
lsblk # 查看系统中磁盘的状态
pvcreate /dev/sdb /dev/sdc # 将硬盘sdb、sdc初始化为物理卷
pvscan # 扫描pv
pvs # pv的简单信息
pvdisplay # 查看pv的详细信息
pvremove /dev/sdb /dev/sdc # 移除pv,恢复磁盘
# 创建VG
vgcreate vg1 /dev/sdb /dev/sdc # 建立vg(卷组)将sdb和sdc创建合并名为vg1的卷组
vgs # vg的简单信息
vgdisplay # 查看vg的详细信息
# 创建LV
lvcreate -n lv1 -L 10G vg1 # 建立lv(逻辑卷)-n是指定逻辑卷名称 -L是指定逻辑卷大小 vg1卷组的名字
lvdisplay # 查看lv的详细信息
ls -l /dev/vg1/lv1 # 查看/dev/vg1/lv1 逻辑卷的详细属性
mkfs.ext4 /dev/vg1/lv1 # 格式化/dev/vg1/lv1 逻辑卷为ext4 文件系统
mkdir /mnt/data # 创建一个data名的文件 用来对接挂载的位置
mount /dev/vg1/lv1 /mnt/data/ # 挂载 来实现使用分配好的空间
#空闲全部分配及沾满分配
lvcreate -n lv1 -l +100%FREE vg1 # 注:把vg剩余空间全部分配lv1
lvcreate -n lv1 -l +100%VG vg1 # 注:整个vg1的总容量全部分配lv1(包括已用,慎用!)
# 扩容命令
umount /dev/vg1/lv1 # 扩容之前确认好没有挂载,如果挂载了先卸掉,在扩容
lvextend -L +30G /dev/vg1/lv1 # lv(逻辑卷)-L 指定大小 数值只能比原本的高
lvextend -l +100%FREE /dev/vg1/lv1 # 注:-l :代表按物理扩展块(PE)的数量来分配空间。
# +100%FREE:表示在现有基础上,增加卷组中 100% 的剩余空闲空间。
e2fsck -f /dev/vg1/lv1 # e2fsck是检查和修复ext2、ext3、ext4 等文件系统的核心工具
# -f代表强制,意思是不管它看起来多健康,必须从头到尾强制检查一遍
resize2fs /dev/vg1/lv1 # 系统内核还没有同步到这部分新修改的信息,需要手动同步一下
mount /dev/vg1/lv1 /mnt/data/ # 操作好扩容后并且修复和同步以后进行挂载
df -h # 查看是否挂载成功
df -Th /dev/vg1/lv1 # 确定文件系统类型 不同的文件类型执行刷新命令不一样
# 缩容命令(生产环境慎用!)
umount /dev/vg1/lv1
e2fsck -f /dev/vg1/lv1
resize2fs /dev/vg1/lv1 5G
lvreduce -L 5G /dev/vg1/lv1
mount /dev/vg1/lv1 /mnt/data/
mdadm:软RAID
介绍:mdadm命令在Linux系统中创建和管理软件RAID磁盘阵列,而且它涉及的理论知识和操作过程与生产环境中的完全一致
mdadm用于创建、调整、监控和管理RAID设备,英文全称为“multiple devices admin”,语法格式为“mdadm参数 硬盘名称”。
RAID(冗余阵列独立磁盘)
RAID:特点介绍
只追求性能,不关心数据安全:选 RAID 0优点:容量和读写速度翻倍(N 块盘总和)缺点:任意一块硬盘损坏,数据全丢适用:个人影音、缓存数据,可接受丢失的场景
只追求极致安全,不关心性能和成本:选 RAID 1优点:数据实时镜像,任意一块硬盘损坏不影响数据缺点:容量利用率仅 50%,写入速度无提升适用:核心财务数据、用户数据库等关键信息
平衡性能、容量与安全性,性价比最高:选 RAID 5优点:至少 3 块盘,支持一块硬盘故障恢复,容量利用率 ≈ (N−1)/N,读写性能均衡缺点:重建数据耗时,写入性能略低适用:中小型文件服务器、Web 服务器、一般数据库
更高安全性,可容忍两块硬盘同时故障:选 RAID 6优点:至少 4 块盘,双校验,容错更强缺点:容量利用率更低(≈ (N−2)/N),成本更高适用:大容量存储、对安全要求极高的核心数据
不差钱,追求极致性能+高安全:选 RAID 10优点:结合 RAID 1 镜像 + RAID 0 条带,性能强、容错高(每组可坏一块)缺点:容量利用率仅 50%,成本最高适用:金融系统、高频交易、高 IO 数据库
核心级别对比表格
软件安装:
yum install mdadm
# 创建
mdadm -Cv /dev/md0 -n 4 -l 10 /dev/sd{b,c,d,e} # 创建并显示过程 指定4块磁盘 RAID10
mdadm -Q /dev/md0 # 查看简易信息 详细用 -D
mkfs.ext4 /dev/md0 # 制作好的RAID格式为ext4格式
mkdir /RAID # 创建挂载点
mount /dev/md0 /RAID # 硬盘挂载
df -h # 查看挂载情况
# 模拟损坏及修复
mdadm /dev/md0 -f /dev/sdb # -f 模拟设备损坏 /dev/sdb损坏
mdadm /dev/md0 -r /dev/sdb # 移除指定故障盘
mdadm /dev/md0 -a /dev/sdb # 系统默认会自动开始数据的同步工作
mdadm -D /dev/md0 # 使用-D参数即可看到整个过程和进度(用百分比表示)
========================================
mdadm 命令常用选项速查表
========================================
选项 说明
----------------------------------------
-C / --create # 创建一个新的 RAID 阵列
-A / --assemble # 装配(激活)一个已经存在的 RAID 阵列
-D / --detail # 查看指定 RAID 阵列的详细信息
-S / --stop # 停止指定的 RAID 阵列
-Q / --query # 查看设备是否为 RAID 设备及其摘要信息
-a / --auto # 检测设备名称(若设备文件不存在则自动创建)
-n / --raid-devices # 指定组成阵列的活动设备数量
-l / --level # 指定 RAID 级别(如 0、1、5、10 等)
-v / --verbose # 显示指令执行的详细过程
-x / --spare-devices # 指定阵列中备用磁盘(热备盘)的数量
-f / --fail # 将阵列中的某个成员盘标记为故障(模拟设备损坏)
-r / --remove # 从阵列中移除指定的故障盘
--add # 向阵列中添加新的磁盘(用于替换故障盘或加备盘)
--zero-superblock # 擦除磁盘上的 RAID 超级块信息(彻底删除 RAID 时用)
--scan # 扫描配置文件或 /proc/mdstat 获取缺失的信息
========================================
常用组合示例:
mdadm -Cv /dev/md0 -l 1 -n 2 /dev/sdb /dev/sdc # 用两块盘创建 RAID1 阵列(显示详细过程)
mdadm -Cv /dev/md0 -l 5 -n 3 /dev/sd{b,c,d} # 用三块盘创建 RAID5 阵列
mdadm -Cv /dev/md0 -l 5 -n 3 -x 1 /dev/sd{b,c,d,e} # 用三块盘创建 RAID5,并指定一块热备盘
mdadm -D /dev/md0 # 查看 md0 阵列的详细状态
cat /proc/mdstat # 查看当前系统所有 RAID 的同步进度
mdadm /dev/md0 -f /dev/sdb # 模拟或标记 sdb 磁盘故障
mdadm /dev/md0 -r /dev/sdb # 将故障的 sdb 盘从阵列中移除
mdadm /dev/md0 -a /dev/sdd # 将新盘 sdd 加入阵列开始重建
mdadm -S /dev/md0 # 停止 md0 阵列
mdadm --zero-superblock /dev/sdb # 擦除 sdb 上的 RAID 元数据
========================================
Linux压缩工具
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法