可能有多種原因想要將 iOS 裝置備份到 iCloud 以外的其他位置。
這篇文章介紹瞭如何透過命令列透過 USB 或 WiFi 將 iOS 裝置手動備份到本地 IPFS 節點。
可用指令碼:Github 上有一個指令碼可以自動完成此過程。
如想備份,你需要以下
- 基本的 IPFS 概念知識
- 基本命令列知識
- iOS 裝置
- 本地執行的 IPFS 節點
- Mac,Linux 或 Windows 計算機*
*此功能僅在 Mac 上經過測試,但是依賴項應可在所有平臺上使用
設定專用IPFS節點
重要說明:強烈建議使用私有 IPFS 節點。遵循本教程將對備份進行加密,但不會對備份的後設資料進行加密。此後設資料包含潛在的敏感資訊,包括電話號碼和裝置上安裝的應用程式列表。有關更多資訊,請參見此問題。
確保 IPFS 節點僅連線到您信任的對等節點,將防止未加密的後設資料可供公共 IPFS 網路上的其他使用者使用。有關專用網路的更多資訊,請參閱此。
- 簡單地生成群金鑰
- go get http://github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen
- ipfs-swarm-key-gen > ~/.ipfs/swarm.key
- 並從引導列表中刪除所有對等
- ipfs bootstrap rm --all
這將建立一個私有網路,其中您的本地節點是唯一成員。
安裝依賴項
唯一需要的依賴項是 libimobiledevice,這是一個跨平臺的庫,支援與 iOS 裝置的通訊。
- 安裝
macOS 最簡單的安裝方法是使用 Homebrew。該軟體包已經有一段時間沒有正式釋出了。建議從最新版本 HEAD 開始安裝,以避免已解決的問題。
- brew install libimobiledevice --HEAD
- 從源編譯
如果 Homebrew 解決方案在 macOS 上不起作用,或者在 Linux 或 Windows 上安裝,則需要從原始碼編譯軟體包。可以在此處找到構建說明。
- 啟用 WiFi 備份
在撰寫本文時,HEAD不支援透過WiFi執行備份。所以需要透過一個簡單的更改開啟了PR,以啟用此功能。如果仍然沒有合併,並且您想使用WiFi,請嘗試從此fork構建。
配對您的裝置
安裝 libimobiledevice 之後,第一步是檢視是否可以發現您的裝置。
- idevice_id -l -n
這將搜尋並列出透過USB或WiFi連線的所有裝置的裝置識別符號。
如果您從未將此裝置連線到計算機,則可能需要先將其配對。透過執行檢視裝置是否已配對
- idevicepair -u $DEVICE_UDID validate
如果未配對,則啟動配對過程
- idevicepair -u $DEVICE_UDID pair
您應該在裝置上看到一個對話方塊,要求“信任此計算機”。選擇“信任”,並在出現提示時輸入密碼。
如果需要區分多個連線的裝置,請嘗試使用獲取有關裝置的更多資訊ideviceinfo。例如,
- ideviceinfo -u $DEVICE_UDID -k DeviceName
將列印出裝置名稱。
啟用加密
強烈建議在執行備份之前啟用加密。
- idevicebackup2 -u $DEVICE_UDID encryption on -i
應該提示您輸入備份密碼。此加密使用 Apple 提供的標準 iTunes 備份加密。有關更多詳細資訊,請參閱《Apple平臺安全性指南》。
執行備份
現在,我們將備份到本地檔案系統。您需要指定一個 BACKUP_PATH。這裡有兩種不同的方法可供選擇:
- BACKUP_PATH 臨時備份並作為塊複製到 IPFS(速度較慢)
- BACKUP_PATH 永久備份並透過檔案儲存新增到 IPFS(更快)
- 選項 1 是一個簡單的解決方案
它使用您可能熟悉的普通 IPFS 使用模式。但是,這將導致整個備份儲存到本地檔案系統,然後複製到IPFS。我發現如果您改用檔案儲存,效能會大大提高。
- 選項 2 使用檔案儲存
這是一項實驗性功能,它允許 IPFS 引用要新增的檔案而不是複製它們。因為我們正在處理如此大的檔案,所以這將大大提高效能。但是,請注意,備份必須永久存在於本地檔案系統上的某個位置。如果以任何方式修改這些檔案,事情將會中斷。
您可以透過更改 IPFS 配置來啟用檔案儲存:
- ipfs config --json Experimental.FilestoreEnabled true
現在,執行備份
- idevicebackup2 -u $DEVICE_UDID backup $BACKUP_PATH
這可能要花點時間。
將備份儲存到IPFS
備份完成後,我們現在可以將其新增到 IPFS。如前所述,有兩種選擇。
- 選項1
將備份複製到 IPFS
ipfs add -r "${BACKUP_PATH}/${DEVICE_UDID}"
清理臨時備份
rm -r $BACKUP_PATH
- 選項2
使用以下方法將備份新增到IPFS檔案儲存中 --nocopy
ipfs add --nocopy -r "${BACKUP_PATH}/${DEVICE_UDID}"
跟蹤備份
將備份新增到 IPFS 後,我發現使用 MFS(可變檔案系統)跟蹤不同的備份很有用。我 ios-backups 在 MFS 的根目錄下保留了一個目錄。
ipfs files mkdir /ios-backups
該目錄包含一個以命名的檔案列表,DEVICE_UDID 其內容是該裝置最新備份的 CID。
echo "${CID}" | ipfs files write --create /ios-backups/${DEVICE_UDID}
非常感謝您對 IPFS&Filecoin 專案的持續支援。我們很高興繼續與您一起,為人類資訊建立一個強大的,去中心化和高效的基礎。