最後更新日期:2026-10-10
適用主機:mac-mini-pro(Apple Silicon M-series)
適用場景:macOS 系統重灌、硬碟損毀格式化、或使用全新 Mac mini 硬體取代上線。
為達到「最少手動設定、最快速度恢復」的目標,系統設計了四層互補防線:
graph TD
subgraph S1 ["1. Time Machine"]
TM1["macOS 帳號與密碼"]
TM2["Keychain 鑰匙圈憑證"]
TM3["/Applications 大型應用程式"]
TM4["Wi-Fi 與系統偏好設定"]
end
subgraph S2 ["2. 外接硬碟 /Volumes/Samsung/gemini-media-stack-backup"]
SS1["每日冷備份 SQL Dumps"]
SS2["Native Apps 核心資料庫"]
SS3["Immich 照片庫與大容量資料"]
SS4["專案代碼包 gemini-workspace-code.tar.gz"]
SS5["極速本機匯入 數分鐘完成"]
end
subgraph S3 ["3. Google Drive ~/Gemini"]
GD1["最新 Compose 與程式碼"]
GD2["bootstrap-new-mac.sh 腳本"]
GD3["最新系統快照 Brewfile 與 crontab"]
GD4["age 加密之金鑰備份"]
end
subgraph S4 ["4. NAS1 異地備份"]
NAS1["Synology DS918+ 每日 DB/快照"]
NAS2["每週日 Time Machine 全機映像"]
end
/Volumes/Samsung(含 Immich 原始相片庫、影音庫)Time Machine 不會備份。authur 與應用程式。authur(務必維持相同帳號名稱 authur,以確保所有路徑一致)。/Volumes/Samsung。~/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My Drive/Gemini
💡 免聯網/離線接手備用方案:若暫時無網路或未登入 Google Drive,可直接插上 Samsung 外接硬碟解壓代碼:
mkdir -p "$HOME/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My Drive/Gemini" "$HOME/Gemini" tar xzf /Volumes/Samsung/gemini-media-stack-backup/$(date +%Y-%m-%d)/gemini-workspace-code.tar.gz -C "$HOME/Gemini/"
開啟終端機 (Terminal),執行以下指令:
# 1. 建立 Google Drive 符號連結(若尚未建立)
ln -s "$HOME/Library/CloudStorage/GoogleDrive-authurlin@gmail.com/My Drive/Gemini" "$HOME/Gemini"
# 2. 啟動一鍵接手引導程式
zsh ~/Gemini/bootstrap-new-mac.sh
此引導程式將自動執行:
age、rsync、python3。/Volumes/Samsung/age-key.txt(權限 600)與本機 ~/.age/gemini-key.txt。新機插上 Samsung 外接硬碟時,引導程式將自動偵測並秒級完成解密,完全免手動貼上!age key - Gemini),支援手動貼上或終端機輸入解密(解密完成後立即自動銷毀暫存檔,零痕跡保護)。.env.local 解密至 ~/Gemini-local/.env.local 與 ~/Gemini/.env.local。~/.ssh/nas1_ed25519 並設定權限 600。Brewfile,一鍵安裝 190+ CLI 工具、OrbStack、Plex、Sonarr、Radarr、SABnzbd 等。restore-orbstack.sh,直接從 /Volumes/Samsung/gemini-media-stack-backup 的最新快照還原 PostgreSQL dumps (Nextcloud, Immich, Joplin, Paperless, Miniflux)、SQLite (Wallabag, Wallos) 與 Native App 資料庫。LaunchAgents 至 ~/Library/LaunchAgents/ 並批次 launchctl load。crontab 排程。為了讓內網其他設備、手機 App 與外部 Webhook 能無縫連線,需設定主機識別:
sudo scutil --set HostName mac-mini-pro
sudo scutil --set LocalHostName mac-mini-pro
sudo scutil --set ComputerName mac-mini-pro
tailscale login
# 於 Tailscale Admin Console 將此機器名稱設為 mac-mini-pro
tailscale funnel 8089 on
192.168.88.x)。zsh ~/Gemini/start-work-orbstack.sh
python3 ~/Gemini/scripts/check-all-services.py
檢查項目包含:Nextcloud, Homarr, Authelia, Joplin, Immich, Paperless, Plex, Sonarr, Radarr, SABnzbd 等。
您不需要手動手動維護備份,現有自動化排程已涵蓋:
| 排程項目 | 執行週期 | 備份目標與內容 |
|---|---|---|
nas-backup-central-orbstack.sh |
每天清晨 05:07 (由 NAS1 喚醒腳本觸發) | • 自動產出 system-snapshot (Brewfile, LaunchAgents, Crontab)• 自動 dump Nextcloud, Immich, Joplin, Paperless, Miniflux, Wallabag, Wallos • 打包 Native App DBs (Plex, Sonarr, Radarr, Prowlarr) • 完整封裝 Google Drive 專案目錄 ( gemini-workspace-code.tar.gz)• 雙寫至 NAS1 ( /volume1/Backup/) + 本機外接硬碟 (/Volumes/Samsung/gemini-media-stack-backup/) |
nas1-on-orbstack.sh (Time Machine) |
每週日清晨 (DB 備份完成後) | • 自動觸發 Time Machine 增量備份至 NAS1 網路共用空間 • 內建 45 分鐘安全逾時防護,完成後安全關機 NAS1 |
env-encrypt.sh |
每天 01:00 | • 以 age 公鑰加密 .env.local 與 nas1_ed25519• 同步儲存於 Google Drive 與本機 |
sync-env-local.sh |
每 30 分鐘 | • 同步 Google Drive 編輯版 .env.local 至本機 SSD 執行目錄 |
~/Gemini/scripts/system-snapshot.sh
~/Gemini/nas-backup-central-orbstack.sh --local-only
FORCE_TM=1 ~/Gemini-local/nas1-on.sh
~/Gemini/restore-orbstack.sh --list
~/Gemini/restore-orbstack.sh 2026-10-08 --target docker-configs
~/Gemini/restore-orbstack.sh --target workspace-code
# 或手動單行解壓縮:
tar xzf /Volumes/Samsung/gemini-media-stack-backup/$(date +%Y-%m-%d)/gemini-workspace-code.tar.gz -C ~/Gemini/