Ubuntu分区数据迁移指南
数据迁移是将Ubuntu系统或数据从一个分区/磁盘复制到另一个分区的过程,适用于升级硬盘、调整分区布局或迁移系统场景。以下是常用方法及详细步骤,覆盖不同需求:
tar
命令打包/home
、/etc
、/var
等核心目录(排除缓存文件),避免操作失误导致数据丢失:sudo tar -czvf backup.tar.gz --exclude={'/home/*/.cache','/tmp/*'} /home /etc /var
/
、/home
)、文件系统类型(如ext4
、btrfs
)、UUID(通过sudo blkid
获取),便于后续修改配置。GParted
(图形化)或fdisk
(命令行)创建与原分区大小一致或更大的分区,格式化为相同文件系统(如ext4
)。lsblk
查看设备名,如/dev/sdb1
)。适用于同系统版本迁移(如Ubuntu 22.04→22.04),保留文件权限、时间戳和符号链接,效率高且安全。
/dev/sda1
)和目标分区(如/dev/sdb1
):sudo mkdir /mnt/old /mnt/new
sudo mount /dev/sda1 /mnt/old
sudo mount /dev/sdb1 /mnt/new
(3)使用rsync
同步数据(排除虚拟文件系统):sudo rsync -avz --exclude={'/dev/*','/proc/*','/sys/*','/run/*','/tmp/*'} /mnt/old/ /mnt/new/
(4)同步完成后,卸载分区:sudo umount /mnt/old /mnt/new
(5)调整引导(若更换硬盘):参考“迁移后设置”部分。适用于完整克隆分区/磁盘(如机械硬盘→固态硬盘),生成与原系统完全一致的镜像,但会覆盖目标分区所有数据,需谨慎使用。
/dev/sda
→/dev/sdb
),使用lsblk
避免混淆。dd
命令(推荐bs=64K
提升速度,conv=noerror,sync
忽略错误):sudo dd if=/dev/sda of=/dev/sdb bs=64K conv=noerror,sync status=progress
(3)等待命令完成(时间取决于数据量),目标分区将包含与原分区完全相同的数据。GParted
扩展分区(如sudo parted /dev/sdb resizepart 1 100%
),然后调整文件系统大小(sudo resize2fs /dev/sdb1
)。适用于新手或复杂场景(如多分区、跨硬件迁移),提供“设备-镜像”模式,操作直观且安全。
Rufus
或Etcher
制作启动盘。/dev/sda
)和目标磁盘(如/dev/sdb
),确认分区布局一致。更新UUID与fstab:
dd
或Clonezilla
会复制原分区的UUID,需修改目标分区的UUID以避免冲突:
(1)获取新分区UUID:sudo blkid /dev/sdb1
。
(2)挂载目标根分区:sudo mount /dev/sdb1 /mnt
。
(3)编辑/etc/fstab
(位于/mnt/etc/fstab
),将旧UUID替换为新UUID:
sudo nano /mnt/etc/fstab
修改示例:
UUID=新UUID / ext4 errors=remount-ro 0 1
(4)保存并退出(Ctrl+X
→Y
→Enter
)。
修复GRUB引导:
若更换硬盘或系统无法启动,需重新安装GRUB:
(1)从Live USB启动,挂载目标根分区(/dev/sdb1
)和/boot/efi
分区(若有):
sudo mount /dev/sdb1 /mnt
sudo mount /dev/sdb2 /mnt/boot/efi # 若/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)退出chroot并重启:
exit
sudo umount -R /mnt
sudo reboot
调整分区大小(可选):
若目标分区比原分区大,可使用GParted
扩展分区:
(1)打开GParted
,选择目标分区(如/dev/sdb1
)。
(2)右键选择“Resize/Move”,拖动滑块至最大可用空间,点击“Apply”。
(3)调整文件系统大小:sudo resize2fs /dev/sdb1
(适用于ext4
文件系统)。
rsync
而非dd
,避免驱动冲突。dd
命令会永久覆盖目标数据。/etc/fstab
中的UUID是否正确,再修复GRUB引导。df -h
查看挂载点,ls /home
查看用户文件)。以上方法覆盖了Ubuntu分区数据迁移的常见场景,选择时需根据数据量、系统版本、硬件差异灵活调整。操作前做好备份是避免数据丢失的关键!