如题。因为我不能丢数据,所以被逼无奈,弄出了这个方法。我对 iOS 开发什么的一窍不通。
现分享下思路和解决方法。希望能帮到有需要的人。
第一次发,请轻拍。
TLDR
应该是 iOS 的 bug 。
临时解决方法:iTunes 备份 -> 编辑备份文件(删除缓存文件和占用空间的大文件)-> 还原备份到手机上
问题描述
设备:iPhone 11, iOS 14.6 - 15.0.1, 128GB 。
"其他系统空间"占用 50GB,且不停增长。2 个月尝试过一次 iTunes 备份+还原,稍微有些用,但很快就又变成 50-80GB 了。期间升级到了 iOS15 。这时再尝试iTunes 备份+还原是毫无用处。
尝试过的方法
网上大部分都是老生常谈的无用方法,以下列举我尝试过的。
无效的方法
- 清空 Safari 历史和缓存、短信等。
- 删除照片和回收站。
- offload Apps
- 清理占用空间大的 App
- 重启设备。强制重启设备。
- iTunes Sync:这个会清空 iPhone analytics 。
- 更新 iOS:从 iOS14.6 到 iOS15 都有问题。升级到 iOS15 时还又多了 7-8GB 。
- 重置所有设置:这个不丢数据,只是设置。
- 各种第三方清理 App 和 PC 端软件。
微有效的方法
- iTunes 备份+还原:第一次(两个月前)有一些用,但空间占用很快就又涨上来了。
有效方法
- 完全重置:但是很多数据会丢失,对我而言重置也就没了意义。因此我不考虑。
注:我没试过 iCloud,因为其隐私协议和网速问题。目测是没用的,因为占用空间的文件是 iPhone 备份的一部分,有人也确认过这点了。有需要也可以试试,没准儿行呢。
思路
思路是比较通用的:找出 iPhone 备份目录里最大的文件,删了,然后再还原。
因为'iTunes 备份+还原'没效果,推测占用的空间是 iPhone 备份文件的一部分。这也和备份大小(~110GB )相吻合。觉得应该找出有问题文件夹(也就是最大的文件夹)。
尝试过爱思和 iMazing 等,都不显示备份文件里目录大小的。所以转头盯上了 iPhone 备份目录里的 SQLite ( manifest.db ),这个加密的数据库存着备份目录和手机目录的映射关系。用iOSbackup解密 SQLite 数据库,用 WinDirStat 找出备份目录中的最大的文件。然后 SQLite DB Viewer 在数据库中搜索这些文件,找出有问题的目录。
Root Cause
通过在 SQLite 里查找 2-3 个最大的文件名字,发现都是在同一个目录下的视频文件。
AppDomainGroup-group.com.apple.mobileslideshow.PhotosFileProvider<- 这个是 iMazing 里的目录Storage/photospicker/version=1&uuid=2B739297-59B0-4613-A1B7-551F3C5803C5&mode=current.mov<- 不知道是啥
Google 搜索'Storage/photospicker',找到了相关的 bug report Picked asset files in system folder not cleaned yet after backup?。bug report 里面提到了 DS File 。我看了下photospicker文件夹里的内容,确实是这样的。我自己经常用群晖备份照片。根本问题是 iOS 把 DS File 上传下载的文件存了缓存,但没删。因此,应该是 iOS 的锅。
解决方法
本地,免费,不需要 iCloud,近乎无损。风险自负。
- iTunes 备份手机。选加密备份,因为要保存 Health 等数据。
- 用 iMazing,Create Editable Copy 。iMazing 会存一个新的备份,所以需要磁盘空间足够大。
- 选取新的备份。删除
AppDomainGroup-group.com.apple.mobileslideshow.PhotosFileProvider/photospicker的内容。顺便看一下AppDomainGroup-group.com.apple.mobileslideshow.PhotosFileProvider/draganddrop。如果你的问题不是这个目录,请按照“思路”里面的方法找出有问题的目录。 - 因为是白嫖 iMazing,从
iMazing.Versions\Blueprints把修改好的 iPhone 备份移动到 iTunes 备份目录下。iMazing.Versions就在 iTunes 备份目录下。
- 提示 1:请用 SSD 备份还原,速度快好几倍。SSD 大概 2-3 小时,HDD5-10 小时。
- 提示 2:iTune 和 iMazing 需要至少手机 2 倍大小的磁盘空间,建议提前清空手机再备份 或者 用大硬盘。
- 提示 3:必须备份+还原,我没找到可以直接修改手机文件系统的方法。数据请多份备份。
- 提示 4:尽早清理空间。如果空间占用到了一定程度,可能都没法备份还原。
- 提示 5:我为了保险,用 iMazing 修改备份文件。理论上直接改 SQLite 数据库也行。
这个 bug 已经通过 feedbackassistant.apple.com 提交给苹果了,希望能赶紧修了。
欢迎转发分享。只要表明出处(本页的 URL ),就不需要问我。
注:之后可能会再整理下发到我自己的其他地方存档,例如 Github 。
关键词:iOS,其他系统空间,空间不够用,备份还原,Manifest.db ,编辑 iTunes 备份文件,解密加密的 iTunes 备份的 SQLite,储存空间,其它空间,缓存,清除其他占用空间,储存空间已满