语境
我最近将 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
对于一些上下文,portage 树是 Gentoo 的包存储库。更新之前,整个存储库将下载到用户的本地计算机。将其下载到 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/指南。 - 支持和/或其他 Gentoo 用户不会抱怨“Systemd 很糟糕”很难获得(这是我开始在这里贡献的原因之一)。因此,如果我在我们的官方资源中发布问题,我就会遭到嘘声。
如果有人能告诉我使用什么合适的工具来结合普利茅斯 bootsplash 和/usr
initramfs/intramfd 中的早期安装,我将不胜感激,并且如果这个问题成立,我正在考虑提供赏金。还要知道,由于 Gentoo 是基于源代码的,即使我链接了 Gentoo Wiki 文章,我也可以使用其他发行版的工具。
答案1
我可以建议一种替代方法吗?
不要尝试移动整个
/usr/*
树,因为您提到它破坏了 systemd,并且似乎也不需要解决密集 RW 和/或大量浪费空间的问题(您可以移动/usr/portage
)通过从 LiveCD 运行的 rsync复制
/usr/portage
到远程 HDD- 在启动时通过 FSTAB 将 HDD 安装到类似的位置
/mnt/hdd
- 递归删除
/usr/portage
- 符号链接
ln -s /mnt/hdd/gentoo/usr/portage /usr/portage
我不喜欢修改默认目录(/usr/portage
是默认目录,但我相信您可以修改它),除非需要,并且如果我希望它们驻留在另一个硬盘上,我只会对它们进行符号链接。您可以创建另一个分区并将/usr/portage
其直接安装到/usr/portage
,但我更喜欢将所有数据安装在一个大的远程分区中,/mnt/data
然后根据需要进行符号链接目录。我可能也会/home
住在这里。
也许有两个单独的分区方案,如下所示:
/mnt/os_data
/mnt/my_data
我想你已经明白要点了。
答案2
- 我可以在 Gentoo 安装中使用
rsync
命令来移动需要移动的位置吗? ServerFault 问题暗示了这一点。/usr
/usr
是的,你当然可以(复制,而不是移动?),但我总是会使用 Live USB 来做这些事情。在正在使用的系统上,某些进程/usr
在复制时可能会进行写入,这可能会导致传输不完整。
- 如果#1 不可能,并且我使用 GParted Live USB 发出命令
rsync
,那么文件/目录所有者是否会更改,因为 LiveUSB 基于 Debian 发行版?
不,只要您使用-a
,就应该保留本地副本的权限。
rsync
除了-a
存档之外,还有哪些正确的选项? AskUbuntu 所选答案中的评论暗示添加-H
以确保遵循硬链接,但随后 OP 与他自己的答案中的评论相矛盾。
正如评论中所讨论的,如果您查找-a
in man rsync
,它会排除-H
, -A
, 和-X
。这些标志保留硬链接、ACL 和扩展属性。我强烈怀疑其中/usr
包含任何这些内容,但为了以防万一,使用这些标志并没有什么坏处。如果源代码不使用它们,那么就没有什么可以保留的,因此它的rsync
功能就像您没有使用这些标志一样。我还倾向于使用-P
,它允许您继续中止的传输,并且还可以在复制时显示进度。