自動移動檔案並調整分割區大小?

自動移動檔案並調整分割區大小?

我的處境有點奇怪。我最近一直致力於從 debian 切換到 arch,並且我的主分區都指向同一個分區(不同的用戶名,所以這不是問題)。

我想做的是兩件事之一:

  1. 在 arch 上使用與 debian 相同的用戶名和群組設定用戶,然後一切就正常了!或者
  2. 將我想要在主資料夾之間共享的檔案移到它們自己的分割區,並使用 fstab 掛載它。

對於第二個,我有大約 150GB 的檔案需要移動到它們自己的分割區,並且我的主分割區上有大約 15GB 的可用空間。所以我想要做的是以某種方式創建一個 10gb ext4 分區,移動 10gb 左右的文件,再次擴展分區,再次移動文件,等等,直到所有文件都移動到自己的分區。

我可以手動執行此操作,但如果我可以說“將 10GB 左右的文件從這裡移動到那裡,然後調整其大小並重複,直到文件用完”,那就更容易了。

這可能嗎?

答案1

/home/ 目錄中的資料和設定文件應該與發行版無關,因為它與應用程式而不是作業系統相關。例如,某些發行版可能會調整其應用程式版本以使用不同的資料夾名稱/home/rob,但您不需要做更多的事情,只需重命名資料夾或符號連結即可使其符合應用程式的期望。

因此,在 arch 上建立一個可以存取 debian 主目錄中已有檔案和目錄的使用者應該不成問題。

您需要做的第一件事是計算 debian 用戶的 UID,並確保這在 arch 上是相同的。 UID 是「真實」使用者 ID,您登入時使用的使用者 ID 只是 UID 的人類表示。假設您的 arch 使用者是“rob”,而 rob 的主目錄是/home/rob

 $ ls -alnd /home/rob
 drwxr-xr-x 94 1000 1000 12288 Jul  3 21:36 /home/rob

uid 和 gid(組 ID)是第三列和第四列。所以這個資料夾由 uid 1000 和 gid 1000 擁有。

$ grep 1000 /etc/passwd
rob:x:1000:1000:,,,,:/home/rob:/bin/bash
$ grep 1000 /etc/group
rob:x:1000:

所以你可以看到在這種情況下組名也是“rob”。這是一個分發選擇 - 有些會預設建立具有相同名稱的主要群組的用戶,有些會建立一個users群組(通常 gid 100)並將其設為主要群組。就解決這個問題而言,這並不重要,特別是如果您是唯一用戶的話。

我不記得 arch 做了什麼,但我假設它創建了一個usersgid 100 的群組。

所以我們只需要建立一個新用戶rob,並將其指向該資料夾,並確保它設定了正確的 uid:

$ adduser --home /home/rob --uid 1000 --no-create-home --gid 100 rob

或者,如果您想先為 rob 建立一個群組,請執行以下操作:

$ adduser --group --gid 1000 rob

然後

$ adduser --home /home/rob --uid 1000 --no-create-home --gid 1000 rob

現在設定 rob 帳號的密碼

$ passwd rob

然後登錄,它應該可以像在 arch 上一樣進行訪問。

答案2

選項#1 很有可能發揮作用。您只需要使 uid 和 gid 匹配。使用groupadd -guseradd -u將它們添加到用戶資料庫中,手動選擇的 uid 和 gid 與您在 Debian 上找到的相匹配id -a

find /home -printf 'user %u %U\ngroup %g %G\n' | sort -u

希望該清單僅包含非特權使用者帳戶的 uid 和 gid,並且來自其他系統的 uid 和 gid 會使用正確的名稱或沒有名稱的數字進行報告。如果相同的 uid 或 gid 在清單中以兩個不同的名稱出現兩次,事情會更加複雜。

對於報告中沒有姓名的用戶,請使用groupadd -g gid groupuseradd -u uid -g gid username建立用戶資料庫條目並為其提供姓名。然後運行passwd username為您創建的用戶設定密碼。

相關內容