icloudpd iCloud照片本地备份实操从首次认证到定时同步【免费下载链接】icloud_photos_downloaderA command-line tool to download photos from iCloud项目地址: https://gitcode.com/GitHub_Trending/ic/icloud_photos_downloader你手里的 iCloud 照片库攒了上万张照片分散在几部手机里而你想把它们合并进一块本地硬盘做一次完整备份往后再定期补上增量。icloudpd 就是一个从 iCloud 照片库下载全部照片与视频的命令行工具下面按完成这件事的先后顺序讲清认证、运行和长期同步的做法。 先划清边界它做什么与不做什么它做什么它不做什么对谁不适用批量下载照片库中的照片与视频支持 Live Photos、RAW含 RAWJPEG不下载 iCloud Drive、邮件等其他数据目标是备份 Drive 文档的人Copy、Sync、Move 三种模式增量运行时跳过已有文件不做格式转换、相册整理、本地编辑需要 HEIC 转码或批量重命名的人常驻轮询新增2FA 过期时发邮件提醒单线程顺序处理无法靠线程数提速期望多线程大幅加速的人第三行值得多说一句--threads-num参数在现行版本里已标记废弃且恒为 1网上旧教程里加线程提速的说法不适用。 环境与最短路径安装、前置条件与认证安装只需一条命令pip install icloudpd这条命令从 PyPI 装好icloudpd命令习惯容器的人可用官方镜像icloudpd/icloudpd跑 Docker也可用 npx 直接执行。Windows 上先pip install icloudpd --user再把安装结束时显示的 Scripts 目录加入 PATH。跑之前账号设置上有几项前置条件逐条核对iPhone 上开启在网页上访问 iCloud 数据设置 Apple ID iCloud关闭高级数据保护否则服务器直接返回 ACCESS_DENIED若账号开了两步验证首次运行需接收并输入验证码大陆账号加全局参数--domain cn社区反馈效果不一装完后先做认证测试它只建立会话、不下载任何东西icloudpd --username 你的邮箱 --password 你的密码 --auth-only这条命令验证账号并把会话存在本地之后运行不再需要输密码直到两步验证过期Apple 目前的周期约两个月。 一条命令跑通默认命令与两个微调变体覆盖大多数场景的默认命令只有两个参数icloudpd --directory 备份目录 --username 你的邮箱参数说明--directory本地下载目录--usernameApple ID 邮箱默认 Copy 模式只取本地没有的文件首次运行可能要输密码和验证码默认按年/月/日子目录存放跑完一轮整个照片库就在本地了之后再跑只会补上新增的部分。两个按需微调的变体。先用最近 100 张照片试跑、跳过视频验证链路没问题icloudpd --directory 备份目录 --username 你的邮箱 --recent 100 --skip-videos正式下载前想先看看会动哪些文件加--dry-run空跑一次它不修改本地系统也不改动 iCloudicloudpd --directory 备份目录 --username 你的邮箱 --dry-run 三档进阶偶尔跑一次、定期同步、长期常驻偶尔跑一次只补新增文件时--until-found 10比--recent更准——它从最新加入的文件开始下直到连续遇到 10 个已下载的文件才停icloudpd --directory 备份目录 --username 你的邮箱 --until-found 10定期同步交给 cron在crontab -e里加一行每天凌晨三点补一次增量0 3 * * * icloudpd --directory 备份目录 --username 你的邮箱 --until-found 10仓库里附了带防重复运行逻辑的 cron 脚本样例见 examples/cron_script.sh.example。长期常驻加--watch-with-interval 3600让进程每小时循环拉取配合 SMTP 参数后两步验证过期时否则备份会静默失效你会收到邮件icloudpd --directory 备份目录 --username 你的邮箱 \ --watch-with-interval 3600 \ --smtp-username smtp邮箱 --smtp-password smtp密码 \ --notification-email 通知收件邮箱用 Gmail 发信需要先开启两步验证并生成 App Password细节在 docs/authentication.md。 故障速查三个高频错误的定位与修复登录即报 ACCESS_DENIED 或认证失败→ 定位服务器在拒绝账号原因几乎都在设置里。修复在 iPhone 上确认高级数据保护已关、在网页上访问 iCloud 数据已开改完重跑。首次运行报 Bad Request (400)→ 定位该账号此前没用过 iCloud 接口Apple 服务器需要时间准备照片清单。修复等 5–10 分钟后重跑同一命令超过 30 分钟仍如此把完整输出提交到项目 issue。之前正常、现在提示凭据无效→ 定位本地会话过期或密码改过。修复删除用户主目录下的~/.pyicloud目录再跑一次本文的--auth-only命令重建会话。长尾提示一并放在这里群晖 NAS 上容器报Failed to execv()时用 SSH 执行sudo mount /tmp -o remount,exec规避更多机型对照见 docs/nas.md。 项目内资源索引docs/install.mdDocker、PyPI、AUR、npm 四种装法及各系统注意事项docs/mode.mdCopy、Sync、Move 三种模式的差异与对应参数docs/raw.md--size与 RAW、原始尺寸的配合方式src/icloudpd/download.py核心下载逻辑想读代码从这里入手CONTRIBUTING.md提 issue 与参与贡献的路径收尾接下来只做一件事按本文的变体命令跑一次--recent 100 --skip-videos跑完打开备份目录确认文件确实落位、日期目录结构正确。确认无误之后再决定它是留在偶尔跑一次这一档还是升级成定时任务或常驻进程。【免费下载链接】icloud_photos_downloaderA command-line tool to download photos from iCloud项目地址: https://gitcode.com/GitHub_Trending/ic/icloud_photos_downloader创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考