温馨提示×

Ubuntu分区如何进行数据迁移

小樊
73
2025-10-03 13:02:06
栏目: 智能运维

Ubuntu分区数据迁移指南

数据迁移是将Ubuntu系统或数据从一个分区/磁盘复制到另一个分区的过程,适用于升级硬盘、调整分区布局或迁移系统场景。以下是常用方法及详细步骤,覆盖不同需求:

一、迁移前准备

  1. 备份关键数据
    使用tar命令打包/home/etc/var等核心目录(排除缓存文件),避免操作失误导致数据丢失:
    sudo tar -czvf backup.tar.gz --exclude={'/home/*/.cache','/tmp/*'} /home /etc /var
    
  2. 记录系统信息
    记录原分区的挂载点(如//home)、文件系统类型(如ext4btrfs)、UUID(通过sudo blkid获取),便于后续修改配置。
  3. 准备目标分区
    使用GParted(图形化)或fdisk(命令行)创建与原分区大小一致或更大的分区,格式化为相同文件系统(如ext4)。
  4. 连接目标设备
    将目标分区(如新硬盘、外接U盘)连接到计算机,确保系统能识别(通过lsblk查看设备名,如/dev/sdb1)。

二、常用迁移方法

1. rsync(文件级同步,推荐)

适用于同系统版本迁移(如Ubuntu 22.04→22.04),保留文件权限、时间戳和符号链接,效率高且安全。

  • 步骤
    (1)从Ubuntu Live USB启动(选择“Try Ubuntu”),打开终端。
    (2)挂载原分区(如/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)调整引导(若更换硬盘):参考“迁移后设置”部分。

2. dd(块级复制,完整镜像)

适用于完整克隆分区/磁盘(如机械硬盘→固态硬盘),生成与原系统完全一致的镜像,但会覆盖目标分区所有数据,需谨慎使用。

  • 步骤
    (1)确认源设备和目标设备(如/dev/sda/dev/sdb),使用lsblk避免混淆。
    (2)执行dd命令(推荐bs=64K提升速度,conv=noerror,sync忽略错误):
    sudo dd if=/dev/sda of=/dev/sdb bs=64K conv=noerror,sync status=progress
    
    (3)等待命令完成(时间取决于数据量),目标分区将包含与原分区完全相同的数据。
    (4)调整分区大小(若目标分区更大):使用GParted扩展分区(如sudo parted /dev/sdb resizepart 1 100%),然后调整文件系统大小(sudo resize2fs /dev/sdb1)。

3. Clonezilla(图形化克隆工具)

适用于新手或复杂场景(如多分区、跨硬件迁移),提供“设备-镜像”模式,操作直观且安全。

  • 步骤
    (1)下载Clonezilla Live ISO,用RufusEtcher制作启动盘。
    (2)从启动盘启动,选择“device-image”模式(克隆到镜像或直接克隆到设备)。
    (3)选择源磁盘(如/dev/sda)和目标磁盘(如/dev/sdb),确认分区布局一致。
    (4)开始克隆,完成后重启计算机,从目标磁盘启动。

三、迁移后关键设置

  1. 更新UUID与fstab
    ddClonezilla会复制原分区的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+XYEnter)。

  2. 修复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
    
  3. 调整分区大小(可选)
    若目标分区比原分区大,可使用GParted扩展分区:
    (1)打开GParted,选择目标分区(如/dev/sdb1)。
    (2)右键选择“Resize/Move”,拖动滑块至最大可用空间,点击“Apply”。
    (3)调整文件系统大小:sudo resize2fs /dev/sdb1(适用于ext4文件系统)。

四、注意事项

  • 硬件兼容性:若新旧设备硬件差异大(如CPU架构变化),建议使用rsync而非dd,避免驱动冲突。
  • 数据安全:操作前务必确认目标分区无重要数据,dd命令会永久覆盖目标数据。
  • 引导修复:若迁移后无法启动,优先检查/etc/fstab中的UUID是否正确,再修复GRUB引导。
  • 测试验证:迁移完成后,重启计算机并从目标分区启动,检查系统是否正常运行(如df -h查看挂载点,ls /home查看用户文件)。

以上方法覆盖了Ubuntu分区数据迁移的常见场景,选择时需根据数据量、系统版本、硬件差异灵活调整。操作前做好备份是避免数据丢失的关键!

0