CentOS 镜像的数据迁移与备份实用指南
一、场景与总体策略
二、常用备份与迁移方法速览
| 方法 | 适用场景 | 核心命令示例 | 优点 | 注意点 |
|---|---|---|---|---|
| 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 -czvf /backup/system_$(date +%F).tgz --exclude={"/proc","/sys","/dev","/tmp","/run","/mnt","/media"} /。tar xvpfz /backup/system_*.tgz -C /;重建被排除目录:mkdir -p /proc /sys /dev /tmp /run /mnt /media;修复 SELinux:restorecon -Rv /;重启验证。rsync -aAX --info=progress2 --delete /src/ /dst/(加 -A 保留 ACL,-X 保留扩展属性);远程:rsync -aAX --delete -e ssh /src/ user@dst:/dst/。bs=4M 提升速度;恢复时目标盘容量需≥源盘;操作前先快照/备份关键数据,避免误写。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.img 或 tar -tzvf backup.tgz | head;数据库可用 pg_dump 校验导出是否成功。restorecon -Rv /,避免权限/标签异常导致无法登录或启动失败。五、自动化与定期备份示例脚本
#!/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
sudo crontab -e
# 0 2 * * * /usr/local/bin/backup_rsync.sh >> /var/log/backup_rsync.log 2>&1