
三部 Linux PC 保持同一手感:dotfiles、套件清單同 secrets 分開管
用 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 官方文件
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.txt、packages/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、又想最快還原到某個完整狀態,全碟映像仍然直接好多。多機環境就值得保存可重建嘅設定同軟件意圖,同時保留獨立資料備份;實際成效要睇你有冇定期用乾淨環境驗證成套重建流程。
參考來源
- XDA Developers — The same Linux setup follows me across three PCs, without cloning a single drive — original report
- chezmoi:Setup — 官方文件解釋共用 source state、本機 config 同 template 點樣配合。
- chezmoi:Manage machine-to-machine differences — 官方文件,確認可按 hostname、OS 等資料產生唔同設定,亦支援 password manager。
- GNU Stow Manual — 官方手冊,確認 Stow 可用 symlink 管理 home directory 內嘅 dotfiles。
- Removing sensitive data from a repository — GitHub 官方安全指引,說明 secrets 洩漏後要先撤銷或更換,再處理 Git 歷史。
- apt-mark(8) — Debian Manpages — Debian 官方 man page,確認
apt-mark showmanual會列出標記為手動安裝嘅套件。 - Syncthing FAQ — 官方 FAQ 提醒檔案同步唔適合取代完整備份,即使開啟版本保留亦應另設備份。
本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。







