Android [root]:恢复/备份应用程序数据文件夹 /data/user/0/app.id 的正确方法(cp -a 后不起作用)

Android [root]: Correct way to restore/backup application data folder /data/user/0/app.id (doesn't work after cp -a)

提问人:mixalbl4 提问时间:10/11/2023 最后编辑:mixalbl4 更新时间:10/11/2023 访问量:109

问:

几天前,我意识到通过TitaniumBackup从备份恢复后,一半的程序没有启动。

2 天后,对其中一个程序进行测试,我得出了这个结论:

  1. 执行应用程序的全新安装(例如:com.cootek.smartinputv5)
  2. 先运行(成功)
  3. 冻结此应用程序(以防止任何更改)
  4. 移动原始文件夹:mv /data/user/0/com.cootek.smartinputv5/ /data/user/0/com.cootek.smartinputv5_BACK/
  5. 克隆文件夹:cp -a /data/user/0/com.cootek.smartinputv5_BACK/ /data/user/0/com.cootek.smartinputv5/
  6. 解冻应用程序,运行并获取错误:空间不足
  7. 再次冻结
  8. rm -rf /data/user/0/com.cootek.smartinputv5/
  9. mv /data/user/0/com.cootek.smartinputv5_BACK/ /data/user/0/com.cootek.smartinputv5/
  10. 解冻应用程序,运行并 EVERYTHIG OK。

根据实验结果,如果应用程序发现我的副本与原始副本之间的差异,则很明显文件夹并不相同。

好吧,我试图找到与该黑客的区别(任何或等):但我一无所获!没有区别!chmodchowndiff <(getfacl -R folder1) <(getfacl -R folder2)

部分结果:getfaclenter image description here

我错过了什么?

Android Linux shell 文件权限

评论


答:

0赞 mixalbl4 10/11/2023 #1

简短的回答:我不知道确切的原因,也许数据库在这个文件夹中的系统中打开,也许是通过文件描述符绑定,也许APEX干扰了某些东西,但我找到了一个解决方案,你只需要重新启动

如果您有同样的问题:恢复数据(手动或通过TitaniumBackup)后应用程序无法正常工作,则需要修复文件夹上的用户权限:

  1. 找到正确的 userId: 。例:adb shell dumpsys package com.cootek.smartinputv5 | grep userIduserId=10290 == u0_a290
  2. 修复:chown -R u0_a290:u0_a290 /data/data/com.cootek.smartinputv5
  3. 重新启动