«
使用rsync进行系统迁移

时间:2024-11   


使用 rsync 工具进行文件系统迁移时,可以逐步完成分区准备、文件复制、引导程序安装等工作。以下是更详细的操作步骤和每一条命令的具体含义。


1. 确认分区信息

  1. 查看系统的分区和挂载情况:
    lsblk

示例输出:

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 256G 0 disk
├─sda1 8:1 0 50G 0 part /
├─sda2 8:2 0 200G 0 part /home
└─sda3 8:3 0 6G 0 part [SWAP]
sdb 8:16 0 512G 0 disk
└─sdb1 8:17 0 512G 0 part

假设源分区为 /dev/sda1,目标分区为 /dev/sdb1。

  1. 确保目标分区未挂载:
sudo umount /dev/sdb1

2. 准备目标分区

  1. 格式化目标分区(以 ext4 为例):
sudo mkfs.ext4 /dev/sdb1

注意:此操作会清空目标分区中的所有数据。

  1. 挂载目标分区到临时目录:
sudo mount /dev/sdb1 /mnt

3. 使用 rsync 复制系统文件

  1. 复制源分区到目标分区:
sudo rsync -aAXHv \
--exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} \
/ /mnt
  1. -aAXHv:

  2. -a 保持文件的属性(递归、权限、时间戳等)。

  3. -A 保留 ACL 信息。

  4. -X 保留扩展属性。

  5. -H 保留硬链接。

  6. -v 显示详细输出。

  7. --exclude 排除动态文件系统。

  8. 确认复制完成后没有错误。


4. 配置目标分区

  1. 挂载系统的动态文件夹到新分区以便后续操作:

    sudo mount --bind /dev /mnt/dev
    sudo mount --bind /proc /mnt/proc
    sudo mount --bind /sys /mnt/sys
    sudo mount --bind /run /mnt/run
  2. 修改目标分区的 fstab 文件:

  3. 打开 /mnt/etc/fstab:

    sudo nano /mnt/etc/fstab
  4. 找到源分区的挂载点,将其替换为目标分区的新 UUID:

    UUID=新的UUID / ext4 defaults 0 1
  5. 查看目标分区 UUID:

    sudo blkid /dev/sdb1

5. 安装引导程序到目标磁盘

  1. 切换到目标分区环境:
sudo chroot /mnt
  1. 安装 GRUB 引导程序到目标磁盘(如 /dev/sdb):
grub-install /dev/sdb
update-grub
  1. 退出 chroot 环境:
exit

6. 验证迁移

  1. 卸载所有临时挂载点:
sudo umount /mnt/dev
sudo umount /mnt/proc
sudo umount /mnt/sys
sudo umount /mnt/run
sudo umount /mnt
  1. 重新启动系统,进入 BIOS/UEFI,选择新的磁盘(如 /dev/sdb)进行引导。

  2. 检查系统是否正常启动:

df -h

确认根分区(/)是否挂载在目标分区。


7. 清理(可选)

如果迁移完成并测试无误,可以清理旧分区数据或调整挂载点(如 /home 等):

sudo umount /dev/sda1
sudo mkfs.ext4 /dev/sda1  # 格式化旧分区

注意事项

  1. Live 系统操作:如果源分区是 /,建议从 Live 系统操作,避免源分区在使用中导致错误。

  2. 备份数据:迁移前,请将重要数据备份到外部存储设备。

  3. 多次检查:检查每一步的操作结果,特别是挂载点和 fstab 配置。

通过以上步骤,您可以安全地将 Linux 系统迁移到新分区,并确保无数据丢失。如果有问题,可以随时反馈!