需要澄清:使用 Rsync 移動 /usr
語境
我最近將 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 文章,我也可以使用其他發行版中的工具。
我可以建議一種替代方法嗎?
- 不要嘗試移動整個
/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
是預設目錄,但我相信您可以修改它),如果我希望它們駐留在另一個 HDD 上,我只會對它們進行符號連結。您可以為 just 創建另一個分區/usr/portage
並將其直接掛載到/usr/portage
,但我更喜歡將我的所有數據掛載到一個大的遠端分區下/mnt/data
,然後根據需要進行符號連結目錄。我很可能也會/home
住在這裡。也許兩個單獨的分區方案像這樣:
/mnt/os_data /mnt/my_data
我想你明白了要點。