关于白苹果使用不抹除资料固件修复后
越狱的机器不想重刷直接更新升级前以及升级后

垃圾处理原理以及注意事项

首先需要知道的是 iOS 固件“更新”和“恢复”的区别,iOS文件系统实际上有2个分区,一个叫系统区,另外一个当然就是用户区了,系统区就是指根目录(ROOT)所包含的全部目录(var 除外),而 var 目录其实就是“用户区”

iOS “更新”的话只会去改写写入新的系统文件而不会改写用户区的任何东西(当然如果是大的版本系统更新有可能会去更新应用,但是绝对不会去擦除用户的数据,不过有时候越狱安装的东西和太老的数据也可能有影响到固件更新,这也是为什么有的系统更新时会报错误6,这个就只能全新恢复固件了),

说到这,也顺便提一下关于 iTunes 的备份,如果您的iOS的iTunes备份没有设置密码加密的话就可以用iTools等第三方管理工具打开浏览内容,你们会发现其实就是备份的 var 目录的一些东西,然后如果备份的数据是越狱过的,您可以在备份的 /var/mobile/Library 和 /var/mobile/Library/Preferences 目录下看到很多越狱插件的配置文件!所以说 iTunes 的备份就其实只是将整个需要的目录压缩加密打包而已,而且如果数据有没有问题不关它的事,你一恢复这个备份,不关你越狱没有,原封原地导进去!如下图

  AJSHLCR(OH(64Y(F62$JBT8

如果只能用iTunes备份,我的建议就是最好在更新,恢复备份的前后都“还原所有设置”!当然新版的iOS有个小问题就是还原所有设置后还是会有垃圾文件,它会将还原前的plist配置文件加上随机后缀名和old字段,虽然这样配置无效不会影响系统了,但是我想那些洁癖患者看到这会无比抓狂吧!

关于系统的配置垃圾就说到这,现在说说系统文件(偷了个懒,把以前写的文章搬了下修改)

      如果越狱或者平时使用出问题,为了保留个人资料而使用了保资料工具制作的固件刷机或者是已经越狱的机器想“更新升级”到新系统的
      越狱的系统因为会再系统分区写入一些系统调用的程序,这样会造成系统分区的空间紧张,这也是为什么有时候越狱时有磁盘空间的弹出警告,并不是越狱程序将你整个设备的空间占满了,而是系统区空间不够了!

为了缓解系统区空间紧张的情况,越狱程序在越狱时,或者越狱完第一次启动Cydia时,会将一部分系统程序和体积大的文件移动到用户区,并在原位置建立一个指向搬移目标位置的快连(也就是windows俗称的快捷方式)

一般搬移的对象主要是:
Applications    原位置为:/Applications
Ringtones       原位置为:/Library/Ringtones
Wallpaper       原位置为:/Library/Wallpaper
pam               原位置为:/usr/lib/pam
share             原位置为:/usr/share
include           原位置为:/usr/include
当然还有以后安装的手势动作和主题
Activator        原位置为:/Library/Activator
Themes         原位置为:/Library/Themes
这些本来应该位于系统分区的文件将会被统一搬移到用户区的
/var/stash 目录下,当然因为var目录实际上也是一个快连文件夹,实际指向的真实目录为: /private/var/stash 目录下 (Cydia 更新到1.1.16后为解决恢复iTunes备份恢复后设置密码白苹果的问题,将此位置移动到 /private/var/db/stash 了!)

      越狱前,搬移的目录一般搬移到用户区后会将原文件夹后面加上 .xxxx的随机字符,如:
   /Library/Ringtones 对应的 /var/stash/Ringtones.FG56e 之类
而盘古越狱后 Cydia 搬移的文件夹又和前面稍许不同,它会在/var/stash 目录下创建一个随机文件夹,并将原文件夹移进去,再再原位置简历一个指向的快连,在/var/stash目录下 Cydia也会创建一个看上去没有后缀名的实际上有.lnk后缀的和目标文件夹名字相同的文件,里面的内容就是这个文件夹对应的原始路径和名称

      当我们越狱后上述搬移的文件位于了用户区,而“更新”固件时不会对用户区进行改写,这样“更新”系统时系统区写入了原始完整真实的系统文件,用户区又没有动,所以就会在设备内出现2套系统文件
      安装Cydia后第一次运行又会将其搬移到/var/stash 路径,这样这个路径下就会存在2套文件了

那么我们要怎样去处理这个垃圾问题呢?

首先根据上面所说的原理,那么会有2种情况,一个是还没有运行过Cydia,系统文件还没有搬移;第二个情况就是已经运行了一次Cydia,系统文件已经搬移了的情况

为什么我前序会写这么啰嗦的原因是以前越狱后只有Cydia一个越狱商店,
刚越狱时是没有afc服务(这样就不能直接适用第三方管理程序看到和操作ROOT目录),
      或者需要使用OPENSSH通讯协议登录,但是要安装这个服务又必须打开Cydia来在线安装协议,那么Cydia在第一次打开时就会搬移系统文件了

      如果是没用搬移过系统文件的,就很简单(太极8.1.2的越狱完成后就自带afc2add的服务),只要通过进入 /var/stash 目录(实际上到Cydia 1.1.5以及以后Cydia系统文件的搬移已经转到 /var/db/stash)将里面的内容全部删除即可!然后运行Cydia时,Cydia就会将新的系统文件搬移过来。

(当然这个太简单没有挑战性,所以我会将试验机运行一次Cydia)

如果是运行了Cydia的,新的和老的系统文件混在了一起,那我们又怎样去判断新老文件呢?

开始实战:
      首先准备好WinSCP (点我下载)运行,本连接下载的 WinSCP 我已经制作成了简单的自解包安装方式,运行后的界面,我已经将常用的连接模式设置好了

856528354230978093
      在登陆界面左侧的连接管理里面选择:无线连接管理模式(原因上面截图已写),然后点击右边的编辑,将主机名的IP换成你设备的Wi-Fi获取的IP地址,保存,再点击右侧下方的登录按钮

登录时可能第一次连接会弹出一个安全选项,直接选“是”即可

6619536087746791871
进入设备文件管理后我们首先定位到 /private/var/db/stash 然后就会看到类似下图的很多随机名称的文件夹

1115485332721822130

(有人会问明明是说的 /var/db/stash 文件夹,怎么上面截图又是/private/var/db/stash 目录呢,其实根目录的 var 文件夹就是一个文件夹快连,指向的就是/private/var)
欣赏完这些乱七八糟的文件夹后,我想大部分人会抓狂吧(尤其处女座的,哈哈),没事,可以清理的!

对照上面的搬移文件夹清单:
Applications    原位置为:/Applications
Ringtones       原位置为:/Library/Ringtones
Wallpaper       原位置为:/Library/Wallpaper
pam               原位置为:/usr/lib/pam
share             原位置为:/usr/share
include           原位置为:/usr/include
当然还有以后安装的手势动作和主题
Activator        原位置为:/Library/Activator
Themes         原位置为:/Library/Themes
      我们先从 Applications 开始
      首先定位到Applications的原位置:根目录,这时仔细看 Applications 文件夹图标的左下角有一个快捷方式的小箭头标,实际上它就是一个快捷方式,选中这个Applications的快连,然后鼠标点击 右键→编辑连接,在“建立连接/快捷方式到”的内容框就可以看到这个 Applications 所在的真实地址路径,此处为: /var/db/stash/_.6ltHNe/Applications,那么就记录下 _.6ltHNe这个名称
      再按照上面的路径和方法将其余的新系统文件的真实路径相关的随机目录名准备好,
比如我这台机器:
Applications    _.6ltHNe
Ringtones       _.CqVYxj
Wallpaper       _.GVP8Ou
pam               _.T1CTUP
share             _.5NUi5z
include           _.JCLCwz
      至于 Activator 和 Themes 这两个,因为是刚安装的新系统,以前也没有装过,所以不会有,直接跳过,你们也要检查一下有得话就要记下

      上面我们整理了6个真实路径文件夹,然后进入 /var/db/stash 然后对一下上面的6个文件夹,如果以前也没有安装手势和主题的Activator 和 Themes 这两个,那么文件夹和文件的数量应该是6+6=12 (6个文件夹+6个文件夹连接标示文件),我这里显示的是24个,正好是12的2倍,所以基本肯定是没有Activator 和 Themes 这两个的,这下知道什么是要的,什么是不要的了吧!

      好,将不是上面我们整理的清单的文件夹和文件直接删除(鼠标右键,选择删除),不过12个文件怕搞错,有一个方法:
      先 Control+A 全选,然后按住Control键不放,对照上面的清单去点击,点击一次就是取消选择,那么12个取消选择后剩下的就是垃圾了哟!哈哈!(注意文件夹和文件夹标示文件哟,其实那个标示文件也可以删除的)如下图:

57702370326689500
OK,等结束后系统垃圾就清理完了!

如果是已越狱的机器想通过更新的方式升级到 8.1.2 或重新保资料恢复官方的正确方式

1, 为保险起见,建议还是先使用 iTunes 备份一套备份(如果你使用第三方助手或用别人的账号安装了一些本机没有授权的账号应用,直接使用iTunes你也别想备份,会出错,这个时候可以直接用iTools等工具来调用iTunes的备份功能来备份),这样万一有问题还是可以单独提取相关的用户资料文件的(备份完后建议打开备份文件检查一下是否正常备份,经常遇到看似备份了,结果恢复不了提示备份有问题的情况!)
2, 因为越狱的插件和应用大多安装在系统区的,所以更新官方固件后会全部丢失,所以建议检查一下你所需要的插件是否能在越狱后重新下载到(这个意思就是尽量平时养成备份整理自己锁需要的常用插件安装包,一般在安装插件时在 /var/mobile/Library/Caches/com.saurik.Cydia/archives 目录下提取)这个完全没必要在机器内去备份文件!

3, 自己编辑添加的源位于 /var/lib/cydia/metadata.plist 文件里面,这个你可以唱备份,别到时候不知道添加的写什么源了,而且新机器越狱后直接覆盖这个文件就可以直接恢复以前添加的全部源,免得一个个添加了!这个文件如果固件是更新是不会改写的

4,特别强调一点的是关于已安装插件清单的问题,越狱系统安装的插件的信息都位于/var/lib 目录下,因为越狱时,越狱程序会释放解压一个 Cydia.tar 的压缩文件,这个文件内含了/var/lib/dpkg/status 文件,这个文件时你机器安装的所有插件的一个清单表,虽然更新系统时不会改写这个文件,但是越狱时就会将这个文件覆盖,所以建议在更新系统之前将这个文件备份一下,
但是要求备份并不是让你在越狱后用这个备份去覆盖初始的这个插件清单,千万要记住!它仅供你对照去安装你原先安装的插件,如果你用它覆盖后会发现在Cydia里面,原来的插件都会显示“已安装”了!实际上都是假的,除非你将刚越狱后的原始插件以外的所有插件都“覆盖安装“一遍,这里又还会有一个问题,那就是如果你之前是盘古越狱的,现在是太极越狱,那么如果覆盖了这个信息文件后肯定就会显示你安装聊不伦不类的盘古(因为盘古的插件里面冲突指定了iOS版本环境是 (>= 8.0), (<< 8.2),所以不会提示冲突),而太极的东西都不见了!
还有一个和插件安装相关的地方也要注意 /var/lib/dpkg/info 此目录下的文件都是插件安装备份的包信息和安装卸载脚本,都是以插件的Packges包名开头,如果要动刀子删文件需注意的是所有的gsc开头的不要动,(这个其实是Cydia内置自动生成的虚拟服务,主要用来辨识组件,比如如果你是iPad,这里就会有一个gsc.ipad 的信息,那么我可以在插件的安装信息里面加上一个和 gsc.ipad 冲突,那么就意味着这个插件不支持iPad,在插件安装时就会提示无法安装,如果安装信息写上依赖这个gsc.ipad包,那就意味着这个插件仅支持iPad,其他设备安装一样会提示冲突错误!有些插件安装时就会通过虚拟服务包信息来达到环境要求检测的)