一日一技 | 使用 Docker 为 iCloud 照片生成本地备份
Matrix 首页推荐
Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。
文章代表作者个人观点,少数派仅对标题和排版略作修改。
由于家人的照片视频太多,我目前开了 2TB 的 iCloud 套餐。在开 iCloud 套餐之前我尝试过使用 QNAP 的 Photo 应用,但是终究没有 iCloud 方便——原图上传 iCloud,手机保留缩略图,随时可以点开来看太香了,缺点就是有点贵。
接下来这套方案在日常使用没什么问题,但最好本地可以备份一份原图。一来可以避免苹果服务器宕机(这种可能性很低),二来未来有更经济的方案可以随时进行迁移,三来也是为了照片的安全。
本方案需要使用到 Docker 服务,我自己是部署在 QNAP 的 NAS 上面的,所以接下来我会以 QNAP 来打样。如果你有群晖、树莓派、闲置的电脑理论上都是可行的。
前置准备工作
- 关闭 iCloud 账户的 ADP 功能(高级数据保护)。开启这个功能会限制使用 iCloud 网页,导致无法实现方案中备份效果,如果你非常重视端到端加密等措施,不愿意关闭此功能就此打住不用折腾了。关闭这个功能后可能需要等待一周左右的时间,才会生效,因为苹果服务器需要时间去解密数据。
- 创建一个名为「.mounted」的隐藏文件,以下简称「挂载文本」。你可以先创建一个名为「.mounted.txt」的文本文件,然后删除掉后缀名,就是一个 0kb 的文件。
- 安装好 Docker 服务并且确保可以运行。
正式安装
创建文件夹(假设登录的用户名:张三)
创建用于储存配置文件的文件夹 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
两个变量后再启动。
成功开始备份
> 关注 少数派小红书,感受精彩数字生活 🍃
> 实用、好用的 正版软件,少数派为你呈现 🚀
© 本文著作权归作者所有,并授权少数派独家使用,未经少数派许可,不得转载使用。