语境
我最近将 Windows 10 和 Gentoo 迁移到 2 个单独的 250 GB SSD,并留下我旧的传统 SATA HDD 驱动器用于存储。
- 我
Users
在新安装期间安装了适用于 Windows 的 HDD。 - 我使用 GParted LiveCD 缩小我的根文件系统,并将其复制到新驱动器,重新启动,然后删除我要离开的旧根目录
/home
和我的 HDD 驱动器上的交换分区。这一切都很好,因为我正在使用 UUID 启动。
由于我在 Gentoo 上,我只需要将/usr
目录从 SSD 移回我复制它的原始 HDD,这样 Portage Tree 就不会在更新期间占用小 SSD 空间。直到现在我才用 gentoo 标记它(参见更新标题),因为这个问题与正确的命令选项rsync
有关 整个存储库在更新之前下载到用户的本地计算机。将其下载到 SSD 会导致不必要的磨损,因为树每天都会更新。
问题
我发现以下两个与我要完成的工作相关的问题:
现在我需要回答我自己的一些问题:
- 我可以在 Gentoo 安装时使用
rsync
命令移动需要移动的位置吗?ServerFault 问题暗示了这一点。/usr
/usr
- 如果 #1 不可能,并且我使用 GParted Live USB 发出
rsync
命令,那么由于 LiveUSB 基于 Debian 发行版,文件/目录所有者是否会更改? rsync
除了-a
存档之外,还有哪些合适的选项?AskUbuntu 中所选答案中的评论暗示添加-H
以确保遵循硬链接,但随后 OP 与他自己的答案中的评论相矛盾。
视觉辅助
我需要将/usr
目录从红色方形的分区移动到蓝色方形的空分区,而红色方形的整个分区正在运行,或者使用 LiveCD 这样做,而不会损害或更改当前权限。
更新
这道题竟然是一座可以征服的山,但不知道能不能征服:
- 我/能够
/usr
使用rsync -avAHPX /mnt/gentoo/usr /mnt/new_usr
. 由于我仍然被卡住,我不能给予部分答案。 - 它没有好处,因为 systemd 抱怨根文件系统不包含有效的 init,因为 init 系统位于无法挂载的分区中。你看到这里的问题了吗?(Systemd 位于
/usr/lib/systemd
) - 我需要提前安装用户空间来解决这个问题,但是为了解决这个问题,我会丢失我的普利茅斯启动屏幕 initramfs 以及
/usr
提前安装所需的 initramfs。另请参阅自定义 Initramfs和Initramfs/Guide。 - 支持和/或其他 Gentoo 用户不抱怨“Systemd Sucks”很难获得(这是原因之一,我开始在这里贡献)。因此,如果我在我们的官方资源中发布问题,我会受到嘘声。
如果有人能告诉我正确的工具来结合普利茅斯引导程序和/usr
initramfs/intramfd 中的早期安装,我会很感激,如果这个问题存在,我正在考虑提供赏金。还要知道,由于 Gentoo 是基于源的,即使我链接了 Gentoo Wiki 文章,我也可以使用其他发行版中的工具。
rsync
命令移动需要移动的位置吗?ServerFault 问题暗示了这一点。/usr
/usr
是的,你当然可以(复制,而不是移动?),但我总是会使用 Live USB 来处理这些事情。在正在使用的系统上,在您复制某个进程时可能会写入某些进程
/usr
,这可能会导致传输不完整。rsync
命令,那么由于 LiveUSB 基于 Debian 发行版,文件/目录所有者是否会更改?不,只要您使用
-a
,就应该为本地副本保留权限。rsync
除了-a
存档之外,还有哪些合适的选项?AskUbuntu 中所选答案中的评论暗示添加-H
以确保遵循硬链接,但随后 OP 与他自己的答案中的评论相矛盾。正如评论中所讨论的,如果您查找
-a
inman rsync
,它会排除-H
,-A
和-X
. 这些标志保留硬链接、ACL 和扩展属性。我强烈怀疑它是否/usr
包含其中的任何一个,但以防万一,使用这些标志并没有什么坏处。如果源不使用它们,那么就没有什么可以保留的,所以rsync
就像你没有使用这些标志一样。我也倾向于使用-P
,它允许您继续中止传输,并在复制时向您显示进度。我可以建议一种替代方法吗?
不要尝试移动整个
/usr/*
树,因为您提到它破坏了 systemd 并且似乎不需要解决密集 RW 和/或大量浪费空间的问题(您可以移动/usr/portage
)通过从 LiveCD 运行的 rsync复制
/usr/portage
到远程 HDD/mnt/hdd
/usr/portage
ln -s /mnt/hdd/gentoo/usr/portage /usr/portage
除非需要,否则我不喜欢修改默认目录(
/usr/portage
是默认目录,但我相信您可以修改它),如果我希望它们驻留在另一个 HDD 上,我只会对它们进行符号链接。您可以为 just 创建另一个分区/usr/portage
并将其直接挂载到/usr/portage
,但我更喜欢将我的所有数据挂载到一个大的远程分区下/mnt/data
,然后根据需要进行符号链接目录。我很可能也会/home
住在这里。也许两个单独的分区方案像这样:
我想你明白了要点。