大家好,我是羊刀仙。
用iPhone的各位,想必也跟我一样,照片、视频都习惯存在iCloud中?其实除了需要付费扩容以及早年的后门事件,iCloud是真的挺方便好用。
不过虽然iCloud提供了方便的在线存储,但在我们需要本地备份或跨设备管理这些数据时,手动下载和同步显得极其繁琐且耗时。尤其是在购买NAS之后,这几年甚至十几年积攒的照片想要转移备份至NAS,想想简直头痛欲裂。
可喜可贺的是,iCloudPD这款开源工具可以帮助我们轻松解决这个问题,作者也正是出于个人需求才进行的项目开发。
iCloudPD特点
iCloudPD 用于 iCloud 照片下载器的 Alpine Linux Docker 容器。用它来将家中所有iDevices的照片流同步回服务器,因为这是将多个设备备份到一个位置的唯一方法。它使用系统密钥环来安全地存储凭据,具有HEIC到JPG的转换功能,并且可以发送Telegram,Prowl,Pushover,WebHook,DingTalk,Discord,openhab,IYUU和WeCom通知。请注意,不支持 Apple 的高级数据保护 (ADP)。必须禁用 ADP 才能使此容器正常工作。
自动化下载:iCloudPD可以设置为定期自动从iCloud下载新的照片和视频,确保你本地的备份始终是最新的。
支持文件同步:该工具可以与各种文件同步服务(如Nextcloud、Syncthing)结合使用,方便地将下载的照片和视频同步到其他设备或备份位置。
灵活配置:iCloudPD提供了多种配置选项,包括选择下载文件的日期范围、文件类型等,使用户可以根据自己的需求进行个性化设置。
支持Docker部署:iCloudPD可以作为Docker容器运行,方便在各种环境中部署和管理,特别适合服务器和NAS设备。
低资源消耗:该工具设计得非常轻量,对系统资源的消耗较低,不会显著影响系统性能。
多账号支持:iCloudPD支持同时下载多个iCloud账号的照片和视频,适合家庭或团队使用。
日志和通知:iCloudPD可以生成详细的日志,并支持通过电子邮件或其他通知方式提醒用户下载进度或出现的错误。
部署流程
准备文件目录
打开文件总管,准备好文件目录用于后续挂载。
我这里的路径分别为/share/Container/iCloud/config
和/share/iCloud
,具体如下图所示:
接着需要我们在PC端创建一个 .mounted 文件,把它丢进上面的/share/iCloud
目录下,.text
记得要删掉,如下图:
或者直接使用威联通的神器Text Editor进行创建:
开始部署
代码如下,老手可以直接拿去部署:
version: '3'
services:
icloudpd_boredazfcuk:
image: boredazfcuk/icloudpd
container_name: iCloudPD
hostname: icloudpd_boredazfcuk
restart: always
environment:
- TZ=Asia/Shanghai # 你所在的地区时区
- apple_id=xxx # 必填项目,你的苹果ID
- download_path=/iCloud # 将文件从iCloud下载到的目录
- icloud_china=True # 国内ID用户,将icloud.com.cn作为下载源
- auth_china=True # 同上,使用icloud.com.cn来生成cookie
volumes:
- /share/Container/iCloud/config:/config # 存储身份验证cookie
- /share/iCloud:/iCloud
默认24小时同步一次,如需设置其他同步频率,请添加变量:
- synchronisation_interval=10 # 同步间隔,单位秒,默认24小时
- skip_check=True # 若果相册内容特别多(有几千张),检能会出现问题,建议开启跳过对新文件的检查
如果咱们有更多需求(包括信息推送、多苹果ID账户使用、HEIC转JPG等),可移至项目源站查看:https://github.com/boredazfcuk/docker-icloudpd/blob/master/CONFIGURATION.md
打开Container Station,创建新的应用程序:
最近Docker镜像问题影响范围很大,解决办法可以参考这篇:
https://blog.ydxian.xyz/archives/dockerpull
iCloud验证
部署完毕后,查看运行日志如下图所示,点击上面的执行
,没有执行选项就返回主页重新进入:
接着选择/bin/sh
,再次点击执行
,如下图所示:
我们输入以下命令并回车:
sync-icloud.sh --Initialize # 初始化容器,将引导完成将密码添加到容器的密钥环
具体如下图所示:
稍微等一会,便会看到要我们输入苹果ID密码,跟ssh登陆类似,密码不会显示于终端界面,输入完毕后回车即可:
会出提示是否保存密码到keyring文件,输入y
并回车。
接着我们来进行一步步操作,操作会重复两次:
打开苹果设备,会有弹窗提示登录验证,点击允许;
接着提示输入验证码并回车;
完整过程如下图所示,出现结尾的提示则证明成功:
注意:本地保存的cookie有效期只有90天,90天后需要再次手动进行登陆验证。
我们重新启动容器,再次回到日志界面查看,出现同步动作便证明成功:
正在下载同步,等差不多结束我们再去NAS文件夹查看,可以看到已经下载了一部分:
完全OK了!默认是按照年-月-日进行自动分组,如果想以相册或别的形式,可在环境变量中自行修改:
这样一来就可以减配iCloud,以后有新的照片、视频通过Qfile设置自动同步到威联通NAS就OK啦!
部分问题
有概率会遇到
ERROR:invalid value for '-d' / '--directory': path '/icloud' is not readable
或提示/iCloud
不存在,通过/bin/sh
进入终端,然后输入指令chmod 777 /iCloud
赋权可解决问题。
ERROR:keyring file does not exist. please try again
在创建容器时auth_china=true
和icloud_china=true
这俩先不填写,当遇到上述报错时,暂停容器添加这两个变量后再启动。
最后
以上就是今天给大家分享的全部内容,如果你觉得不错还请多多收藏,顺便点点关注,我后续还会继续分享各类芝士好物干货,咱们下期再见!
感谢观看,本文完~
评论区