20.1 系统基本设置
20.1.1 网络设置(手动设置与 DHCP 自动取得)
CentOS 7 使用 nmcli (NetworkManager CLI) 管理网络,网卡命名规则:
| 名称 | 说明 |
|---|---|
eno1 | 主板 BIOS 内置网卡 |
ens1 | 主板 BIOS 内置 PCI-E 网卡 |
enp2s0 | PCI-E 独立网卡(可能有 s0, s1 多插孔) |
eth0 | 上述都不适用时的默认编号 |
ifconfig -a可列出所有网卡,不管叫什么名字。
手动设置固定 IP
需要参数:IP、Netmask、Gateway、DNS、hostname。
nmcli connection show # 查看所有连线代号(NAME=连线代号, DEVICE=网卡)
nmcli connection show eth0 # 查看 eth0 的详细设置| 关键参数 | 说明 | 示例 |
|---|---|---|
connection.autoconnect | 开机时是否启动 | yes / no |
ipv4.method | 手动还是自动 | manual / auto |
ipv4.addresses | IP/子网掩码 | 172.16.1.1/16 |
ipv4.gateway | 默认网关 | 172.16.200.254 |
ipv4.dns | DNS 服务器 IP | 172.16.200.254 |
# 设置网络参数
nmcli connection modify eth0 \
connection.autoconnect yes \
ipv4.method manual \
ipv4.addresses 172.16.1.1/16 \
ipv4.gateway 172.16.200.254 \
ipv4.dns 172.16.200.254
# 启动连线使配置生效
nmcli connection up eth0
nmcli connection show eth0 # 确认 IP4.ADDRESS, IP4.GATEWAY, IP4.DNSDHCP 自动取得
nmcli connection modify eth0 \
connection.autoconnect yes \
ipv4.method auto
nmcli connection up eth0修改主机名称
hostnamectl # 显示当前主机名 + 系统信息(OS版本、核心版本、硬件架构)
hostnamectl set-hostname www.centos.vbird # 修改主机名(写入 /etc/hostname)20.1.2 日期与时间设置
timedatectl [command]| 命令 | 说明 |
|---|---|
timedatectl | 显示本地时间、UTC 时间、时区、NTP 状态等 |
timedatectl list-timezones | 列出所有支持的时区 |
timedatectl set-timezone "Asia/Taipei" | 设置时区 |
timedatectl set-time "2015-09-01 12:02" | 设置日期时间(格式 yyyy-mm-dd HH:MM) |
timedatectl set-ntp yes / no | 启用/关闭 NTP 网络校时 |
timedatectl set-time会同时更新系统时间和 BIOS 时钟(替代了过去date+hwclock两步操作)。
手动网络校时
ntpdate tock.stdtime.gov.tw # 与台湾标准实验室时间服务器同步
hwclock -w # 同步到 BIOS💡不喜欢自动 NTP(会多开端口),可以写 crontab 定期执行
ntpdate+hwclock -w。
20.1.3 语系设置
localectl # 显示"系统语系"设置(全局默认)
locale # 显示"当前 bash 的语系"(可以被 export 临时覆盖)系统语系与用户语系可以不同:
# 将系统默认语系改为英文
localectl set-locale LANG=en_US.utf8
systemctl isolate multi-user.target
systemctl isolate graphical.target # 重新进入图形界面后生效20.1.4 防火墙简易设置
CentOS 7 默认防火墙机制为 firewalld,命令行工具为 firewall-cmd,也可用图形界面(应用程序 → 杂项 → 防火墙)。
两种规则模式:
| 模式 | 说明 |
|---|---|
| 执行时期 (Runtime) | 临时生效,重启后消失 |
| 永久记录 (Permanent) | 写入配置文件,需 --reload 生效 |
⚠️ 一定要在永久记录区添加规则!否则下次重载就失效。
界域 (zone):firewalld 预定义了多种网络环境(public, trusted, dmz, drop 等),默认使用 public zone 即可。
图形界面操作:
- 选择 “永久” → 选择 public zone
- 在”服务”页签勾选需要放行的服务(http, https, ftp, ssh 等)
- 在”端口”页签添加非标准端口(如 222/tcp, 555/tcp)
命令行添加富规则(rich rule):
# 放行整个网段(图形界面可能有问题,直接用命令行)
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" accept'
firewall-cmd --reload # ⚠️ 永久规则修改后必须 reload 才生效20.2 服务器硬件数据的收集
20.2.1 以系统内置 dmidecode 解析硬件配备
dmidecode -t type # 解析 CPU、主板、内存等硬件信息| type | 内容 |
|---|---|
1 | 系统数据(主板型号、硬件基础信息) |
4 | CPU 相关信息(倍频、外频、核心数、超线程数) |
9 | 系统插槽格式(PCI, PCI-E 等) |
17 | 每个内存插槽规格(容量、型号) |
dmidecode -t 1 # 查主板型号、制造商
dmidecode -t 17 # 查每根内存规格(升级内存前必查!)💡 升级硬件前用 dmidecode 查型号,再去原厂网站确认兼容性。
20.2.2 硬件资源的收集与分析
系统核心侦测到的硬件记录在 /proc 和 /sys 中。常用硬件查看指令:
| 指令 | 用途 |
|---|---|
gdisk -l | 分区表 |
dmesg | 核心运行过程中显示的讯息记录 |
vmstat | CPU/RAM/IO 状态分析 |
lspci | PCI 接口设备(显卡、网卡、USB控制器等) |
lsusb | USB 端口状态与连接设备 |
iostat | CPU 与磁盘 I/O 状态(需安装 sysstat) |
lspci:
lspci # 列出所有 PCI 设备
lspci -v # 详细信息
lspci -vv # 最详细信息
lspci -s 00:03.0 -vv # 查看特定总线设备
lspci -n # 显示 PCI ID 而非厂商名称
update-pciids # 在线更新 PCI ID 对照表
# 对照表:/usr/share/hwdata/pci.idslsusb:
lsusb # 列出所有 USB 设备(Bus, Device, ID, 厂商)
lsusb -t # 树状显示 USB 端口层级关系iostat(需 yum install sysstat):
iostat # CPU + 所有磁盘的读写统计
iostat -d 2 3 vda # 只看 vda,每 2 秒一次,共 3 次| 指标 | 含义 |
|---|---|
tps | 平均每秒传输次数(与次数有关,非容量) |
kB_read/s / kB_wrtn/s | 开机至今平均每秒读写量 |
kB_read / kB_wrtn | 开机至今总读写量 |
第一次显示的值 = 开机至今累计;后续侦测 = 两次侦测之间的增量。
20.2.3 了解磁盘的健康状态
SMART (Self-Monitoring, Analysis and Reporting Technology) — 磁盘自我监测系统。CentOS 通过 smartd 服务 + smartctl 指令实现。
smartctl -a /dev/sda # 显示磁盘完整信息(制造商、型号、SMART 状态)
# SMART overall-health self-assessment test result: PASSED ← 关键!
smartctl -t short /dev/sda # 触发一次短自检
smartctl -a /dev/sda # 再次查看,确认 "Completed without error"⚠️ 自检时磁盘 I/O 较频繁,不建议在系统忙碌时执行。虚拟机磁盘通常不支持 SMART。
20.3 备份要点
20.3.1 备份数据的考虑
系统损毁原因:
| 类型 | 示例 |
|---|---|
| 硬件问题 | 硬盘坏道、RAID 控制芯片故障、电源不稳 |
| 软件/人为 | 操作不当(rm -rf /)、资安攻击、配置错误 |
备份因素考虑:备份哪些文件、选择什么媒介、备份方式(完整/差异)、备份频率、备份工具。
主机任务不同 → 备份策略不同。Internet 服务主机(如论坛数据库)需要高频备份,个人桌面可以低频。
20.3.2 哪些 Linux 数据具有备份的意义
需要备份的目录:
| 目录 | 原因 |
|---|---|
/etc/ | 所有系统配置文件 |
/home/ | 用户主文件夹 |
/root/ | root 的家目录 |
/var/spool/mail/ | 用户邮件 |
/var/spool/{at,cron}/ | 例行性工作调度 |
/boot/ | 核心文件 |
/usr/local/ 或 /opt/ | 自行安装的软件 |
/var/lib/ | 服务运行时产生的数据(如 MySQL 数据库) |
/var/www/ 或 /srv/www/ | WWW 网页数据 |
不需要备份的目录:
| 目录 | 原因 |
|---|---|
/proc, /sys, /run | 虚拟文件系统,记录内存中的系统状态 |
/mnt, /media | 外部设备挂载点(除非自己放了数据) |
/tmp | 暂存档,没必要备份 |
/dev | 设备文件,随便 |
20.3.3 备份用储存媒体的选择
异地备援:将数据通过网络备份到另一个物理位置的机器上。缺点是需要带宽。
本地备援方案:
| 方案 | 说明 |
|---|---|
| NAS(推荐) | 内嵌 Linux 的小型服务器,支持 RAID 容错,通过网络传输 |
| USB 外接硬盘 | 便宜容量大,建议买 2-3 颗轮流备份 |
| Tape 磁带 | 企业传统方案,适合长期保存但怕消磁/发霉 |
| 光盘 | 已不适合现代数据量 |
💡 记得”备份的媒体被一起偷走”这个惨痛教训——异地备援是最终保障。
20.4 备份的种类、频率与工具的选择
20.4.1 完整备份之累积备份 (Incremental backup)
原理:第一次完整备份后,每次只备份与上次备份之间的差异。
周一:完整备份 (level 0)
周二:累积备份 (level 1) — 与周一的差异
周三:累积备份 (level 2) — 与周二的差异
周四:累积备份 (level 3) — 与周三的差异
还原:需要还原完整备份 + 所有中间累积备份(还原顺序:周一→周二→周三→周四)。
优点:备份数据量小、速度快。缺点:还原麻烦,中间任何一个备份损坏都会影响后续。
常用工具:
| 工具 | 用途 |
|---|---|
dd | 直接读扇区,可完整复制磁盘(慢) |
cpio | 配合 find 备份所有文件 |
xfsdump | XFS 原生支持累积备份 |
tar | 配合 --exclude 排除目录进行完整备份 |
# dd — 完整复制磁盘
dd if=/dev/sda of=/dev/sdb
# tar — 完整备份(排除虚拟文件系统和备份目录自身)
tar --exclude /proc --exclude /mnt --exclude /tmp \
--exclude /backupdata -jcvp -f /backupdata/system.tar.bz2 /
# xfsdump — 完整备份 (level 0)
xfsdump -l 0 -L 'full' -M 'full' -f /backupdata/home.dump /home
# 第一次累积备份 (level 1)
xfsdump -l 1 -L 'full-1' -M 'full-1' -f /backupdata/home.dump1 /home20.4.2 完整备份之差异备份 (Differential backup)
原理:每次备份都与原始完整备份比较,备份所有变更。
周一:完整备份 (level 0)
周二:差异备份 — 与周一的差异(小)
周三:差异备份 — 与周一的差异(较大)
周四:差异备份 — 与周一的差异(更大)
还原:只还原完整备份 + 最近一次差异备份即可。
| 对比 | 累积备份 | 差异备份 |
|---|---|---|
| 备份数据量 | 小 | 随运行时间增长而变大 |
| 备份速度 | 快 | 越来越慢 |
| 还原速度 | 慢(需逐一还原) | 快(只需最后一次) |
tar 的差异备份:
tar -N '2015-09-01' -jpcv -f /backupdata/home.tar.bz2 /home
# 只打包 2015-09-01 之后更新的文件rsync 镜像备份:
rsync -av 来源目录 目标目录
rsync -av /home /backupdata/ # 镜像 /home 到 /backupdata/home
# 第二次执行时仅传输差异部分,速度极快20.4.3 关键数据备份
不备份整个系统,只备份关键配置和数据。适用于对恢复时间不敏感的场景。
优点:备份快、数据量小;系统被攻破 → 重新装最新的 Linux,把数据填回去即可(还能趁机升级和复习系统设置)。
缺点:还原比较麻烦,需要熟悉系统运行;涉及 SELinux 迁移时可能费时。
# 以日期命名备份文件
tar -jpcvf mysql.$(date +%Y-%m-%d).tar.bz2 /var/lib/mysql裸机复原可用台湾 NCHC 的再生龙 (Clonezilla):http://clonezilla.nchc.org.tw/
20.5 鸟哥的备份策略
鸟哥的”鸟站”备份策略(不完整备份,仅关键数据 + 分层频率):
| 频率 | 内容 | 位置 |
|---|---|---|
| 每日 | MySQL 数据库 | /backup/daily/ |
| 每周 | /home, /var, /etc, /boot, /usr/local 等 | /backup/weekly/ |
| 每月 | DVD 烧录 + 远端网络传输 | 光盘 + 远端机器 |
20.5.1 每周系统备份的 script
核心思路:把各服务的配置文件 cp -a 到备份目录,再用 tar 打包大目录。
# 备份的服务配置:named, postfix, vsftpd, sshd, samba, www, others, userinfo
# 关键操作:
cp -a /etc/{passwd,shadow,group} $userinfod
tar -jpc -f $wwwd/mysql.tar.bz2 mysql
tar -jpc -f $others/etc.tar.bz2 etc
tar -jpc -f $userinfod/home.tar.bz2 home脚本下载:http://linux.vbird.org/linux_basic/0580backup/backupwk-0.1.sh
20.5.2 每日备份数据的 script
只备份每天变化的数据(MariaDB 数据库 + CGI 程序),文件名带日期:
basedir=/backup/daily/
basefile1=$basedir/mysql.$(date +%Y-%m-%d).tar.bz2
cd /var/lib && tar -jpc -f $basefile1 mysqlcrontab 自动化:
30 2 * * * root /backup/backupday.sh # 每天 2:30 备份数据库
30 3 * * 0 root /backup/backupwk.sh # 每周日 3:30 备份重要文件20.5.3 远端备援的 script
通过 rsync + ssh 将备份传输到远端主机(加密传输,不需要 FTP):
#!/bin/bash
# /backup/rsync.sh
remotedir=/home/backup/
basedir=/backup/weekly
host=192.168.1.100
id=dmtsai
rsync -av -e ssh $basedir ${id}@${host}:${remotedir}需要远端主机已配置 SSH 免密码登录。rsync 增量传输,没有变更的文件不重传。
20.6 灾难复原的考虑
硬件损毁(有完整备份)
- 替换/修复硬件
- 完整备份还原 → 最后一次差异/累积备份还原
- 完成
软件资安事件(被攻击)
不可直接还原旧系统(会被再次攻击!),应:
- 拔除网络线,将被攻破的系统完整备份到其他媒体(以备查验和自证清白)
- 分析登录文件,找出攻击来源和漏洞
- 安装最新版 Linux distribution
- 升级系统和防火墙
- 修复漏洞,还原服务数据
- 上线并持续测试
⚠️ 若你的主机被利用去攻击他人,保留被入侵的备份数据可以证明你是受害者而非攻击者。
命令速查表
| 命令 | 用途 |
|---|---|
nmcli connection show | 查看网络连线 |
nmcli connection modify eth0 ipv4.method manual ... | 设置 IP |
nmcli connection up eth0 | 启动连线 |
hostnamectl set-hostname NAME | 修改主机名 |
timedatectl set-timezone "Asia/Taipei" | 设置时区 |
timedatectl set-time "2015-09-01 12:02" | 设置时间 |
ntpdate tock.stdtime.gov.tw | 手动网络校时 |
localectl set-locale LANG=en_US.utf8 | 设置系统语系 |
firewall-cmd --permanent --add-rich-rule='...' | 添加防火墙富规则 |
firewall-cmd --reload | 重载防火墙规则 |
dmidecode -t 1 / -t 4 / -t 17 | 查主板/CPU/内存硬件信息 |
lspci / lspci -v | 查看 PCI 设备 |
lsusb / lsusb -t | 查看 USB 设备 |
iostat / iostat -d 2 3 vda | 磁盘 I/O 统计 |
smartctl -a /dev/sda | 查看磁盘健康状态 |
smartctl -t short /dev/sda | 磁盘短自检 |
dd if=/dev/sda of=/dev/sdb | 完整磁盘复制 |
xfsdump -l 0 -f /backup/home.dump /home | XFS 完整备份 |
xfsdump -l 1 -f /backup/home.dump1 /home | XFS 累积备份 |
tar --exclude /proc -jcvp -f /backup/system.tar.bz2 / | 完整系统备份 |
tar -N 'date' -jpcv -f /backup/home.tar.bz2 /home | 差异备份 |
rsync -av /home /backupdata/ | 快速镜像备份 |
rsync -av -e ssh /backup user@host:/backup/ | 远端备援 |