tar命令打包核心目录(如/home、/etc、/var),排除缓存文件(如--exclude={'/home/*/.cache','/tmp/*'}),避免操作失误导致数据丢失。lsblk查看原分区的挂载点(如/、/home)、文件系统类型(如ext4、btrfs)、UUID(用sudo blkid获取),便于后续匹配目标分区。GParted(图形化)或fdisk(命令行)创建与原分区大小一致或更大的分区,格式化为相同文件系统(如ext4)。lsblk确认设备名(如/dev/sdb1)。rsync(推荐:文件级同步,保留属性):
适用于同系统版本迁移(如Ubuntu 22.04→22.04),保留文件权限、时间戳和符号链接,效率高且安全。
步骤:
(1)从Ubuntu Live USB启动(选择“Try Ubuntu”),打开终端;
(2)挂载原分区(如/dev/sda1)到/mnt/old,目标分区(如/dev/sdb1)到/mnt/new;
(3)执行同步命令(排除虚拟文件系统):sudo rsync -avz --exclude={'/dev/*','/proc/*','/sys/*','/run/*','/tmp/*'} /mnt/old/ /mnt/new/;
(4)同步完成后卸载分区:sudo umount /mnt/old /mnt/new。
partclone(高效:仅复制已用数据):
适用于快速克隆分区(比dd节省时间/空间),支持ext2/3/4、btrfs等文件系统。
步骤:
(1)安装工具:sudo apt install partclone;
(2)执行克隆(以ext4为例):sudo partclone.ext4 -c -s /dev/sda1 -d /dev/sdb1(-c表示克隆,-s为源分区,-d为目标分区);
(3)后续步骤与rsync一致(修改UUID、更新fstab)。
更新UUID与fstab:
dd或partclone会复制原分区的UUID,需修改目标分区UUID以避免冲突。
步骤:
(1)获取新分区UUID:sudo blkid /dev/sdb1;
(2)挂载目标根分区:sudo mount /dev/sdb1 /mnt;
(3)编辑/etc/fstab(位于/mnt/etc/fstab),将旧UUID替换为新UUID(示例:UUID=新UUID / ext4 errors=remount-ro 0 1);
(4)保存并退出(Ctrl+X→Y→Enter)。
修复GRUB引导:
若更换硬盘或系统无法启动,需重新安装GRUB。
步骤:
(1)从Live USB启动,挂载目标根分区(/dev/sdb1)和/boot/efi分区(若有);
(2)挂载虚拟文件系统:sudo mount --bind /dev /mnt/dev、sudo mount --bind /proc /mnt/proc、sudo mount --bind /sys /mnt/sys;
(3)进入chroot环境:sudo chroot /mnt;
(4)重新安装GRUB:grub-install /dev/sdb(目标磁盘,如/dev/sdb)、update-grub;
(5)退出并重启:exit→sudo umount -R /mnt→sudo reboot。
GParted扩展分区(右键选择“Resize/Move”,拖动滑块至最大可用空间),然后调整文件系统大小(sudo resize2fs /dev/sdb1,适用于ext4)。rsync、partclone均在Live环境中执行)。通过以上步骤,可简化Ubuntu分卷数据迁移流程,同时保证数据安全和系统可用性。操作前务必做好备份,避免误操作导致数据丢失。