
我想安裝另一個發行版但保留我的主目錄。有沒有辦法將主目錄移到單獨的分割區?我沒有可用於備份資料的外部硬碟。我想按照建議設定分區這裡。
答案1
你的問題是發行版中立的,所以如果我提到你沒有的任何具體內容,只需使用你這邊的同等內容即可。
我真的建議您購買外部備份,相信我,丟失資料是最糟糕的。繼續需要您自擔風險- 但如果你買不到,你可以這樣做。
你需要什麼
- /home 目錄的大小
- 可用空間,超過 /home 目錄的大小
- 磁碟分割工具,我推薦gparted
該怎麼辦
檢查 /home 目錄的大小(最後的結果將是 home 目錄的總大小):
du -h /home
檢查新分割區是否有足夠的可用空間:
df -h
安裝gparted
sudo apt-get install gparted
您需要比 /home 目錄大小更多的可用空間。如果您沒有可用空間,那麼您將無法建立新分割區,並且無論如何都需要將資料移至外部分割區。
如果有空間,請使用 gparted 縮小現有分割區,然後使用釋放的未分配空間建立新分割區。一旦您的新分割區準備就緒,請注意它是 /dev/sdax (用於sudo fdisk -l
查看此內容),並將 /home 檔案複製到其中。
在新發行版中使用分區
您提到安裝另一個發行版,如果您打算覆蓋目前發行版,那麼在安裝過程中應該要求您設定分割區。此時您可以指定該分割區為/home,選擇不是格式化它,一切都會好起來的,您可以跳過下一節。
但是,如果您希望目前的發行版能夠使用新的 /home 分割區,請依照本節操作:
將分割區掛載到現有發行版中
我們必須告訴您的作業系統使用該分割區作為新的 /home,我們在 fstab 中執行此操作,但首先讓我們找到這個新分割區的 UUID:
ls -l /dev/disk/by-uuid
交叉引用新分割區的 /sdax 並複製它的 UUID,我的看起來像3d866059-4b4c-4c71-a69c-213f0e4fbf32
.
備份 fstab:sudo cp /etc/fstab /etc/fstab.bak
編輯 fstab:sudoedit /etc/fstab
這個想法是新增一個新行,將分割區安裝在 /home 處。使用您自己的 UUID,而不是我在這裡發布的 UUID;)
# <file system> <mount point> <type> <options> <dump> <pass>
UUID=3d866059.. /home auto default 0 1
儲存並重啟,測試新分割區是否掛載到/home。運行df -h
以列出所有已安裝的分割區,/home 現在應該位於該清單中。
筆記
- 這可能是個好主意熟悉 fstab如果你不太了解的話。只需花點時間思考每一步。
- 如果您安裝新的發行版並使用相同的登入名,您的舊 /home 檔案將自動歸您所有。
- 這不是一個可以在一篇文章中涵蓋的微不足道的主題,但我想我已經了解了大部分內容。 :)
答案2
貼文的標題和你的問題讓我有些困惑。您想將其home
分成一個分割區,還是只想重新安裝並保持不變home
?
如果您想要的只是重新安裝整個作業系統,同時保留您的作業系統,home
那麼您可以將您的作業系統備份home
到一個不受安裝影響的位置,然後在之後恢復它,並進行權限修復(用於chown -R username:groupname
確保所有權正確) )。
如果您想遵循一些最佳實踐並將您的程式碼分開,home
那麼這裡是您需要的指南。它是為 Ubuntu 編寫的,但我認為其他發行版也是如此。
答案3
假設您已經有一個單獨的分割區(如果沒有,您可能想要使用gparted或類似的東西,要做一個),您只需執行以下操作(最好以 root 使用者身分):
cp -R /home/whatever /path/to/destination
mv /home/whatever /home/whatever.orig
ln -s /path/to/destionation /home/whatever
然後假設一切正常(以使用者身分登入並測試)
rm -rf /home/whatever.orig
這會將整個目錄(和所有內容)複製到目標安裝點,重命名原始主目錄(如果過程中出現問題,我們可以恢復),創建從新位置到原始主目錄的符號連結目錄(所有內容(如/ etc/passwd)仍然指向該目錄),然後假設它有效,刪除我們製作的備份副本,將我們放置在目標檔案系統中的副本保留下來。