在Linux電腦存取Apple iCloud雲碟,同步來自iPhone、iPad、Mac的檔案。打破Apple壁壘!
目的是要達到類似Windows版iCloud客戶端的效果,即在Linux電腦檢視iCloud檔案,還有將iCloud郵件與行事曆整合到Linux桌面,讓我們能跨裝置工作。
你可能會說,iCloud網頁版就夠用了,為什麼要用同步的呢?確實啦,iCloud雲碟、照片、郵件、行事曆、備忘錄、iWork套件都有網頁版,實無將檔案同步到電腦的必要。
但總有人喜歡這樣檔案隨手可得的感覺,檔案同步到本機之後,要用其他程式編輯比較方便嘛。
還有,若有重要檔案放在iCloud的話,自行用程式備份到Linux伺服器也是一個保險措施。
1. iCloud有Linux版客戶端嗎?#
沒有。目前Apple沒有支援Linux的打算,畢竟他們連Linux版iTunes都不願意推出,逼人得用libimobiledevice才能在Linux查看iPhone的檔案。
我在Ubuntu的Snap Store看到了Marcus Tomlinson開發的iCloud for Linux程式,不過這並沒有將檔案同步到Linux本機的作用,它只是封裝了iCloud網頁版而已!
能不能跑Windows版的iCloud呢?根據Wine資料庫顯示,Windows版iCloud客戶端或許可以透過Wine執行。
不過我不打算這樣做,而是透過第三方程式來存取iCloud。我主要會用到的程式是Rclone和Tnhunderbird。
2. 同步iCloud檔案到Linux#
我把iCloud跟iCloud照片分開講,因為他們是不同的服務。
iCoud只會顯示iOS的下載資料夾、iWork、捷徑、GarageBand的檔案,還有其他APP透過iCloud同步的檔案。不包含iOS的照片。
安裝Rclone。它是一款支援掛載Google Drive、OneDrive、Dropbox、iCloud的多功能程式。
根據iCloud Drive - Rclone Docs說明,Rclone不支援iCloud進階資料保護功能,有開啟的話請先將其關閉。
新增iCloud設定檔,輸入Apple ID和密碼,然後依照指示輸入輸入雙重認證驗證碼。
rclone config
No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> iclouddrive
Storage> iclouddrive
apple_id>輸入Apple ID
Enter the password: 輸入Apple ID密碼
password:
Confirm the password:
password:
Option config_2fa.
Two-factor authentication: 輸入雙重認證驗證碼
這樣就完成登入了。登入有效期限是一個月
測試看看能不能列出iCloud雲碟的檔案。
rclone ls icloudrive:/
- 用以下指令新增Systemd服務,透過rclone mount,設定開機自動掛載iCloud雲碟到
/run/media/user/iCloud
。啟用vfs-cache-mode檔案快取。
sudo mkdir -p /run/media/user/iCloud
sudo chown 1000:1000 /run/media/user/iCloud
cat <<EOF > ~/.config/systemd/user/rclone-mount.service
[Unit]
Description=Rclone mount service
After=network.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/bin/rclone mount "iclouddrive:/" "/run/media/user/iCloud" --vfs-cache-mode full
ExecStop=/usr/bin/fusermount -u /run/media/user/iCloud
Restart=on-failure
RestartSec=5
[Install]
WantedBy=default.target
EOF
systemctl --user daemon-reload
systemctl --user enable --now rclone-mount
- rclone mount指令比較像是瀏覽iCloud雲碟的目錄,並不會一次下載全部檔案。如果要一次備份所有iCloud的檔案到本機,請改用rclone copy指令,例如使用以下指令,將iCloud的全部檔案下載並備份到
/home/user/Documents/iCloud
目錄。
rclone copy -v "iclouddrive:/" "/home/user/Documents/iCloud"
3. 同步iCloud照片到Linux#
Rclone尚未支援iCloud照片。
折衷方案是使用這個icloudpd。它只能下載iCloud照片,無法上傳。
- 這個工具可以透過pipx安裝
sudo apt install pipx
pipx install icloudpd
- 用以下指令,登入iCloud帳號,輸入密碼和雙重步驟驗證碼,並將照片下載到目前所在目錄的
/data
目錄。
mkdir data
icloudpd --directory ./data --username "填入Apple ID"
4. 同步iCloud郵件、行事曆、通訊錄#
這些東西透過Mozilla Thunderbird一個程式就可以搞定。
iCloud支援IMAP與SMTP協定,因此Thunderbird能夠收到信件。此外iCloud還有CardDAV協定,這之中便包含了行事曆與通訊錄的資訊。
安裝Linux版Thunderbird,建議使用原生套件,不要用Flatpak。
根據Apple官網指示,登入Apple帳號,新增一組「APP專用密碼」。
開啟Thunderbird,點選帳號設定 → 伺服器設定,新增Apple的IMAP伺服器,填入APP專用密碼。
在SMTP伺服器設定,新增Apple的SMTP伺服器,再次填入APP專用密碼,驗證方式請用SMARTTLS。
然後登入iCloud郵件帳號(可能跟你的Apple帳號不一樣)。
順便將iCloud的行事曆與通訊錄同步過來。
5. Linux桌面顯示iCloud行事曆#
上面加入的iCloud行事曆只有Thunderbird內部看得到,能不能顯示在桌面環境的呢,譬如GNOME或者KDE Plasma桌面的行事曆元件?
這有二種思考方向:看是要將Thunderbird的iCloud行事曆同步到桌面,還是另外透過桌面環境的套件同步iCloud行事曆。
GNOME#
GNOME 47版本可以從GNOME行事曆新增iCloud行事曆。
開啟GNOME行事曆 (ganome-calendar)
點左上角 行事曆 → 管理行事曆 → 新增行事曆
伺服器位址輸入
https://caldav.icloud.com
輸入iCloud郵件帳號,還有APP專用密碼
這樣子GNOME行事曆便會出現iCloud行事曆了,可以編輯修改,也會同步顯示在GNOME桌面上方的通知欄。
KDE Plasma#
KDE Plasma 6的Akonadi支援CalDAV協定,理論上應該是能連線的才對…但是我連線會出現錯誤,可能是bug。
安裝KOrganizer套件。
點選左下角的行事曆,新增行事曆
選取DAV群組資源
輸入iCloud郵件帳號與APP自訂密碼,並勾選手動設定網址。
遠端網址輸入iCloud行事曆的網址
https://caldav.icloud.com
如果要讓iCloud行事曆顯示在桌面右下角的行事曆:右鍵 → 設定數位時鐘,顯示行事曆事件,並勾選顯示個人行事曆
6. 同步iCloud書籤到Linux瀏覽器#
將Safari瀏覽器的書籤密碼,與Linux的瀏覽器同步。
雖然Apple官方有推出瀏覽器擴充套件,支援Firefox與Chromium瀏覽器,但是需要Windows版iCloud客戶端才能使用。
建議改用第三方服務管理書籤和密碼,譬如Floocus和Bitwarden。
7. 其他iCloud服務?#
乖乖用網頁版吧。
另請參見:
用於存取iOS裝置檔案的開源工具libimobiledevice