iCloud 照片图库的储存策略
忙了一天,拖着疲惫的身体来写写这个。
前一阵尝试了iCloud照片图库这一苹果提供的照片服务。
该服务可以号称可以将拍摄的所有照片和视频自动存放在 iCloud 中,随时从任意设备访问。并且在 iOS10 和 macOS Sierra 中重新改进了照片应用,引入了人脸识别等聚类功能,功能上有些像 Google Photos 的本地版。
我先把储存在 OneDrive 中的历史照片均导入到了 macOS 的照片应用中。这些历史照片包括我从6年前的诺基亚到当天所持 6s 所拍的所有照片。然后启用 iCloud 照片图库,等待上传完毕。
这里要说一下,在之前我一直使用的是 OneDrive + Google Photos 的双重备份模式。照片原件拍摄之后手机中 OneDrive 应用自动上传至云端,再同步到家中的储存服务器上。另一份由 Google Photos 应用自动上传一份压缩过的至云端(没买储存空间,只能使用高品质模式,但是压缩之后差异很小几乎不可察),便于跨平台查看管理。
同步完毕后,在手机上启用 iCloud 照片图库,等待一段时间,照片便从云端上同步了下来。由于我勾选的是“下载并保留原件”,而手机上的剩余空间显然不够保存所有的原件,所以手机上所同步的仅仅是所有照片的缩略图,当点开缩略图时会自动去云端下载原图。而手机上原来就储存有原件的照片云端也有一份,在此步骤中不发生任何变动。
至于“优化储存空间”这一选项,则会将这部分已存在的原件也纳入管理范围,照片应用会自动统计访问频率、新旧程度和手机储存状况来决定是否在该台 iPhone 上保留原件(删除之前都已备份至 iCloud 云端)。
这样就引发了我的一个担心,就是我是否还能像以前一样正常的使用 OneDrive Google Photos 这些应用,因为在这些应用看来我的手机上平白多了数千张照片(尽管都在这两个应用的云端有备份),会不会因此而出现扫描识别错误或者将这些缩略图错误的当作新照片传到云端而打乱以前的原件备份呢?
实践告诉我,OneDrive很好的处理了这个问题,对于那些新同步过来的缩略图(能在照片中看到但是点进去需要下载),OneDrive 对其视而不见,老老实实地在上传最新拍摄的原件。
但 Google Photos 则不然,自从开启了 iCloud 照片图库,每次打开 Google Photos 应用都是提示正在上传 7000 多张照片,而且看起来的确在上传。经过思索我还是决定先把 iCloud 照片图库关闭寻找原因。
经过排查,发现 Google Photos 云端的照片根本就没有多出重复的照片,似乎是对比了原件发现云端已存在之后就自动跳过了。这让我百思不得其解,难道上传的不应该是缩略图吗?
经多方查证我找到了这样的一个讨论:
https://productforums.google.com/forum/#!topic/photos/8p9nGoM_aZo
这里所阐述的状况和我差不多,即并没有发现什么缩略图的存在,Google Photos 上传的还是原件,只不过对我这种情况来说,Google Photos 没有 OneDrive 那么智能,对其认为新加入的照片都进行了扫描。
那么为什么会这样呢?
经过一些实验,我终于确定了原因。
即,只要在开启 iCloud 照片图库的情况下手机中的图片以任何形式被访问(包括被第三方应用读取,如Google Photos),那么不管这张图片的原件是否储存在手机内,访问到的_总是原件_。如果不在,就自动从云端下载。这里的行为有点像符号链接,又让我联想到 Python 中的迭代器。****
虽然最终万幸没有打乱 Google Photos 云端的储存,但是仍然造成了一个严重的问题:Google Photos 的读取行为导致了大量原件从 iCloud 云端被储存在手机上,并且持续增多,很快就撑爆了手机的储存空间。最后我还是不得不在手机上停用了 iCloud 照片图库功能,改成我的照片流来向 Mac 端发送原件并储存。