三部 Linux PC 保持同一手感:dotfiles、套件清單同 secrets 分開管
3C 產品

三部 Linux PC 保持同一手感:dotfiles、套件清單同 secrets 分開管

圖片:via XDA Developers — https://www.xda-developers.com/same-linux-setup-across-three-pcs-without-cloning-drives/
TechLab 編輯部(譯)·

用 Git 留版本、用模板分機器,敏感資料切勿推入倉庫

XDA 作者 Jeff Butts 管住三部 Linux PC,但冇再追求三套安裝完全一樣。佢用 Git 保存重要 dotfiles,另外留低基本套件清單,文件同項目資料就獨立同步。換機或者重裝之後,只要逐層砌返工作環境,唔使將舊 SSD 成隻複製過去。原文冇交代指定工具,所以呢個比較似架構方向,實際點做仍然要自己補齊。

先將部機拆成四層

最實用嘅分法係 共用設定、軟件清單、工作資料、機器本身設定。Shell alias、prompt、tmux、Neovim、Git alias 呢類文字設定適合入版本控制;常用 CLI 工具同桌面 app 可以留成清單;文件、程式項目同媒體檔交畀 Syncthing、NAS 或雲端;顯示器排列、GPU driver、風扇、電源管理同磁碟掛載就留喺各部機。

界線要畫得保守。fstab 入面嘅磁碟 UUID、NetworkManager 連線資料、顯示器輸出名、NVIDIA 或 AMD 專屬設定、printer、音效裝置同 udev 規則,都可能綁住某套硬件。成個 ~/.config/etc 打包同步睇落省事,但一個錯誤設定足以令另外兩部機一齊出事,app 自動改寫設定時亦容易整出衝突。

Syncthing 官方文件入面 Send Only Folder 嘅設定畫面

圖片:Syncthing 官方文件

Git 要當版本簿用

Git 最好用喺有意識嘅設定變動:先喺一部機改,實際用一輪,睇清楚 diff 先 commit,再由其餘電腦拉取。咁做可以知道幾時改壞咗 alias 或 editor 設定,亦可以逐次回復。若果直接用雙向檔案同步追住每次寫入,幾部機同時開住同一個 app,就可能互相覆蓋或者產生 conflict copy。

工具方面,設定簡單而且幾部機相近,可以用 GNU Stow 將倉庫內嘅 dotfiles 以 symlink 放返入 home directory。跨 distribution、工作同私人電腦有唔同帳戶,或者設定要按 hostname、OS、CPU 架構轉換,chezmoi 會順手好多:共用內容放 source state,每部機留自己嘅 config,再用 template 產生最後檔案。套用前先跑 chezmoi diff,確認內容先 chezmoi apply,會穩陣過一開始就全自動更新。

套件清單要細,唔好照抄全機

套件清單應該保存「每部機都想有」嗰批工具,例如 shell、editor、Git、容器工具同常用診斷程式。Debian 或 Ubuntu 可以用 apt-mark showmanual 作起點,但輸出仍然要人手執,刪走桌面 metapackage、driver 同只用過一次嘅工具。幾個 distribution 混用時,可分成 packages/debian.txtpackages/fedora.txt 等檔案,再由安裝 script 揀啱嗰份,唔好假設套件名處處相同。

XDA 呢套思路有個幾重要嘅好處:新機會用自己 distribution 倉庫提供嘅版本重新安裝,唔會連舊 binary、舊 dependency 同多年垃圾一齊搬走。不過套件清單只係意圖紀錄,唔保證幾年後名稱同相依套件仍然存在,所以重建 script 要定期喺乾淨 VM 或後備機試一次,等問題喺真正換機前浮出嚟。

工作檔案可以同步,備份仍然要另外做

文件同程式項目可以交畀 Syncthing 或 NAS,較大嘅影片、映像檔同機器專屬資料就毋須每部機都有一份。Syncthing 適合令幾部裝置見到最新檔案,但官方亦提醒同步刪除同錯誤修改都可能傳去其他裝置;即使開咗 file versioning,都應該另有離線或快照備份。設定倉庫同工作資料最好分開,更新節奏、存取權限同復原方法先可以各自處理。

Private repo 都唔係密碼庫

最危險嘅做法係順手將成個 home directory 加入 Git。~/.ssh/id_ed25519 呢類 SSH 私鑰、API key、token、.env、AWS credentials、WireGuard 私鑰、瀏覽器 profile 同 keyring 都唔應入倉庫。SSH 公鑰可以保存,但私鑰應留喺 password manager、硬件 security key 或獨立加密儲存;chezmoi 亦可以喺套用 template 時向 password manager 取值,倉庫只留引用方法。

.gitignore 只可以阻止未受追蹤檔案日後誤加,但已經 commit 咗嘅 key 仍然會留喺 Git 歷史。提交前應該逐個檔案 git add,再用 git diff --cached 檢查,配合 secret scanner 或 pre-commit hook。萬一 key 已推上 remote,GitHub 建議先 revoke 或 rotate,跟住先清理 Git 歷史;淨係刪檔再 commit,舊值仍然可以喺先前版本搵返。

重建流程要真係重建得到

一部新機嘅次序可以好簡單:先裝 Git,再裝 chezmoi 或 Stow,拉取設定倉庫同檢查差異;之後再裝返對應 distribution 嘅基本套件;跟住連接工作資料;最後先加入本機 driver、磁碟、網絡同 secrets。日常改設定亦先喺一部機觀察,再推去其餘裝置。咁樣維護三部機會多幾個步驟,但每層出事都有清楚嘅復原位置。

呢套做法最啱開發者、多機工作同 homelab。只得一部 Linux PC、又想最快還原到某個完整狀態,全碟映像仍然直接好多。多機環境就值得保存可重建嘅設定同軟件意圖,同時保留獨立資料備份;實際成效要睇你有冇定期用乾淨環境驗證成套重建流程。


參考來源

本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。

分享:WhatsAppThreadsTelegramFacebook