nmcli
nmcli 是 NetworkManager 的命令行工具,全称 Network Manager Command Line Interface。它是 CentOS 7+ / RHEL 7+ 中管理网络的首选工具,功能强大且配置可以永久生效。
一、核心概念:设备 vs 连接
理解 nmcli 前,必须先分清两个概念:
| 设备 | Device | 物理网卡(如 ens192、eth0) |
| 连接 | Connection | 网卡的配置方案(一个设备可以有多个连接配置,但同一时刻只能激活一个) |
类比:设备是“手机”,连接是“SIM 卡”。一部手机可以插多张 SIM 卡,但同一时间只能用一张。
二、查看信息
1. 查看设备
# 查看所有设备状态
nmcli device
nmcli device status
# 查看指定设备详情
nmcli device show ens192
# 只看 IP 相关信息
nmcli device show ens192 | grep IP4
2. 查看连接
# 查看所有连接
nmcli connection
nmcli connection show
# 查看指定连接详情
nmcli connection show ens192-static
# 只看 IPv4 配置
nmcli connection show ens192-static | grep ipv4
3. 查看通用网络状态
# 查看整体网络状态
nmcli general status
# 查看网络连通性
nmcli networking connectivity
三、设备管理
# 断开设备
sudo nmcli device disconnect ens192
# 连接设备
sudo nmcli device connect ens192
# 查看设备状态
nmcli device status
四、连接管理
1. 启用/停用连接
# 启用连接
sudo nmcli connection up ens192-static
# 停用连接
sudo nmcli connection down ens192-static
2. 删除连接
sudo nmcli connection delete ens192-static
3. 修改连接
# 修改 IP 地址
sudo nmcli connection modify ens192-static ipv4.addresses 10.1.8.100/24
# 修改网关
sudo nmcli connection modify ens192-static ipv4.gateway 10.1.8.2
# 修改 DNS
sudo nmcli connection modify ens192-static ipv4.dns "223.5.5.5 114.114.114.114"
# 修改获取方式为手动
sudo nmcli connection modify ens192-static ipv4.method manual
# 修改获取方式为自动(DHCP)
sudo nmcli connection modify ens192-static ipv4.method auto
# 修改后需要重新激活
sudo nmcli connection up ens192-static
五、创建连接
1. 自动获取(DHCP)
sudo nmcli connection add type ethernet ifname ens192 con-name ens192-dynamic
2. 静态 IP
sudo nmcli connection add type ethernet ifname ens192 con-name ens192-static \\
ipv4.method manual \\
ipv4.addresses 10.1.8.100/24 \\
ipv4.gateway 10.1.8.2 \\
ipv4.dns "223.5.5.5 114.114.114.114"
3. 添加静态路由
sudo nmcli connection modify ens192-static ipv4.routes "192.168.50.0/24 10.1.8.2"
六、网络启停
# 停用所有网络
sudo nmcli networking off
# 启用所有网络
sudo nmcli networking on
# 查看网络是否启用
nmcli networking
注意:nmcli networking off 只是停用网络连接,不会停止 NetworkManager 服务。
七、nmtui — 图形化文本界面
如果觉得 nmcli 命令太长,可以用 nmtui 进入交互式文本界面:
sudo nmtui
操作方式:
- 方向键:移动光标
- Tab:切换区域
- 回车:选中/确认
- 空格:勾选/取消
功能:
- 编辑连接
- 启用连接
- 设置系统主机名
八、实战场景
场景一:将网卡从 DHCP 改为静态 IP
# 1. 查看当前连接名
nmcli connection show
# 2. 修改为静态
sudo nmcli connection modify ens192 ipv4.method manual
sudo nmcli connection modify ens192 ipv4.addresses 10.1.8.100/24
sudo nmcli connection modify ens192 ipv4.gateway 10.1.8.2
sudo nmcli connection modify ens192 ipv4.dns "223.5.5.5"
# 3. 重新激活
sudo nmcli connection up ens192
场景二:新增一块网卡并配置静态 IP
# 1. 确认新网卡名称
ip -br link
# 2. 创建静态连接
sudo nmcli connection add type ethernet ifname ens224 con-name ens224-static \\
ipv4.method manual \\
ipv4.addresses 192.168.1.100/24 \\
ipv4.gateway 192.168.1.1
# 3. 激活
sudo nmcli connection up ens224-static
场景三:切换 DNS 服务器
sudo nmcli connection modify ens192 ipv4.dns "8.8.8.8 114.114.114.114"
sudo nmcli connection up ens192
cat /etc/resolv.conf
九、nmcli vs 传统配置文件
| 推荐度 | ✅ 推荐 | ⚠️ 不推荐 |
| 生效方式 | nmcli connection up | nmcli connection reload + up |
| 语法检查 | 有 | 无 |
| 跨发行版 | ✅ 支持 | ❌ 仅 RHEL 系 |
| 可脚本化 | ✅ 强 | 一般 |
课堂笔记里也强调:尽量不要手动修改配置文件,用 nmcli 或 nmtui。
十、常用命令速查
| 查看设备 | nmcli device |
| 查看连接 | nmcli connection show |
| 启用连接 | nmcli connection up 连接名 |
| 停用连接 | nmcli connection down 连接名 |
| 删除连接 | nmcli connection delete 连接名 |
| 修改 IP | nmcli connection modify 连接名 ipv4.addresses IP/掩码 |
| 修改网关 | nmcli connection modify 连接名 ipv4.gateway 网关 |
| 修改 DNS | nmcli connection modify 连接名 ipv4.dns "DNS1 DNS2" |
| 改为静态 | nmcli connection modify 连接名 ipv4.method manual |
| 改为 DHCP | nmcli connection modify 连接名 ipv4.method auto |
| 新增连接 | nmcli connection add type ethernet ifname 网卡 con-name 连接名 |
| 图形化界面 | nmtui |
一句话总结
nmcli = NetworkManager 的命令行入口:
- 看:nmcli device、nmcli connection show
- 改:nmcli connection modify
- 建:nmcli connection add
- 启停:nmcli connection up/down
记住:设备是网卡,连接是配置。一个设备可以有多个连接,但同一时刻只能激活一个。
文件归档与备份
Linux 文件归档与备份是运维的核心技能之一。归档是把多个文件打包成一个文件,备份则是在归档的基础上增加策略和自动化。我们分几个层面来讲。
一、归档 vs 备份
| 归档 | 把多个文件/目录打包成一个文件,便于传输和存储 | tar、zip |
| 压缩 | 减小文件体积,节省空间 | gzip、bzip2、xz |
| 备份 | 按策略定期复制数据,防止丢失 | tar + cron、rsync、dd |
归档不一定压缩,备份一定包含策略(频率、保留、恢复)。
二、tar — 最常用的归档工具
tar 的名称来源于 Tape Archive(磁带归档),是 Linux 下最经典的打包工具。
1. 基本语法
tar [选项] [归档文件名] [要归档的文件或目录]
2. 核心选项
| -c | 创建归档(create) |
| -x | 解压归档(extract) |
| -t | 查看归档内容(list) |
| -f | 指定归档文件名(必须放在最后) |
| -v | 显示过程(verbose) |
| -z | 用 gzip 压缩/解压(.tar.gz) |
| -j | 用 bzip2 压缩/解压(.tar.bz2) |
| -J | 用 xz 压缩/解压(.tar.xz) |
| -C | 指定解压目录 |
| –exclude | 排除指定文件或目录 |
3. 常用操作
① 创建归档
# 打包(不压缩)
tar -cvf backup.tar /home/zzw
# 打包并 gzip 压缩
tar -czvf backup.tar.gz /home/zzw
# 打包并 bzip2 压缩
tar -cjvf backup.tar.bz2 /home/zzw
# 打包并 xz 压缩(压缩率最高,速度最慢)
tar -cJvf backup.tar.xz /home/zzw
② 查看归档内容
tar -tvf backup.tar.gz
③ 解压归档
# 解压到当前目录
tar -xzvf backup.tar.gz
# 解压到指定目录
tar -xzvf backup.tar.gz -C /tmp/
# 只解压指定文件
tar -xzvf backup.tar.gz home/zzw/file.txt
④ 排除文件
tar -czvf backup.tar.gz /home/zzw –exclude="*.log" –exclude="cache"
三、其他压缩工具
1. gzip / gunzip
# 压缩(原文件会消失,生成 .gz)
gzip file.txt
# 解压
gunzip file.txt.gz
# 保留原文件
gzip -k file.txt
# 查看压缩率
gzip -l file.txt.gz
2. bzip2 / bunzip2
bzip2 file.txt # 压缩
bunzip2 file.txt.bz2 # 解压
3. xz / unxz
xz file.txt # 压缩
unxz file.txt.xz # 解压
4. zip / unzip
# 压缩
zip -r backup.zip /home/zzw
# 解压
unzip backup.zip
# 解压到指定目录
unzip backup.zip -d /tmp/
对比:
| gzip | 中 | 快 | .gz |
| bzip2 | 较高 | 中 | .bz2 |
| xz | 最高 | 慢 | .xz |
| zip | 中 | 快 | .zip |
四、rsync — 增量备份利器
rsync 是 Linux 下最强大的文件同步工具,支持增量传输(只传变化的部分),非常适合备份。
1. 基本语法
rsync [选项] 源路径 目标路径
2. 常用选项
| -a | 归档模式(保留权限、时间、所有者等) |
| -v | 显示过程 |
| -z | 传输时压缩 |
| -h | 人类可读格式 |
| –delete | 删除目标中源没有的文件(保持完全一致) |
| –exclude | 排除文件 |
| -P | 显示进度 + 支持断点续传 |
| -e ssh | 通过 SSH 传输 |
3. 常用示例
# 本地同步
rsync -avh /home/zzw/ /backup/zzw/
# 本地同步并删除目标多余文件(镜像)
rsync -avh –delete /home/zzw/ /backup/zzw/
# 远程同步(通过 SSH)
rsync -avhz -e ssh /home/zzw/ zzw@10.1.8.10:/backup/zzw/
# 排除日志和缓存
rsync -avh –exclude="*.log" –exclude="cache" /home/zzw/ /backup/zzw/
# 显示进度,支持断点续传
rsync -avhP /home/zzw/ /backup/zzw/
注意:源路径末尾的 / 很关键:
- /home/zzw/ → 同步 zzw 目录里面的内容
- /home/zzw → 同步 zzw 目录本身
五、dd — 磁盘级备份
dd 用于按块复制,可以备份整个磁盘或分区,适合做镜像。
1. 备份磁盘
sudo dd if=/dev/sda of=/backup/sda.img bs=4M status=progress
| if= | 输入文件(源) |
| of= | 输出文件(目标) |
| bs=4M | 块大小 |
| status=progress | 显示进度 |
2. 恢复磁盘
sudo dd if=/backup/sda.img of=/dev/sda bs=4M status=progress
3. 备份 MBR
sudo dd if=/dev/sda of=/backup/mbr.img bs=512 count=1
注意:dd 非常危险,of= 写错会直接覆盖磁盘数据,操作前务必确认。
六、备份策略
1. 三种备份类型
| 全量备份 | 备份所有数据 | 恢复简单 | 占用空间大,耗时长 |
| 增量备份 | 只备份上次备份后变化的数据 | 节省空间和时间 | 恢复需要全量 + 所有增量 |
| 差异备份 | 只备份上次全量备份后变化的数据 | 恢复比增量简单 | 占用空间比增量大 |
2. 常见策略:3-2-1 原则
- 3 份数据副本
- 2 种不同存储介质
- 1 份异地存放
3. 自动化备份(cron + tar)
# 编辑 crontab
crontab -e
# 每天凌晨 2 点全量备份 /home
0 2 * * * tar -czvf /backup/home_$(date +\\%Y\\%m\\%d).tar.gz /home
注意:crontab 中的 % 需要转义为 \\%。
七、实战场景
场景一:备份网站目录
tar -czvf /backup/www_$(date +%Y%m%d).tar.gz /var/www/html
场景二:增量同步到远程服务器
rsync -avhz –delete -e ssh /var/www/ user@backup-server:/backup/www/
场景三:备份数据库
mysqldump -u root -p database > /backup/db_$(date +%Y%m%d).sql
tar -czvf /backup/db_$(date +%Y%m%d).sql.tar.gz /backup/db_$(date +%Y%m%d).sql
场景四:定期清理旧备份
# 删除 7 天前的备份
find /backup -name "*.tar.gz" -mtime +7 -delete
八、一句话总结
| tar | 打包归档 | 最常用,配合 -z/-j/-J 压缩 |
| gzip/bzip2/xz | 单文件压缩 | xz 压缩率最高 |
| zip/unzip | 跨平台压缩 | Windows 兼容 |
| rsync | 增量同步/备份 | 远程备份首选 |
| dd | 磁盘级备份 | 整盘镜像,危险 |
日常备份记住:tar 打包,rsync 同步,cron 定时,find 清理。



