使用 rsync
工具进行文件系统迁移时,可以逐步完成分区准备、文件复制、引导程序安装等工作。以下是更详细的操作步骤和每一条命令的具体含义。
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。
- 确保目标分区未挂载:
sudo umount /dev/sdb1
2. 准备目标分区
- 格式化目标分区(以 ext4 为例):
sudo mkfs.ext4 /dev/sdb1
注意:此操作会清空目标分区中的所有数据。
- 挂载目标分区到临时目录:
sudo mount /dev/sdb1 /mnt
3. 使用 rsync
复制系统文件
- 复制源分区到目标分区:
sudo rsync -aAXHv \
--exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} \
/ /mnt
-
-aAXHv:
-
-a 保持文件的属性(递归、权限、时间戳等)。
-
-A 保留 ACL 信息。
-
-X 保留扩展属性。
-
-H 保留硬链接。
-
-v 显示详细输出。
-
--exclude 排除动态文件系统。
-
确认复制完成后没有错误。
4. 配置目标分区
-
挂载系统的动态文件夹到新分区以便后续操作:
sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys sudo mount --bind /run /mnt/run
-
修改目标分区的 fstab 文件:
-
打开 /mnt/etc/fstab:
sudo nano /mnt/etc/fstab
-
找到源分区的挂载点,将其替换为目标分区的新 UUID:
UUID=新的UUID / ext4 defaults 0 1
-
查看目标分区 UUID:
sudo blkid /dev/sdb1
5. 安装引导程序到目标磁盘
- 切换到目标分区环境:
sudo chroot /mnt
- 安装 GRUB 引导程序到目标磁盘(如 /dev/sdb):
grub-install /dev/sdb
update-grub
- 退出 chroot 环境:
exit
6. 验证迁移
- 卸载所有临时挂载点:
sudo umount /mnt/dev
sudo umount /mnt/proc
sudo umount /mnt/sys
sudo umount /mnt/run
sudo umount /mnt
-
重新启动系统,进入 BIOS/UEFI,选择新的磁盘(如 /dev/sdb)进行引导。
-
检查系统是否正常启动:
df -h
确认根分区(/)是否挂载在目标分区。
7. 清理(可选)
如果迁移完成并测试无误,可以清理旧分区数据或调整挂载点(如 /home
等):
sudo umount /dev/sda1
sudo mkfs.ext4 /dev/sda1 # 格式化旧分区
注意事项
-
Live 系统操作:如果源分区是 /,建议从 Live 系统操作,避免源分区在使用中导致错误。
-
备份数据:迁移前,请将重要数据备份到外部存储设备。
-
多次检查:检查每一步的操作结果,特别是挂载点和 fstab 配置。
通过以上步骤,您可以安全地将 Linux 系统迁移到新分区,并确保无数据丢失。如果有问题,可以随时反馈!