提问人:mixalbl4 提问时间:10/11/2023 最后编辑:mixalbl4 更新时间:10/11/2023 访问量:109
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)
问:
几天前,我意识到通过TitaniumBackup从备份恢复后,一半的程序没有启动。
2 天后,对其中一个程序进行测试,我得出了这个结论:
- 执行应用程序的全新安装(例如:
com.cootek.smartinputv5
) - 先运行(成功)
- 冻结此应用程序(以防止任何更改)
- 移动原始文件夹:
mv /data/user/0/com.cootek.smartinputv5/ /data/user/0/com.cootek.smartinputv5_BACK/
- 克隆文件夹:
cp -a /data/user/0/com.cootek.smartinputv5_BACK/ /data/user/0/com.cootek.smartinputv5/
- 解冻应用程序,运行并获取错误:空间不足
- 再次冻结
rm -rf /data/user/0/com.cootek.smartinputv5/
mv /data/user/0/com.cootek.smartinputv5_BACK/ /data/user/0/com.cootek.smartinputv5/
- 解冻应用程序,运行并 EVERYTHIG OK。
根据实验结果,如果应用程序发现我的副本与原始副本之间的差异,则很明显文件夹并不相同。
好吧,我试图找到与该黑客的区别(任何或等):但我一无所获!没有区别!chmod
chown
diff <(getfacl -R folder1) <(getfacl -R folder2)
我错过了什么?
答:
0赞
mixalbl4
10/11/2023
#1
简短的回答:我不知道确切的原因,也许数据库在这个文件夹中的系统中打开,也许是通过文件描述符绑定,也许APEX干扰了某些东西,但我找到了一个解决方案,你只需要重新启动。
如果您有同样的问题:恢复数据(手动或通过TitaniumBackup)后应用程序无法正常工作,则需要修复文件夹上的用户权限:
- 找到正确的 userId: 。例:
adb shell dumpsys package com.cootek.smartinputv5 | grep userId
userId=10290
==u0_a290
- 修复:
chown -R u0_a290:u0_a290 /data/data/com.cootek.smartinputv5
- 重新启动
评论