温馨提示×

centos镜像如何进行数据迁移与备份

小樊
36
2025-11-22 03:13:28
栏目: 智能运维

CentOS 镜像的数据迁移与备份实用指南

一、场景与总体策略

  • 明确目标:是做整机镜像级迁移/恢复,还是目录/文件级迁移/备份,抑或**特定服务(如 Docker、数据库)**的迁移。
  • 选择工具:
    • 文件系统级:tar、rsync(灵活、可增量、易验证)。
    • 磁盘/分区级:dd、Clonezilla(整盘克隆、适合同硬件或近似硬件恢复)。
    • 服务级:按服务工具链迁移(如 Docker 镜像/卷、PostgreSQL 逻辑备份)。
  • 关键原则:迁移前停止相关服务确保一致性;迁移后校验完整性并做演练恢复;全程注意权限、SELinux 上下文、磁盘空间目标硬件差异

二、常用备份与迁移方法速览

方法 适用场景 核心命令示例 优点 注意点
tar 全系统/目录备份 快速整机快照、迁移到不同硬件 备份:tar -czvf backup.tgz --exclude={"/proc","/sys","/dev","/tmp","/run","/mnt","/media"} /;恢复:tar xvpfz backup.tgz -C / 保留权限/属性,易携带 恢复前排除挂载点;恢复后重建被排除目录并运行 restorecon -Rv / 修复 SELinux 上下文
rsync 增量备份/迁移 目录/系统迁移、日常增量 首次:rsync -av --delete /src/ /dst/;后续:rsync -av --delete --link-dest=/dst/prev /src/ /dst/current 增量高效、可远程、易验证 注意尾随斜杠语义;远程用 -e ssh;目标权限/属主一致
dd 磁盘镜像 整盘克隆、同硬件恢复 备份:dd if=/dev/sda of=backup.img bs=4M;恢复:dd if=backup.img of=/dev/sda bs=4M 字节级一致、简单直接 目标盘容量需≥源盘;极易误写,务必核对设备名
Clonezilla 离线整盘 机房/离线批量迁移 用 Clonezilla Live 启动,选 device-image → local_dev → 保存/恢复镜像 向导化、适合批量 需可启动介质与目标存储;镜像校验很重要
Docker 镜像/卷迁移 容器平台迁移 镜像:docker save -o imgs.tar $(docker images -q);加载:docker load -i imgs.tar;卷:先停容器,docker cp 或卷备份/恢复 不依赖底层存储布局 注意存储驱动与数据卷路径;迁移后验证容器启动与挂载

三、关键场景操作要点

  • 文件系统级整机迁移(tar)
    • 备份:在单用户或救援环境执行,避免写入干扰;排除 /proc、/sys、/dev、/tmp、/run、/mnt、/media 等虚拟或外接文件系统;示例:tar -czvf /backup/system_$(date +%F).tgz --exclude={"/proc","/sys","/dev","/tmp","/run","/mnt","/media"} /
    • 恢复:先准备分区与引导(可按需 chroot),执行:tar xvpfz /backup/system_*.tgz -C /;重建被排除目录:mkdir -p /proc /sys /dev /tmp /run /mnt /media;修复 SELinux:restorecon -Rv /;重启验证。
  • 目录/系统增量迁移(rsync)
    • 首次全量:rsync -aAX --info=progress2 --delete /src/ /dst/(加 -A 保留 ACL,-X 保留扩展属性);远程:rsync -aAX --delete -e ssh /src/ user@dst:/dst/
    • 后续增量:用 –link-dest 做快照式增量(硬链节省空间),或定时全量+保留 N 天历史。
  • 整盘镜像迁移(dd/Clonezilla)
    • dd:确认设备名(如 /dev/sda),建议 bs=4M 提升速度;恢复时目标盘容量需≥源盘;操作前先快照/备份关键数据,避免误写。
    • Clonezilla:制作 U 盘启动 → 选择 device-image → 选 local_dev 读写外部盘/网络共享 → 保存或恢复镜像;适合批量与离线环境。
  • Docker 数据迁移
    • 镜像导出/导入:docker save -o imgs.tar $(docker images -q)docker load -i imgs.tar
    • 容器与卷:先停容器;对绑定挂载目录用 docker cp 或备份卷目录;对 named volume 可直接 docker run --volumes-from 或卷插件备份;迁移后核对 docker info 与挂载路径。

四、迁移后的验证与常见注意事项

  • 完整性校验
    • 镜像/归档:sha256sum backup.imgtar -tzvf backup.tgz | head;数据库可用 pg_dump 校验导出是否成功。
    • 业务自检:关键服务启停、登录、页面/接口、数据抽样比对。
  • 配置与上下文
    • /etc/fstab、/boot/grub2/grub.cfg、网络配置 需与目标环境一致或按需调整;跨硬件/虚拟化迁移时检查 UUID、LVM、分区表
    • SELinux:文件系统恢复后执行 restorecon -Rv /,避免权限/标签异常导致无法登录或启动失败。
  • 安全与变更控制
    • 变更窗口与回滚方案;备份与恢复步骤文档化;对生产环境先在测试环境演练。

五、自动化与定期备份示例脚本

  • rsync 增量备份脚本(保留 7 天)
#!/usr/bin/env bash
SRC="/"
DST="/backup/rsync/$(date +%F)"
PREV="/backup/rsync/prev"
KEEP=7

mkdir -p "$DST"
rsync -aAX --info=progress2 --delete --link-dest="$PREV" "$SRC" "$DST"

# 快照轮换
rm -rf "$PREV"
ln -s "$DST" "$PREV"

# 清理旧备份
find /backup/rsync -maxdepth 1 -type d -mtime +$KEEP -delete
  • 定时任务(每天 2 点)
sudo crontab -e
# 0 2 * * * /usr/local/bin/backup_rsync.sh >> /var/log/backup_rsync.log 2>&1
  • 建议同时保留一份离线/异地副本(如外接盘或对象存储),并定期做恢复演练

0