
由於家人的照片影片太多,我目前開了 2TB 的 iCloud 套餐。在開 iCloud 套餐之前我嘗試過使用 QNAP 的 Photo 應用,但是終究沒有 iCloud 方便——原圖上傳 iCloud,手機保留縮略圖,隨時可以點開來看太香了,缺點就是有點貴。
接下來這套方案在日常使用沒什麼問題,但最好本地可以備份一份原圖。一來可以避免蘋果伺服器宕機(這種可能性很低),二來未來有更經濟的方案可以隨時進行遷移,三來也是為了照片的安全。
本方案需要使用到 Docker 服務,我自己是部署在 QNAP 的 NAS 上面的,所以接下來我會以 QNAP 來打樣。如果你有群暉、樹莓派、閒置的電腦理論上都是可行的。
▍前置準備工作
-
關閉 iCloud 賬戶的 ADP 功能(高級數據保護)。開啟這個功能會限制使用 iCloud 網頁,導致無法實現方案中備份效果,如果你非常重視端到端加密等措施,不願意關閉此功能就此打住不用折騰了。關閉這個功能後可能需要等待一周左右的時間,才會生效,因為蘋果伺服器需要時間去解密數據。
-
創建一個名為「.mounted」的隱藏文件,以下簡稱「掛載文本」。你可以先創建一個名為「.mounted.txt」的文本文件,然後刪除掉後綴名,就是一個 0kb 的文件。
-
安裝好 Docker 服務並且確保可以運行。
▍正式安裝
創建文件夾(假設登錄的用戶名:張三)
創建用於儲存配置文件的文件夾 config,存放位置與名稱隨意。

config 文件夾位置
創建用於儲存照片的文件夾 iCloud,存放位置與名稱隨意。我是在一個硬盤的根目錄下直接創建的。

儲存照片的文件夾
將「掛載文本」移入 iCloud 文件夾內。
創建容器
由於 Docker 伺服器被隱藏,所以大家可能比較難獲取boredazfcuk/icloudpd的 Docker 鏡像。假設你已經使用電腦端的 DockerDesktop 獲取到了鏡像並導出了,那接下來可以進行 QNAP 的鏡像導入。
鏡像導入

鏡像導入路徑

導入狀態
生成容器

點擊紅框創建

填寫名稱且進行高級設置

修改環境變量

刪除原來的設置

重新選擇路徑

重新掛在儲存
點擊創建運行,等待十幾秒中中停止運行。此時,為 QNAP 指定的 config 文件夾會出現一個「icloudpd.conf」,接下來我們就開始進行設置。
▍選項的配置與解析
icloudpd.conf 的配置



user_id 與 group_id 的確認
此時使用「張三」需要登陸 QNAP 的 ssh,然後輸入 `id`,就會顯示這兩個 id 值。它們會用來解決後面可能遇到的權限問題,非常重要!
至此保存 icloudpd.conf 文件。只要接下來初始化就可以使用了。
▍初始化
進入容器的命令窗口



輸入初始化代碼:sync-icloud.sh --Initialize
進行兩次驗證登錄並寫入本地密碼文件
保存密碼到 keyring 文件
剛開始需要等待兩分鐘檢查更新,然後會詢問是否寫入 keyring 文件,此時選擇「yes」。隨後開始要求輸入 Apple ID 的密碼,界面是沒有顯示的,輸入完成後回車確認即可。等待一會應該會要求進行驗證碼驗證。這個登錄的過程會持續兩次。
▍問題排錯
ERROR:invalid value for '-d' / '--directory': path '/icloud' is not readable
權限問題,處理方案有兩種:
-
進入容器的執行界面,如何進入可以參考上文。然後運行`chmod 777 /iCloud`;
-
在之前的 conf 文件中設置好對應的「張三」的 id 和 group_id 後,確保張三對 QNAP 文件夾有權限寫入
ERROR:keyring file does not exist. please try again
-
第一次啟動就設置「true」導致的,先暫停容器,設置auth_china=true和icloud_china=true兩個變量後再啟動。
▍成功開始備份

成功備份