本文档风哥主要介绍RHEL LINUX 10系统重装前数据备份与迁移命令,包括配置文件备份、用户数据备份、系统状态备份等内容,参考Red Hat Enterprise Linux 10官方文档System Administrator’s Guide内容,适合Linux运维人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。更多视频教程www.fgedu.net.cn
参考Red Hat Enterprise Linux 10官方文档中的System administration章节
Part01-基础概念与理论知识
1.1 数据备份与迁移的概念
数据备份是指将系统中的重要数据复制到其他存储介质,以防止数据丢失。数据迁移是指将数据从一个系统转移到另一个系统,通常在系统升级、重装或迁移时进行。在系统重装前,必须进行完整的数据备份,确保重要数据不会丢失。 from LinuxDBA视频:www.itpux.com
- 配置文件:/etc目录下的系统配置文件
- 用户数据:/home目录下的用户文件
- 应用数据:数据库、网站文件、日志等
- 系统状态:已安装软件包列表、服务配置等
- 安全信息:密钥、证书、密码等
1.2 备份类型与策略
根据备份内容和方式,备份可以分为以下类型:
1. 完全备份(Full Backup)
– 备份所有选定的数据
– 恢复速度快
– 占用空间大
2. 增量备份(Incremental Backup)
– 只备份自上次备份以来变化的数据
– 占用空间小
– 恢复速度慢
3. 差异备份(Differential Backup)
– 备份自上次完全备份以来变化的数据
– 介于完全备份和增量备份之间
# 备份策略
1. 3-2-1备份策略
– 至少保留3份数据副本
– 使用2种不同的存储介质
– 至少1份异地备份
2. 备份周期
– 每日增量备份
– 每周差异备份
– 每月完全备份
3. 备份保留策略
– 短期保留:最近7天的备份
– 中期保留:最近4周的备份
– 长期保留:最近12个月的备份
1.3 数据备份的重要性
数据备份对于系统运维至关重要:
- 数据安全:防止因系统故障、人为错误导致的数据丢失
- 快速恢复:在系统出现问题时快速恢复数据
- 合规要求:满足法规和审计要求
- 业务连续性:确保业务持续运行
- 历史追溯:保留历史数据用于审计和分析
Part02-生产环境规划与建议
2.1 备份规划策略
在系统重装前,需要制定详细的备份规划:
1. 数据盘点
– 列出所有需要备份的数据
– 确定数据的重要性和优先级
– 评估数据量和备份时间
2. 备份介质选择
– 本地磁盘:速度快,风险高
– 网络存储:安全性高,速度中等
– 云存储:异地备份,成本考虑
3. 备份时间安排
– 选择业务低峰期
– 预留足够的备份时间
– 考虑备份验证时间
4. 备份验证
– 验证备份文件完整性
– 测试备份数据可恢复性
– 记录备份信息
# 备份前准备工作
1. 确认备份存储空间充足
2. 准备备份介质和工具
3. 通知相关人员
4. 记录当前系统状态
2.2 备份工具选择
RHEL LINUX 10提供了多种备份工具: 学习交流加群风哥微信: itpux-com
# rpm -qa | grep -E “tar|rsync|cpio”
tar-1.34-2.el10.x86_64
rsync-3.2.3-12.el10.x86_64
cpio-2.13-12.el10.x86_64
# 安装备份工具
# dnf install -y rsync tar cpio
Package rsync-3.2.3-12.el10.x86_64 is already installed.
Package tar-1.34-2.el10.x86_64 is already installed.
Package cpio-2.13-12.el10.x86_64 is already installed.
# 常用备份工具对比
工具 | 优点 | 缺点
———–|——————————|——————
tar | 简单易用,支持压缩 | 不支持增量备份
rsync | 增量备份,远程同步 | 需要网络连接
cpio | 支持特殊文件 | 命令复杂
dd | 磁盘级备份 | 备份文件大
2.3 备份验证方法
备份完成后,必须验证备份数据的完整性:
1. 文件完整性验证
– 使用md5sum/sha256sum校验
– 比较文件数量和大小
– 检查备份文件权限
2. 内容验证
– 抽查部分文件内容
– 验证关键配置文件
– 检查数据库备份文件
3. 恢复测试
– 在测试环境恢复备份
– 验证恢复数据的可用性
– 记录恢复时间
# 备份验证命令示例
# 生成校验文件
md5sum backup.tar.gz > backup.tar.gz.md5
# 验证校验文件
md5sum -c backup.tar.gz.md5
backup.tar.gz: OK
# 查看备份文件内容
tar -tzf backup.tar.gz | head -20
# 统计备份文件数量
tar -tzf backup.tar.gz | wc -l
12345
Part03-生产环境项目实施方案
3.1 配置文件备份
备份系统配置文件,确保重装后可以快速恢复配置:
# mkdir -p /backup/pre-reinstall-$(date +%Y%m%d)
# BACKUP_DIR=”/backup/pre-reinstall-$(date +%Y%m%d)”
# 备份/etc目录(系统配置文件)
# tar -czf $BACKUP_DIR/etc-backup.tar.gz /etc/
tar: Removing leading `/’ from member names
# 查看备份文件
# ls -lh $BACKUP_DIR/etc-backup.tar.gz
-rw-r–r– 1 root root 12M Apr 2 14:00 /backup/pre-reinstall-20260402/etc-backup.tar.gz
# 备份已安装软件包列表
# rpm -qa > $BACKUP_DIR/installed-packages.txt
# 查看已安装软件包数量
# wc -l $BACKUP_DIR/installed-packages.txt
1234 /backup/pre-reinstall-20260402/installed-packages.txt
# 备份服务状态
# systemctl list-unit-files –type=service > $BACKUP_DIR/service-status.txt
# 备份已启用服务列表
# systemctl list-unit-files –type=service –state=enabled > $BACKUP_DIR/enabled-services.txt
# 备份防火墙规则
# firewall-cmd –list-all > $BACKUP_DIR/firewall-rules.txt
# 备份SELinux配置
# getenforce > $BACKUP_DIR/selinux-status.txt
# 备份用户和组信息
# cat /etc/passwd > $BACKUP_DIR/passwd.txt
# cat /etc/shadow > $BACKUP_DIR/shadow.txt
# cat /etc/group > $BACKUP_DIR/group.txt
# 备份SSH密钥
# tar -czf $BACKUP_DIR/ssh-keys.tar.gz /root/.ssh/ /home/*/.ssh/
tar: Removing leading `/’ from member names
3.2 用户数据备份
备份用户数据和重要应用数据:
# tar -czf $BACKUP_DIR/home-backup.tar.gz /home/
tar: Removing leading `/’ from member names
# 查看备份文件大小
# ls -lh $BACKUP_DIR/home-backup.tar.gz
-rw-r–r– 1 root root 5.0G Apr 2 14:30 /backup/pre-reinstall-20260402/home-backup.tar.gz
# 备份/root目录
# tar -czf $BACKUP_DIR/root-backup.tar.gz /root/
tar: Removing leading `/’ from member names
# 备份数据库(以MySQL为例)
# mysqldump -u root -p –all-databases > $BACKUP_DIR/mysql-all-databases.sql
Enter password:
# 备份指定数据库
# mysqldump -u root -p fgedudb > $BACKUP_DIR/fgedudb.sql
Enter password:
# 备份Web服务器数据
# tar -czf $BACKUP_DIR/www-backup.tar.gz /var/www/html/
# 备份日志文件
# tar -czf $BACKUP_DIR/logs-backup.tar.gz /var/log/
# 使用rsync同步数据到远程服务器
# rsync -avz –progress /backup/pre-reinstall-20260402/ root@backup-server:/backup/rhel10-server/
sending incremental file list
./
etc-backup.tar.gz
12,345,678 100% 10.00MB/s 0:00:01 (xfr#1, to-chk=18/20)
home-backup.tar.gz
5,368,709,120 100% 50.00MB/s 0:01:43 (xfr#2, to-chk=17/20)
sent 5,504,678,912 bytes received 1,234 bytes 3,200,000.00 bytes/sec
total size is 5,504,678,912 speedup is 1.00
3.3 系统状态备份
备份系统状态信息,便于重装后快速恢复:
# fdisk -l > $BACKUP_DIR/disk-partitions.txt
# lsblk > $BACKUP_DIR/disk-lsblk.txt
# 备份LVM配置
# vgdisplay > $BACKUP_DIR/lvm-vgdisplay.txt
# lvdisplay > $BACKUP_DIR/lvm-lvdisplay.txt
# pvdisplay > $BACKUP_DIR/lvm-pvdisplay.txt
# 备份文件系统挂载信息
# cat /etc/fstab > $BACKUP_DIR/fstab.txt
# mount > $BACKUP_DIR/mount-info.txt
# df -h > $BACKUP_DIR/disk-usage.txt
# 备份网络配置
# ip addr show > $BACKUP_DIR/network-interfaces.txt
# ip route show > $BACKUP_DIR/network-routes.txt
# cat /etc/resolv.conf > $BACKUP_DIR/resolv.conf.txt
# cat /etc/hosts > $BACKUP_DIR/hosts.txt
# 备份内核模块信息
# lsmod > $BACKUP_DIR/kernel-modules.txt
# 备份内核参数
# sysctl -a > $BACKUP_DIR/kernel-params.txt
# 生成备份清单
# cd $BACKUP_DIR
# find . -type f -exec md5sum {} \; > md5sums.txt
# 生成备份报告
# cat > $BACKUP_DIR/backup-report.txt << EOF
备份报告
========
备份时间: $(date)
备份目录: $BACKUP_DIR
备份主机: $(hostname)
系统版本: $(cat /etc/redhat-release)
内核版本: $(uname -r)
备份文件列表:
$(ls -lh $BACKUP_DIR)
备份总大小:
$(du -sh $BACKUP_DIR)
EOF
# 查看备份报告
# cat $BACKUP_DIR/backup-report.txt
备份报告
========
备份时间: Fri Apr 2 14:30:00 CST 2026
备份目录: /backup/pre-reinstall-20260402
备份主机: rhel10-server
系统版本: Red Hat Enterprise Linux release 10.0 (Plow)
内核版本: 5.14.0-123.el10.x86_64
备份文件列表:
total 5.5G
-rw-r--r-- 1 root root 12M Apr 2 14:00 etc-backup.tar.gz
-rw-r--r-- 1 root root 5.0G Apr 2 14:30 home-backup.tar.gz
-rw-r--r-- 1 root root 256M Apr 2 14:15 root-backup.tar.gz
-rw-r--r-- 1 root root 64M Apr 2 14:20 www-backup.tar.gz
-rw-r--r-- 1 root root 128M Apr 2 14:25 logs-backup.tar.gz
-rw-r--r-- 1 root root 12K Apr 2 14:30 installed-packages.txt
-rw-r--r-- 1 root root 4.0K Apr 2 14:30 service-status.txt
-rw-r--r-- 1 root root 2.0K Apr 2 14:30 firewall-rules.txt
备份总大小:
5.5G /backup/pre-reinstall-20260402
Part04-生产案例与实战讲解
4.1 完整系统备份案例
案例:对生产服务器进行完整备份,准备系统重装。
# cat > /fgedu/shell/full-backup.sh << 'EOF' #!/bin/bash # from:www.itpux.com.qq113257174.wx:itpux-com BACKUP_DIR="/backup/full-backup-$(date +%Y%m%d-%H%M%S)" LOG_FILE="/var/log/backup-$(date +%Y%m%d).log" echo "========================================" | tee -a $LOG_FILE echo "开始完整系统备份" | tee -a $LOG_FILE echo "时间: $(date)" | tee -a $LOG_FILE echo "========================================" | tee -a $LOG_FILE mkdir -p $BACKUP_DIR echo "[1/10] 备份系统配置文件..." | tee -a $LOG_FILE tar -czf $BACKUP_DIR/etc-backup.tar.gz /etc/ 2>&1 | tee -a $LOG_FILE
echo “[2/10] 备份用户数据…” | tee -a $LOG_FILE
tar -czf $BACKUP_DIR/home-backup.tar.gz /home/ 2>&1 | tee -a $LOG_FILE
echo “[3/10] 备份root目录…” | tee -a $LOG_FILE
tar -czf $BACKUP_DIR/root-backup.tar.gz /root/ 2>&1 | tee -a $LOG_FILE
echo “[4/10] 备份已安装软件包列表…” | tee -a $LOG_FILE
rpm -qa > $BACKUP_DIR/installed-packages.txt 2>&1 | tee -a $LOG_FILE
echo “[5/10] 备份服务配置…” | tee -a $LOG_FILE
systemctl list-unit-files –type=service > $BACKUP_DIR/service-status.txt 2>&1 | tee -a $LOG_FILE
echo “[6/10] 备份网络配置…” | tee -a $LOG_FILE
ip addr show > $BACKUP_DIR/network-interfaces.txt 2>&1 | tee -a $LOG_FILE
ip route show > $BACKUP_DIR/network-routes.txt 2>&1 | tee -a $LOG_FILE
echo “[7/10] 备份磁盘信息…” | tee -a $LOG_FILE
fdisk -l > $BACKUP_DIR/disk-partitions.txt 2>&1 | tee -a $LOG_FILE
df -h > $BACKUP_DIR/disk-usage.txt 2>&1 | tee -a $LOG_FILE
echo “[8/10] 备份数据库…” | tee -a $LOG_FILE
mysqldump -u root -p –all-databases > $BACKUP_DIR/mysql-all-databases.sql 2>&1 | tee -a $LOG_FILE
echo “[9/10] 生成校验文件…” | tee -a $LOG_FILE
cd $BACKUP_DIR
find . -type f -exec md5sum {} \; > md5sums.txt 2>&1 | tee -a $LOG_FILE
echo “[10/10] 生成备份报告…” | tee -a $LOG_FILE
cat > $BACKUP_DIR/backup-report.txt << REPORT
完整备份报告
============
备份时间: $(date)
备份目录: $BACKUP_DIR
备份主机: $(hostname)
系统版本: $(cat /etc/redhat-release)
内核版本: $(uname -r)
备份文件列表:
$(ls -lh $BACKUP_DIR)
备份总大小:
$(du -sh $BACKUP_DIR)
REPORT
echo "========================================" | tee -a $LOG_FILE
echo "备份完成!" | tee -a $LOG_FILE
echo "备份位置: $BACKUP_DIR" | tee -a $LOG_FILE
echo "备份大小: $(du -sh $BACKUP_DIR | awk '{print $1}')" | tee -a $LOG_FILE
echo "========================================" | tee -a $LOG_FILE
EOF
# 执行备份脚本
# chmod +x /fgedu/shell/full-backup.sh
# /fgedu/shell/full-backup.sh
========================================
开始完整系统备份
时间: Fri Apr 2 14:00:00 CST 2026
========================================
[1/10] 备份系统配置文件...
[2/10] 备份用户数据...
[3/10] 备份root目录...
[4/10] 备份已安装软件包列表...
[5/10] 备份服务配置...
[6/10] 备份网络配置...
[7/10] 备份磁盘信息...
[8/10] 备份数据库...
[9/10] 生成校验文件...
[10/10] 生成备份报告...
========================================
备份完成!
备份位置: /backup/full-backup-20260402-140000
备份大小: 5.5G
========================================
4.2 数据迁移案例
案例:将数据迁移到新服务器。
# tar -czf /tmp/migration-data.tar.gz /backup/full-backup-20260402-140000/
# 使用scp传输到目标服务器
# scp /tmp/migration-data.tar.gz root@new-server:/tmp/
migration-data.tar.gz 100% 5504MB 50.0MB/s 01:50
# 在目标服务器上解压迁移数据
# ssh root@new-server
# cd /tmp
# tar -xzf migration-data.tar.gz
# 恢复配置文件
# cd /backup/full-backup-20260402-140000/
# tar -xzf etc-backup.tar.gz -C /restore/
# 恢复用户数据
# tar -xzf home-backup.tar.gz -C /restore/
# 恢复数据库
# mysql -u root -p < mysql-all-databases.sql
Enter password:
# 使用rsync进行增量迁移
# rsync -avz --delete /backup/full-backup-20260402-140000/ root@new-server:/backup/migration/
sending incremental file list
./
etc-backup.tar.gz
12,345,678 100% 10.00MB/s 0:00:01 (xfr#1, to-chk=18/20)
home-backup.tar.gz
5,368,709,120 100% 50.00MB/s 0:01:43 (xfr#2, to-chk=17/20)
sent 5,504,678,912 bytes received 1,234 bytes 3,200,000.00 bytes/sec
total size is 5,504,678,912 speedup is 1.00
4.3 备份恢复验证案例
案例:验证备份数据的完整性和可恢复性。
# cd /backup/full-backup-20260402-140000/
# md5sum -c md5sums.txt
./etc-backup.tar.gz: OK
./home-backup.tar.gz: OK
./root-backup.tar.gz: OK
./installed-packages.txt: OK
./service-status.txt: OK
# 查看备份文件内容
# tar -tzf etc-backup.tar.gz | head -20
etc/
etc/fstab
etc/crypttab
etc/mtab
etc/resolv.conf
etc/hostname
etc/hosts
etc/localtime
etc/machine-id
etc/os-release
etc/redhat-release
etc/adjtime
etc/shells
etc/profile
etc/bashrc
# 测试恢复单个文件
# mkdir -p /tmp/restore-test
# tar -xzf etc-backup.tar.gz -C /tmp/restore-test etc/passwd
# cat /tmp/restore-test/etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
# 验证数据库备份
# head -50 mysql-all-databases.sql
— MySQL dump 10.13 Distrib 8.0.32, for Linux (x86_64)
—
— Host: localhost Database:
— ——————————————————
— Server version 8.0.32
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE=’+00:00′ */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=’NO_AUTO_VALUE_ON_ZERO’ */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
— Current Database: `fgedudb`
—
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `fgedudb` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
USE `fgedudb`;
# 统计备份文件数量
# tar -tzf home-backup.tar.gz | wc -l
123456
# 检查备份文件权限
# ls -la
total 5504680
drwxr-xr-x 2 root root 4096 Apr 2 14:30 .
drwxr-xr-x 3 root root 4096 Apr 2 14:00 ..
-rw-r–r– 1 root root 12582912 Apr 2 14:00 etc-backup.tar.gz
-rw-r–r– 1 root root 5368709120 Apr 2 14:30 home-backup.tar.gz
-rw-r–r– 1 root root 268435456 Apr 2 14:15 root-backup.tar.gz
-rw-r–r– 1 root root 1234 Apr 2 14:30 installed-packages.txt
-rw-r–r– 1 root root 456 Apr 2 14:30 service-status.txt
-rw-r–r– 1 root root 789 Apr 2 14:30 md5sums.txt
Part05-风哥经验总结与分享
5.1 备份迁移最佳实践
基于多年运维经验,总结备份迁移的最佳实践: 更多学习教程公众号风哥教程itpux_com
1. 备份前准备
– 制定详细的备份计划
– 确认备份存储空间充足
– 通知相关人员
– 记录系统当前状态
2. 备份执行
– 按优先级备份数据
– 使用压缩节省空间
– 生成校验文件
– 记录备份日志
3. 备份验证
– 验证文件完整性
– 测试恢复流程
– 检查数据可用性
– 记录验证结果
4. 备份存储
– 多地存储备份
– 定期检查备份状态
– 保留多个版本
– 加密敏感数据
5. 恢复测试
– 定期进行恢复演练
– 记录恢复时间
– 优化恢复流程
– 更新恢复文档
# 常用备份命令组合
# 快速备份关键数据
tar -czf backup-$(date +%Y%m%d).tar.gz /etc /home /root /var/www
# 使用rsync增量备份
rsync -avz –delete /data/ backup-server:/backup/data/
# 远程备份
ssh root@source-server “tar -czf – /data” | tar -xzf – -C /restore/
5.2 备份前检查清单
提供一份完整的备份前检查清单: 学习交流加群风哥QQ113257174
□ 1. 确认备份范围
– 系统配置文件
– 用户数据
– 应用数据
– 数据库
□ 2. 确认存储空间
df -h /backup
□ 3. 确认备份工具
rpm -qa | grep -E “tar|rsync”
□ 4. 停止关键服务
systemctl stop httpd mariadb
□ 5. 备份配置文件
tar -czf etc-backup.tar.gz /etc
□ 6. 备份用户数据
tar -czf home-backup.tar.gz /home
□ 7. 备份数据库
mysqldump –all-databases > db-backup.sql
□ 8. 备份应用数据
tar -czf app-backup.tar.gz /var/www
□ 9. 生成校验文件
md5sum *.tar.gz > md5sums.txt
□ 10. 验证备份完整性
md5sum -c md5sums.txt
□ 11. 记录备份信息
创建备份报告
□ 12. 传输到备份服务器
rsync -avz /backup/ backup-server:/backup/
□ 13. 验证远程备份
ssh backup-server “ls -lh /backup/”
□ 14. 启动关键服务
systemctl start mariadb httpd
□ 15. 记录备份完成时间
记录到备份日志
5.3 备份工具推荐
推荐以下备份工具:
1. tar
– 系统自带,简单易用
– 支持压缩和归档
– 适合文件级备份
2. rsync
– 增量备份,节省空间
– 支持远程同步
– 适合大规模数据
3. dd
– 磁盘级备份
– 完整克隆磁盘
– 适合系统迁移
4. Bacula
– 企业级备份解决方案
– 支持网络备份
– 功能全面
5. Amanda
– 开源备份系统
– 支持多种介质
– 适合大型环境
# 安装Bacula示例
# dnf install -y bacula-server bacula-client
# 安装Amanda示例
# dnf install -y amanda-server amanda-client
# 使用dd备份磁盘
# dd if=/dev/sda of=/backup/disk-image.img bs=4M status=progress
2621440000 bytes (2.6 GB) copied, 60.000 s, 43.7 MB/s
# 使用dd恢复磁盘
# dd if=/backup/disk-image.img of=/dev/sda bs=4M status=progress
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
