前情提要:你已完成 Part 1,成功將 123雲盤掛載為 WebDAV,並建立 Kopia 儲存庫。本篇專注「優化 + 自動化 + 監控」。
1. 進階壓縮策略(節省空間與 CPU) #
Kopia 支援 選擇性壓縮:僅壓縮易壓縮檔案,跳過已壓縮媒體。
選項 A:CLI 設定(推薦,精確控制) #
## 1.1 設定壓縮演算法(zstd:3 平衡速度與比率)
kopia policy set --global --compression-compressor=zstd:3
## 1.2 設定最小壓縮大小(20KB 以下跳過,節省 CPU)
kopia policy set --global --compression-min-size=20480
## 1.3 僅壓縮易壓縮副檔名(文字、程式碼、文件)
kopia policy set --global --compression-only-extensions \
"*.txt,*.log,*.json,*.xml,*.csv,*.yaml,*.yml,*.ini,*.conf,*.cfg,\
*.html,*.css,*.js,*.ts,*.py,*.java,*.c,*.cpp,*.h,*.sh,*.sql,\
*.docx,*.xlsx,*.pptx,*.md,*.sqlite"
## 1.4 跳過已壓縮或無效壓縮副檔名
kopia policy set --global --compression-disable-extensions \
"*.jpg,*.jpeg,*.png,*.gif,*.webp,*.mp4,*.mkv,*.mov,*.zip,*.rar,*.7z,\
*.gz,*.xz,*.iso,*.dmg,*.ova,*.vmdk,*.gpg,*.enc"
## 1.5 驗證策略
kopia policy show --global | grep -A 10 -i compression
選項 B:Kopia UI 設定(圖形化,適合初學者) #
在 Kopia UI → Repository → Policies → Global Policy → Compression 頁面:
1. 壓縮演算法 #
zstd:3
2. 最小壓縮大小(位元組) #
20480
3. 僅壓縮這些副檔名(每行一個,直接複製貼上) #
*.txt
*.log
*.json
*.xml
*.csv
*.yaml
*.yml
*.ini
*.conf
*.cfg
*.html
*.css
*.js
*.ts
*.py
*.java
*.c
*.cpp
*.h
*.sh
*.sql
*.docx
*.xlsx
*.pptx
*.md
*.sqlite
4. 不壓縮這些副檔名(每行一個,直接複製貼上) #
*.jpg
*.jpeg
*.png
*.gif
*.webp
*.mp4
*.mkv
*.mov
*.zip
*.rar
*.7z
*.gz
*.xz
*.iso
*.dmg
*.ova
*.vmdk
*.gpg
*.enc
效果:
- 文字檔壓縮率 > 70%
- 影片/圖片幾乎不壓縮 → 省 CPU
- 20KB 以下小檔直接儲存 → 快
2. Pushover 即時通知(成功/失敗皆提醒) #
Kopia v0.18.2+ 內建 Pushover 支援,無需腳本。
## 2.1 確認版本支援
kopia --version | grep -q "v0.1[8-9]\|v0.2" && echo "支援通知" || echo "請升級"
## 2.2 建立 Pushover 設定檔(前往 https://pushover.net 註冊)
kopia notification profile configure pushover \
--profile-name=pushover \
--user-key=YOUR_USER_KEY \
--app-token=YOUR_APP_TOKEN \
--format=txt \
--min-severity=success \
--send-test-notification
## 2.3 驗證設定檔
kopia notification profile list
# 應顯示:pushover (txt, min-severity: success)
## 2.4 手動快照測試通知
kopia snapshot create ~/Documents --notification-profile=pushover
## 2.5 UI 排程任務加入通知(Tasks → Edit Schedule)
# 在「Extra CLI arguments」欄位加入:
# --notification-profile=pushover
預期 Pushover 訊息:
Kopia Snapshot Complete Status: Success Errors: 0 Time: 2025-11-10T08:30:00Z Snapshot: kopia://view/snapshot/abc123
失敗範例:
Kopia Snapshot Failed Status: Failed Errors: 3
3. 開機自動啟動 WebDAV 服務 #
使用 launchd 確保 rclone serve 隨系統啟動。
## 3.1 建立 LaunchAgent 目錄
mkdir -p ~/Library/LaunchAgents
## 3.2 建立服務設定檔
cat > ~/Library/LaunchAgents/com.rclone.webdav.plist << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.rclone.webdav</string>
<key>ProgramArguments</key>
<array>
<string>/opt/homebrew/bin/rclone</string>
<string>serve</string>
<string>webdav</string>
<string>kopia2:kopia-repo</string>
<string>--addr</string>
<string>127.0.0.1:8080</string>
<string>--read-only</string>
<string>false</string>
<string>--vfs-cache-mode</string>
<string>writes</string>
<string>--log-level</string>
<string>INFO</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>/tmp/rclone-webdav.log</string>
<key>StandardErrorPath</key>
<string>/tmp/rclone-webdav.err</string>
</dict>
</plist>
EOF
## 3.3 載入服務
launchctl load ~/Library/LaunchAgents/com.rclone.webdav.plist
## 3.4 驗證服務運行
launchctl list | grep rclone
ps aux | grep rclone | grep -v grep
## 3.5 重新開機測試
# 重啟 Mac → 等待 30 秒 → 執行:
curl -s http://127.0.0.1:8080/.init
# 應回傳:init
4. 密碼安全管理(Keychain 整合) #
避免明文儲存儲存庫密碼。
## 4.1 將密碼存入 Keychain
security add-generic-password -a "kopia-repo" -s "kopia-repo" -w "$REPO_PASS" -U
## 4.2 移除明文檔案
rm ~/kopia-pass.txt
## 4.3 建立自動登入腳本
cat > ~/.kopiarerc << 'EOF'
export KOPIA_REPOSITORY="webdav:http://127.0.0.1:8080/"
export KOPIA_PASSWORD="$(security find-generic-password -s kopia-repo -w)"
EOF
## 4.4 載入環境變數
echo '[[ -f ~/.kopiarerc ]] && source ~/.kopiarerc' >> ~/.zshrc
source ~/.zshrc
## 4.5 測試無密碼連線
kopia repository status
# 應顯示儲存庫資訊,無需輸入密碼
5. 常見問題與排除 #
| 問題 | 解決方案 |
|---|---|
rclone: command not found |
確認 eval "$(/opt/homebrew/bin/brew shellenv)" 已加入 .zshrc |
context canceled |
檢查 rclone serve 是否在背景執行(加 &) |
| Pushover 無通知 | 確認 --notification-profile=pushover 已加入快照指令 |
| WebDAV 啟動失敗 | 查看 /tmp/rclone-webdav.err 日誌 |
| 密碼無法讀取 | 用 security find-generic-password -s kopia-repo -w 手動測試 |
6. 完整自動化流程總結 #
# 1. 系統啟動 → launchd 啟動 rclone serve
# 2. Kopia UI 開啟 → 自動讀 Keychain 密碼
# 3. 排程快照執行 → zstd 選擇性壓縮
# 4. 快照完成 → Pushover 即時推播
# 5. 99元/年,20T 容量,AES-256 加密
系列完結 #
恭喜!你已建構一套 高性價比、高安全、高自動化 的雲端備份系統:
- 成本:99元/年
- 容量:20TB
- 加密:AES-256 + HMAC-SHA256
- 工具:Kopia + Rclone + macOS 原生
- 監控:Pushover 即時通知
這不僅是備份,更是一套可複製、可擴展的企業級架構。
如需進階功能(如多設備同步、版本控制、災難復原),歡迎留言討論!