如何把 iCloud 照片一次性下载到本地:icloudpd 快速上手
【免费下载链接】icloud_photos_downloaderA command-line tool to download photos from iCloud项目地址: https://gitcode.com/GitHub_Trending/ic/icloud_photos_downloader
手机存储逼近上限,或者你担心只存在 iCloud 里的照片哪天账号出状况就没了,就需要把云端照片完整搬到本地。icloudpd 是一款开源命令行工具,能把 iCloud 照片库中的所有照片和视频批量下载到本地磁盘或 NAS,无图形界面、无需订阅,支持 Linux、macOS 和 Windows。
icloudpd 是什么
它是一个通过 iCloud 网页接口批量拉取照片库的纯命令行工具,解决的问题是:把云端照片拿到自己机器上,并让这件事持续自动发生。关键点:
- 跨平台:Linux、macOS、Windows 均可运行,笔记本、台式机、NAS 都能跑
- 自动化友好:纯 CLI、无窗口,天然适配 cron、Docker、CI 脚本
- 可自托管:pip、Docker、npm 都能装,也可直接运行官方二进制
- 开源、志愿者维护,约每周发布一次版本
5 分钟跑通第一次下载 🚀
最短路径:装一次、跑一条命令、看到照片落到目录里。
先做的账号设置
运行前在 iPhone 的「设置 → Apple 账户 → iCloud」里确认两个开关,否则 Apple 服务器会直接返回 ACCESS_DENIED:
- 开启「在网页上访问 iCloud 数据」
- 关闭「高级数据保护」
安装并运行
pip install icloudpdicloudpd --directory /data --username you@example.com终端会提示输入密码,开了两步验证的还会要验证码。跑完后 /data 目录里会出现新下载的照片和视频,会话信息保存在 ~/.pyicloud,之后运行不用再输密码。
三种模式与关键参数
先想清楚它该以什么角色对待云端,开关只有一个参数:
| 你的需求 | 模式 | 开启方式 |
|---|---|---|
| 只留本地副本,不动云端 | 复制(默认) | 不加参数 |
| 本地与云端保持镜像 | 同步 | 加 --auto-delete |
| 释放 iCloud 空间,只留最近 N 天 | 移动 | 加 --keep-icloud-recent-days 30 |
icloudpd --username you@example.com --auto-delete icloudpd --username you@example.com --keep-icloud-recent-days 30第一行是同步模式,下载新照片的同时删除本地已不在 iCloud 的文件;第二行是移动模式,把已下载的文件从 iCloud 移入「最近删除」,设 0 则全部删除。开启后两种模式前,建议先加 --dry-run 跑一遍:它只汇报将发生的变更、不实际动文件,让你先确认范围。
格式覆盖日常需求:Live Photo 的图片与视频分开保存,RAW 以 RAW+JPEG 成对下载,视频保持原始格式;大小默认 original,用 --size 可换 medium 或缩略图。去重是内置的:本地已存在的同名文件会自动跳过,重复运行只拉新增内容。
三个即拿即用的场景
同一套参数,三种组合,覆盖最常见的三类需求:
家庭照片归档到 NAS
在家庭服务器上常驻运行:--directory /volume1/photos --watch-with-interval 3600,每小时检查一次新照片,有则下载。效果:全家人的手机照片自动落到 NAS,不需要任何人工操作。
创作者的原始文件工作流
用--dry-run先查看将下载哪些文件,确认无误再正式跑;加上--set-exif-datetime会把拍摄时间写回图片 EXIF(仅在缺失时填充)。RAW 与 JPEG 成对到手,素材落盘即可用。
团队共享库同步
先--list-libraries查看账户能访问哪些库,再用--library指定共享库名称下载。效果:成员上传到共享相册的素材同步到服务器公共目录,每个人拿到的都是最新源文件。
常见报错速查
四类情况覆盖了第一次运行的绝大多数坑,按现象对号入座:
| 现象 | 原因 | 处理 |
|---|---|---|
| 首次运行报 Bad Request (400) | 账户从未用过网页 API,Apple 还在准备照片数据 | 等 5-10 分钟重试;30 分钟后仍失败,保留完整输出去求助 |
| ACCESS_DENIED | 未开启「在网页上访问 iCloud 数据」或「高级数据保护」是开着的 | 按前文账号设置一节检查后重跑 |
| 反复要求输验证码 | 两步验证会话过期,Apple 的间隔约两个月 | 重新认证;配置 --smtp-username 与 --smtp-password 可收到过期邮件提醒 |
| 认证始终失败 | 旧的会话文件残留 | 删除 ~/.pyicloud 目录后重新认证 |
让机器持续干活
- 定时任务:cron(Linux/macOS)或 Windows 任务计划程序按小时或按天触发,仓库自带 examples/cron_script.sh.example,含防止重复启动的逻辑,改好参数即可用。
- 容器:Docker 运行官方镜像并把本地目录挂载到 /data,参数细节见 docs/install.md。
- NAS:docs/nas.md 给出 TrueNAS、群晖等部署示例;无头设备可加
--password-provider webui --mfa-provider webui,在浏览器里输密码和验证码。
从这里开始
今天你要做的只有两件事:完成账号侧的两个开关,再跑一条安装命令,把第一批照片拿到本地。默认复制模式最稳妥;决定开同步或移动模式之前,先用 --dry-run 验证一遍。
官方文档:docs/index.md,全部参数:docs/reference.md,核心源码:src/icloudpd/
【免费下载链接】icloud_photos_downloaderA command-line tool to download photos from iCloud项目地址: https://gitcode.com/GitHub_Trending/ic/icloud_photos_downloader
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考