Debian 分区迁移方法
一、适用场景与总体思路
- 典型场景包括:同机更换更大或更小的硬盘、把系统盘从 HDD 迁到 SSD、调整分区大小与布局、跨机器迁移系统分区。
- 常用思路有三种:
- 整盘克隆:用 dd 或 Clonezilla 把旧盘完整复制到新盘,再扩容或修复引导。优点是简单稳妥;注意新盘容量更大时,克隆后需扩展分区/文件系统。
- 分区级复制:用 GParted 复制分区或用 rsync 逐文件同步,再安装 GRUB 并修复 /etc/fstab 的 UUID。优点是灵活,可重排分区结构。
- 重装 + 包/数据迁移:在新盘全新安装,再用包列表与数据拷贝恢复环境,适合跨平台或系统较混乱时。
二、方法一 整盘克隆(dd 或 Clonezilla)
- 步骤
- 备份重要数据;准备可启动 Live USB(如 Debian 安装盘)。
- 连接新旧两块盘,在 Live 环境中确认设备名(如 /dev/sda、/dev/sdb),避免误操作。
- 整盘克隆(会复制分区表与 UUID):
- dd:dd if=/dev/sda of=/dev/sdb bs=4M status=progress conv=fsync
- Clonezilla:选择 device-device 直连克隆。
- 若新盘更大:用 GParted 扩展分区与文件系统到新盘末尾。
- 若新盘更小:需先在原盘缩小分区/文件系统到小于新盘,再克隆。
- 修复引导(以目标盘为 /dev/sda 为例):
- mount /dev/sdaX /mnt
- mount --bind /dev /mnt/dev; mount --bind /proc /mnt/proc; cp /etc/resolv.conf /mnt/etc/resolv.conf
- chroot /mnt
- grub-install /dev/sda && update-grub
- exit && umount -R /mnt
- 重启验证。
- 注意
- 克隆会复制 UUID,若两块盘同时接入系统,可能导致 /etc/fstab 挂载错分区;必要时改为按 LABEL/UUID 明确指定,或在 chroot 后更新 /etc/fstab。
- 目标盘容量变化后,务必扩展分区/文件系统,否则只能用到旧盘大小。
三、方法二 分区级复制(GParted 或 rsync)
- 步骤
- 在 Live 环境中用 GParted 在新盘创建分区(如 /dev/sda1 为 ext4 根分区,必要时再建 /boot/efi 的 FAT32 分区)。
- 复制文件(保持权限与属性):
- rsync:rsync -aAX --info=progress2 /mnt/oldroot/ /mnt/newroot/
- 或按分区用 dd(仅限同文件系统类型与大小相近):dd if=/dev/sdb5 of=/dev/sda1 bs=4M status=progress
- 若复制了根分区,建议重建 initramfs(chroot 后执行:update-initramfs -u -k all)。
- 安装引导(以目标盘为 /dev/sda、根分区 /dev/sda1 为例):
- mount /dev/sda1 /mnt
- mount --bind /dev /mnt/dev; mount --bind /proc /mnt/proc; cp /etc/resolv.conf /mnt/etc/resolv.conf
- chroot /mnt
- 若是 UEFI:mount /dev/sdaX /boot/efi(X 为 EFI 分区号),然后 grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian
- 若是 BIOS:grub-install /dev/sda
- update-grub
- exit && umount -R /mnt
- 更新 /etc/fstab:用 blkid 查看新分区 UUID,替换 fstab 中的旧值(推荐用 UUID 而非设备名)。
- 重启验证。
- 说明
- rsync 更灵活,可跨大小盘迁移;GParted 复制分区后可图形化调整大小。
- 若仅迁移系统分区而保留原 /home 等数据分区,可在 fstab 中继续挂载旧盘分区。
四、方法三 重装 + 包与数据迁移(最稳、最干净)
- 步骤
- 在新盘全新安装 Debian(合理规划 /、/home、/boot/efi、swap)。
- 迁移已安装软件包列表:
- 旧机:dpkg --get-selections > packagelist.txt
- 新机:dpkg --set-selections < packagelist.txt && apt-get dselect-upgrade
- 拷贝用户与配置数据:
- rsync -aAX --info=progress2 /home/ /mnt/newhome/
- 视需要同步 /etc、/opt、/var 等业务数据。
- 按需调整新机 /etc/fstab 挂载点(含旧盘数据分区)。
- 重启验证。
- 适用
- 跨平台迁移、系统长期运行后结构混乱、或希望顺带“净化”系统时。
五、关键注意事项与常见问题
- 启动模式匹配:BIOS+MBR 与 UEFI+GPT 需对应;UEFI 必须准备 FAT32 的 EFI 分区(常见大小 512MB),并在 chroot 中指定 --efi-directory。
- 标识与挂载:优先用 UUID 配置 /etc/fstab;整盘克隆后若两盘共存,UUID 冲突会导致挂载错分区。
- 容量变化:新盘更大需扩展分区/文件系统;新盘更小需先收缩再克隆。
- 引导修复:迁移后务必在目标盘上重新安装 GRUB 并更新配置(update-grub),必要时重建 initramfs。
- 数据安全:分区与克隆操作有数据丢失风险,务必先做完整备份,并在关键步骤前再次确认设备名与分区布局。