Linux分区迁移的常见场景与操作指南
Linux分区迁移是指将系统或数据分区从一块硬盘(源盘)移动到另一块硬盘(目标盘),或调整分区在原硬盘上的物理位置的过程,常用于硬盘升级、空间扩展或系统迁移。以下是具体操作方法与注意事项:
rsync、tar或外部存储设备备份源分区中的所有关键数据(如/home、/etc等)。lsblk或fdisk -l命令识别设备名称(如/dev/sdb)。fdisk -l查看源分区(如/dev/sda1、/dev/sda2)的大小、文件系统类型(如ext4、xfs)及挂载点,为目标分区规划相同的布局。dd命令完整克隆分区dd是低级数据复制工具,可逐比特克隆分区(包括分区表、文件系统和数据),适合完整迁移。
操作步骤:
/dev/sda1)和目标分区(如/dev/sdb1)的大小一致(目标分区需≥源分区);bs参数控制块大小,提升速度):sudo dd if=/dev/sda1 of=/dev/sdb1 bs=4M status=progress
status=progress会显示进度),克隆后目标分区将拥有与源分区完全一致的UUID和数据。注意:dd会复制所有数据,包括空闲空间,若目标分区更大,需后续用resize2fs(ext4)或xfs_growfs(xfs)扩展文件系统。
partclone克隆特定分区partclone是针对文件系统的高效克隆工具,仅复制已用数据,节省时间和空间,支持ext2/3/4、btrfs、reiserfs等文件系统。
操作步骤:
partclone(如Ubuntu/Debian用sudo apt install partclone-ext4);sudo partclone.ext4 -c -s /dev/sda1 -d /dev/sdb1
-c表示克隆,-s指定源分区,-d指定目标分区。注意:克隆前需确保目标分区未被挂载,且大小≥源分区已用空间。
rsync同步数据(适用于迁移至现有分区)若目标分区已存在(如新硬盘已格式化),可使用rsync同步源分区数据到目标分区,保留文件权限、属性和时间戳。
操作步骤:
/dev/sda1到/mnt/source)和目标分区(如/dev/sdb1到/mnt/target):sudo mkdir /mnt/source /mnt/target
sudo mount /dev/sda1 /mnt/source
sudo mount /dev/sdb1 /mnt/target
-a表示归档模式,-v显示详细信息,--progress显示进度):sudo rsync -av --progress /mnt/source/ /mnt/target/
sudo umount /mnt/source /mnt/target
/etc/fstab文件,将原源分区的UUID替换为目标分区的UUID(通过sudo blkid查看)。更新UUID(若分区UUID变化):
迁移后,目标分区的UUID可能与源分区不同(尤其是使用dd克隆时)。需用blkid查看目标分区UUID,编辑/etc/fstab文件,将原UUID替换为新UUID,确保系统启动时正确挂载分区。
重新安装GRUB引导加载器(若更换启动盘):
若将系统迁移到新硬盘并作为启动盘,需重新安装GRUB以识别新分区。假设新硬盘为/dev/sdb,执行以下命令:
sudo mount /dev/sdb1 /mnt # 挂载根分区
sudo mount /dev/sdb2 /mnt/boot # 挂载boot分区(若有)
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt
sudo grub-install /dev/sdb # 安装GRUB到新硬盘
sudo update-grub # 更新GRUB配置
exit
sudo umount -R /mnt # 卸载所有挂载点
此操作会确保系统从新硬盘启动。
验证数据完整性:
使用cmp命令比较源分区与目标分区的文件,确保数据一致(如sudo cmp -b /dev/sda1 /dev/sdb1)。若无输出,说明数据完全一致。
/tmp、/var/log),或使用partclone/rsync(仅复制已用数据)减少空间占用;若目标硬盘容量更大,可扩展目标分区及文件系统。/etc/fstab中的UUID是否正确,重新安装GRUB(步骤见上文),并进入BIOS设置确保从新硬盘启动。md5sum/sha256sum校验关键文件(如/etc/passwd)的完整性。通过以上步骤,可实现Linux分区的安全迁移。操作前务必确认备份到位,并根据实际场景选择合适的工具(如完整克隆用dd,高效克隆用partclone,增量同步用rsync)。