外接存储
| 类型 | 通过 iOS「文件」访问本地或外接文件系统 |
|---|---|
| 认证 | iOS 安全范围访问授权 |
| 适用场景 | 外接硬盘和兼容的「文件」提供方 |
| 容量 | 在提供方暴露时读取可用容量和总容量 |
| 限制 | 可用性取决于 iOS 是否持续保留对所选卷或提供方的访问 |
外接存储、SMB、WebDAV、SFTP、S3 兼容存储桶、OneDrive、Dropbox 或 Google Drive。
备份、下载、补全按月份处理。
同步远端索引后开始任务,需要时可暂停或继续。
一次购买,非订阅。
| Item | 免费版 | Pro |
|---|---|---|
| 价格 | ¥54 约 2 杯喜茶 | |
| 前台备份 | ✓ | ✓ |
| 节点 | 1 | 无限制 |
| 投递模式发送上限 | 3 项 | 无限制 |
| 后台自动备份 | ✓ | |
| 画中画进度 | ✓ | |
| 专注模式 | ✓ |
App确实是开源的,用户可以直接在Xcode上编译App。内购付费用于支持持续开发、维护和更新,让App可以长期为用户提供更好的服务。
不会持续扣费。Pro 是一次性购买,购买后终生可用。更换设备后,可以通过「恢复已购」恢复权益。
节点是你在 App 里添加的一个存储连接,可以是外接存储、SMB、WebDAV、SFTP、S3 兼容存储桶、OneDrive、Dropbox、Google Drive,也可以是 Watermelon Link 会话。
节点所需的凭据保存在 iOS Keychain 中,不会写入诊断日志。OneDrive 的令牌由 MSAL 管理。对于 Dropbox 和 Google Drive,刷新令牌保存在 Keychain;短期访问令牌仅保存在内存中。
「备份」是把本机照片和视频原件写入当前节点;「下载」会在条件允许时从节点取回已备份内容并导入「照片」;「补全」会先备份、再下载:先把本机有但节点缺失的内容备份到节点,再尽量把节点有但本机缺失的内容下载回「照片」。
西瓜备份会把 Live 图相关的静态图和配套视频作为资源保存,并在还原时使用系统「照片」的导入路径。最终效果取决于这些资源是否完整存在。
备份基于原始资源,而不是导出的预览图。拍摄时间、EXIF 等嵌入元数据,会由原始资源和 iOS「照片」导入路径共同决定。
这可能是正常现象,不一定代表照片或视频丢失。西瓜备份会按月份备份,并用内容 hash 判断重复内容。同一个月内,如果照片或视频的原始内容完全相同,远端备份可能只保留一份实际文件,备份清单会记录这些项目与同一份文件的关联。因此,远端文件数量和占用容量可能少于本地显示的总量;少量清单/索引文件和不同存储服务的统计口径,也可能让容量显示不完全一致。
可以,但需要在 App 设置中开启「允许访问 iCloud 原件」,西瓜备份才能按需获取 iCloud 原件。
请检查外接存储的格式和 iOS Files 的访问状态。可参考Apple 支持的说明。
请通过邮件联系我们,详情见联系我们。如果方便,也可以附上导出的日志。
| 类型 | 通过 iOS「文件」访问本地或外接文件系统 |
|---|---|
| 认证 | iOS 安全范围访问授权 |
| 适用场景 | 外接硬盘和兼容的「文件」提供方 |
| 容量 | 在提供方暴露时读取可用容量和总容量 |
| 限制 | 可用性取决于 iOS 是否持续保留对所选卷或提供方的访问 |
| 协议 | SMB 2 / SMB 3 |
|---|---|
| 认证 | 用户名和密码 |
| 域 | 可选的域或工作组 |
| 不支持 | SMB1 |
| 协议 | 基于 HTTP / HTTPS 的 WebDAV |
|---|---|
| 认证 | Basic 认证 |
| HTTP | 支持(仅本地局域网) |
| HTTPS | 支持 |
| 使用方法 | PROPFIND, PUT, GET, DELETE, MKCOL, MOVE, COPY |
| 元数据 | 尽力通过 PROPPATCH 更新修改时间 |
| 不支持 | OAuth、Digest 认证、客户端证书 |
| 协议 | 基于 SSH 的 SFTP |
|---|---|
| 认证 | 密码或 OpenSSH 私钥 |
| 私钥 | OpenSSH Ed25519 和 RSA 私钥 |
| 密码短语 | 支持 |
| 主机密钥信任 | 固定 SHA256 主机密钥指纹 |
| 密钥交换 | curve25519-sha256, [email protected], ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521 |
| 兼容密钥交换重试 | diffie-hellman-group14-sha1, diffie-hellman-group14-sha256 |
| 主机密钥 | ssh-ed25519, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, ecdsa-sha2-nistp521 |
| 兼容主机密钥重试 | ssh-rsa |
| 加密算法 | [email protected], [email protected] |
| 兼容加密算法重试 | aes128-ctr |
| 不支持 | ECDSA 私钥登录、仅支持 CBC 的服务器、仅支持 3DES 的服务器、仅支持 diffie-hellman-group1 的服务器 |
| 协议 | S3 兼容 API |
|---|---|
| 签名 | AWS Signature Version 4 |
| 认证 | Access Key ID 和 Secret Access Key |
| 端点 | 自定义 HTTP / HTTPS 端点 |
| HTTP | 支持(仅本地局域网) |
| HTTPS | 支持 |
| 存储桶寻址 | 路径样式和虚拟主机样式 |
| 区域 | 手动输入,可推断常见服务商 |
| 列举 | ListObjectsV2 |
| 上传 | 单段上传和分段上传 |
| 复制 | 服务端复制和分段复制 |
| 协议 | Microsoft Graph API |
|---|---|
| 认证 | 使用 Microsoft 登录(MSAL) |
| 账号类型 | OneDrive Personal(个人 Microsoft 账号) |
| 权限范围 | Files.ReadWrite.AppFolder |
| App 文件夹 | 备份会存入 Watermelon Backup 的 App 文件夹,App 中显示为 /Apps/Watermelon Backup;无法访问该文件夹之外的文件。 |
| 列举 | 通过 Microsoft Graph 分页列举 children |
| 上传 | 10 MiB 以下直接上传,较大文件使用可恢复上传会话 |
| 令牌处理 | 账号身份信息保存在 Keychain;访问和刷新令牌由 MSAL 管理。 |
| 不支持 | OneDrive for Business、SharePoint 支持的驱动器 |
| 限制 | 可用性受 Microsoft 账号状态、容量配额、限流和网络连接影响。 |
| 协议 | Dropbox API v2 |
|---|---|
| 认证 | 使用 OAuth 2.0 PKCE 登录 Dropbox |
| 账号类型 | 具备 App 文件夹访问权限的 Dropbox 账号 |
| 权限范围 | account_info.read, files.metadata.read, files.content.read, files.content.write |
| App 文件夹 | 备份会存入 Watermelon Backup 的 App 文件夹,App 中显示为 /Apps/Watermelon Backup;无法访问该文件夹之外的文件。 |
| 列举 | 通过 Dropbox list_folder 和 cursor 分页列举 |
| 上传 | 64 MiB 及以下直接上传,较大文件使用 8 MiB 分块的顺序上传会话 |
| 下载 | Dropbox 内容下载 API |
| 元数据 | 使用 Dropbox content_hash 校验远端文件 |
| 令牌处理 | 刷新令牌保存在 Keychain;已保存的账号 ID 用于账号校验;短期访问令牌仅保存在内存中。 |
| 限制 | 可用性受 Dropbox 授权状态、容量配额、频率限制、账号状态和网络连接影响。 |
| 协议 | Google Drive API v3 |
|---|---|
| 认证 | 使用 OAuth 2.0 PKCE 登录 Google |
| 账号类型 | 已启用 Google Drive 的 Google 账号 |
| OAuth 客户端 | 用户创建的 iOS OAuth 客户端 ID(com.zizicici.watermelon);请与同一个 Google 账号一起复用,以连接到同一个仓库。 |
| 权限范围 | openid, email / https://www.googleapis.com/auth/userinfo.email, https://www.googleapis.com/auth/drive.file, https://www.googleapis.com/auth/drive.appdata |
| App 文件夹 | 备份会存入“我的云端硬盘”中的 Watermelon Backup 文件夹;可见访问范围仅限由这个 OAuth App 创建的文件。 |
| 锁定数据 | 隐藏的锁定控制记录存储在 Drive App Data 中。 |
| 列举 | 通过 Google Drive files.list 和 nextPageToken 分页列举 |
| 上传 | 5 MiB 以内使用 multipart upload;更大文件使用 8 MiB 分块的 resumable upload |
| 下载 | 使用 alt=media 的 Google Drive 媒体下载 |
| 元数据 | 使用 md5Checksum 和 modifiedTime 元数据 |
| 令牌处理 | 刷新令牌保存在 Keychain;已保存的账号标识用于账号校验;短期访问令牌仅保存在内存中。 |
| 不支持 | 整盘访问、服务账号、API key、client secret、强制 App Check |
| 限制 | 可用性受用户的 Google Cloud OAuth 配置、Drive API、OAuth 发布状态、容量配额、频率限制、账号状态和网络连接影响。 |
| Firebase Analytics Without Ad ID Support | 不含 IDFA 的应用运行状况分析 |
|---|---|
| Firebase Crashlytics | 崩溃报告和可靠性诊断 |
| Microsoft Authentication Library (MSAL) | OneDrive 的 Microsoft 账号登录和 token cache |
| AMSMB2 (fork) | SMB 连接、共享目录浏览和 SMB 文件操作 |
| Citadel (fork) | 基于 SSH 的 SFTP、主机密钥指纹处理和 SFTP 文件操作 |
| WebRTC (fork) | Link 的点对点连接和 Data Channel 传输 |
| GRDB | 本地 SQLite 数据库、备份索引、manifest 和缓存校验 |
| Kingfisher | 照片界面的图片加载和本地 UI 缓存 |
| SnapKit | 界面布局 |
| MarqueeLabel | 滚动文字标签 |