我读到过一些文章说,在使用rsync
将分区从一个设备复制到另一个设备后,编辑很重要UUID
,因为设备不能与同一个 UUID 共存。
这是真的吗?我该怎么做?
答案1
rsync
不复制分区
rsync
是一款文件和文件夹复制/同步工具。它非常适合将本地文件夹与远程计算机中的文件夹同步,或将一台计算机中的文件夹和文件备份到另一台计算机。
它不会克隆分区。因此,使用时无需担心分区的 UUID rsync
。
使用gparted
(或dd
)克隆分区
如果要复制分区,请使用 GUIgparted
或命令行dd
。它将复制原始分区,其大小和可用空间与原始分区完全相同。副本也将具有相同的 UUID。
当系统尝试通过 UUID 挂载分区(例如使用文件)/etc/fstab
并发现两个分区具有相同的 UUID 时,就会出现问题。如果原始分区和副本位于两台不同的计算机中,或者副本替换了原始分区,则相同的 UUID 应该不会有问题。
要从内部为复制的分区赋予新的 UUID gparted
:
- 选择复制的分区。确保它没有被挂载
- 去分割在顶部菜单中或右键单击图表中的分区
- 点击新的 UUID
- 单击“应用”进行更改
使用命令行分配新的 UUID(ext4
仅适用于分区)
$ tune2fs -U $(uuidgen) /dev/sdXN
或者
$ tune2fs -U random /dev/sdXN
其中 X 是字母,N 是特定于感兴趣分区的数字。
查看此问题的答案问题在 Stackexchange 中了解有关使用命令行更改 UUID 的更多信息。
希望这可以帮助
答案2
rsync
可以克隆你的整个/
但是使用rsync
和dd
或其他克隆方法时,您必须更改/etc/fstab
和/etc/default/grub
和扩展/boot/grub/grub.cfg
以使 Ubuntu 正常工作。
从这个脚本:使用 Bash 脚本将 Ubuntu 备份/克隆到另一个分区
rsync
调用方式如下:
rsync -haxAX --stats --delete --info=progress2 --info=name0 --inplace \
/* "$TargetMnt" \
--exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found}
请注意,您不要想要复制的目录,请使用--exclude
指令指定。这些目录要么在启动时重新创建(虚拟文件系统),要么指向其他分区(如/mnt
和/media
)。您可能还想将垃圾文件夹排除在复制之外。
完成后rsync
你需要像这样更改上述文件:
sudo sed -i "s/$SourceUUID/$TargetUUID/g" "$TargetMnt"/etc/fstab
sudo sed -i "s/$SourceUUID/$TargetUUID/g" "$TargetMnt"/boot/grub/grub.cfg
sudo sed -i "s/quiet splash/nosplash/g" "$TargetMnt"/boot/grub/grub.cfg
在哪里:
SourceUUID=
当前分区的 UUIDTargetUUID=
目标/克隆分区的 UUIDTargetMnt=
克隆分区的挂载点s/quiet splash/nosplash/g
行是可选的,以便当您启动克隆时,您会看到显示的系统消息与没有启动画面的区别。
最后,添加一个指向新克隆的 Ubuntu 的 GRUB 菜单选项,使用:
sudo update grub