本帖最后由 jonhy_love 于 2018-3-31 09:57 编辑

miui发帖子一直是审核不过,发在这了。

0 前言现在手机配置都高了,Android新版本也都支持手机分身和应用双开(分身)。应用虽然支持双开,但是数据备份方面各大厂商都不提供双开(分身)数据备份。

就目前市面上所有的备份软件来说都不支持双开数据的备份,对于一些有需求的人来说双开的数据也很重要。

在此,分享一下自己最近的成果。(以下内容全部基于ROOT权限下)

尊重劳动成果,且方便读者深入了解,转载请说明出处!!!!!

1 备份到底要备份什么?

在Android上应用我们可以安装,只需备份数据即可,那么数据备份哪些呢?一般数据分为sd卡的数据和data分区的数据。主要数据是data的数据。

比如QQ:本文后续以备份QQ双开数据为例)

/sdcard/tencent

/data/data/com.tencent.mobileqq

双开应用和手机分身数据参考:h删t删tp://w删w除w.miui.co汉m字/thread-4295910-1-1.ht汉ml

2 怎么去备份数据

在Windows时候大家备份数据都只是打包压缩备份就行。在Android中这么做却不行。为什么呢?因为Android的底层是基于Linux系统,Linux系统对文件的权限控制比较复杂。如果我们按照Windows的方法直接用rootexplorer或者ES文件浏览器在ROOT后直接zip压缩备份数据,那么这份数据是无用的。因为文件的权限在解压后会变化,应用打开文件会出错提示数据损坏(权限不够)。

在这我讲一下Linux的文件构成(Windows下也一样,只是Windows程序对权限这一块没那么严(fu)谨(za))。在Linux下文件包括文件本身和读写权限、所有者以及seLinux的Context。这些东西都要备份(这样才算备份完全),才能够还原。

Android是Linux内核的系统,所以可以运行对应构架的Linux程序,此处备份用到的是tar命令。系统自带的tar一般不行,(功能被精(yan)简(ge)),常规的tar工具支持备份文件权限和selinux属性。我们通过这个工具去压缩、解压就能达到备份还原的效果。

3 操作步骤:

1、手机root,不会的自己出门左转

2、安装busybox(百度busybox installer apk)或者刷TWRP的recovery(建议用TWRP操作)。之所以推荐TWRP,因为TWRP内置的busybox支持seLinux Context备份,直接安装的busybox不支持,还原时候会麻烦点。

3、这里如果你用TWRP必须用电脑才能执行adb命令,如果直接用busybox可以在手机安装“终端模拟器”执行命令。

4、启动终端模拟器(有电脑直接adb shell su)或者进入recovery后adb shell

这里分开写下,命令有点小区别,主要给小白好操作

//开头的汉字表示注释意思,不是命令,不用复制,复制红色部分命令就行

方法一:TWRP的recovery下备份还原QQ双开数据

miui$adb shell

root@libra:/ #

开始备份:

cd /data/user/999/com.tencent.mobileqq       //进入QQ双开的数据目录 微信改成 com.tencent.mm就行,其他应用自己去获取包名

mkdir /sdcard/backups     //在sd卡创建备份文件夹

tar cvpzf /sdcard/backups/com.tencent.mobileqq.tgz ./     //tar备份QQ数据到sd卡

这样就备份QQ双开数据到/sdcard/backups/com.tencent.mobileqq.tgz 这个压缩包文件了采用的gzip压缩。

开始还原:

tar xvpzf /sdcard/backups/com.tencent.mobileqq.tgz -C/data/user/999/com.tencent.mobileqq///还原SD卡的QQ数据到data分区

上述是在twrp的recovery下通过adb操作的命令。这样备份了文件、权限、selinux上下文。压缩包会比较大,因为selinux的权限。

方法二:开机状态下adb shell或终端模拟器下备份还原QQ双开数据miui$adb shell

shell@libra: su

在开机状态下直接用busybox的tar命令备份还原,需要记录并手动修改文件夹的所有者才行。(不会备份所有者和selinux信息)

开始备份:

cd /data/user/999/com.tencent.mobileqq     //进入QQ双开的数据目录 微信改成 com.tencent.mm就行,其他应用自己去获取包名

ls -l   //查看数据所有者

可以看到如下字样

drwx------u999_a124u999_a1242017-09-13 15:55 tk

表示QQ双开应用属于u999_a124这个用户

tar cvpzf /sdcard/backups/com.tencent.mobileqq.tgz ./           //tar备份QQ数据到sd卡备份完毕

开始还原:

cd /data/user/999/com.tencent.mobileqq

tar xvpzf /sdcard/backups/com.tencent.mobileqq.tgz -C ./            //还原SD卡的QQ数据到data分区

chown -R u999_a124:u999_a124 /data/user/999/com.tencent.mobileqq        //修改QQ数据的所有者为u999_a124还原完毕

至此,数据备份还原就结束了。在还原数据结束后启动双开的QQ有可能会闪退几次,不用管不断的点,7/8次后就正常能进了

最后几点注意点:

1、下载busybox installer并安装busybox

2、TWRP和开机状态下的备份还原区别在于文件所有者,TWRP的busybox会备份这个数据,开机状态下的busybox不支持该功能

3、开机状态下的busybox操作需要查看所有者并修改所有者,每个应用的所有者都不同。

4、每个应用的包名不同,自己去看就知道

5、我的机器是刷的三方官改包,selinux是 Permissive状态,不需要备份selinux,只要备份权限修改所有者就行。

6、如果还原后提示QQ运行停止错误,报告错误信息。一般是所有者没修改,自己修改所有者。

7、查看所有者 可以执行 ls -l /data/user/999/com.tencent.mobileqq 或者 ps |grep com.tencent.mobileqq

8、其他品牌或者系统建议在adb下执行getenforce先查看是否selinux开启 参考:ht删tp://bgu除ncle.blog.51cto.co汉m/3184079/957字315/

附录:(上边不懂的继续看下去)

1、查看应用数据文件所有者

adb shell下执行命令:ps |grep com.tencent.mobileqq                                                  <

显示如下:

u0_a124   5356  476   1743032 73844 ffffffff f6f021e4 S com.tencent.mobileqq:MSF

u999_a124 8269  476   1746004 74576 ffffffff f6f021e4 S com.tencent.mobileqq:MSF

u0_a124   11338 476   1838676 171240 ffffffff f6f021e4 S com.tencent.mobileqq

u999_a124 12827 476   1848620 189584 ffffffff f6f021e4 S com.tencent.mobileqq

u0_a124   13619 476   1737772 82708 ffffffff f6f021e4 S com.tencent.mobileqq:TMAssistantDownloadSDKService

u999_a124 13841 476   1735348 81784 ffffffff f6f021e4 S com.tencent.mobileqq:TMAssistantDownloadSDKService

u0表示非双开的,u999表示双开的。从上边可以看到 双开QQ的所有者是u999_a124

adb shell下执行命令:ls -l /data/user/999/com.tencent.mobileqq

显示如下:

drwx------ u999_a124 u999_a124          2017-09-11 17:20 jpeglib

lrwxrwxrwx install  install           2017-09-13 16:17 lib -> /data/app/com.tencent.mobileqq-1/lib/arm

-rw------- u999_a124 u999_a124        0 2017-08-18 10:43 permissions.txt

drwx------ u999_a124 u999_a124          2017-09-11 17:20 qav

drwx------ u999_a124 u999_a124          2017-09-11 17:20 scanfu

drwxrwx--x u999_a124 u999_a124          2017-09-13 17:07 shared_prefs

drwx------ u999_a124 u999_a124          2017-09-13 15:55 tk

drwx------ u999_a124 u999_a124          2017-09-11 17:20 txPttlib

drwx------ u999_a124 u999_a124          2017-09-11 19:35 txlib

u0表示非双开的,u999表示双开的。从上边可以看到 双开QQ的所有者是u999_a124

最后加一句,需要关闭selinux权限,否则无法打开数据文件。具体可自行百度。selinux enforced 改为permissive 或者disabled,

小米4c刷机包Linux,MIUI【双开应用】数据备份(android通用,分身数据)相关推荐

  1. 小米4C刷机图文最详细的教程都在这了好好看总会学会的

    将下载所得的刷机工具以及刷机包解压,解压后如下图   • 注意:由于部分小米手机现在已经机上bootloader锁,所以需要先进行解锁再刷机,否则会出现"系统找不到指定文件"等提示 ...

  2. 米4用linux刷机救转,小米4C变砖了怎么办 小米4C刷机救砖教程

    小米4C手机近日进行正式上市了,很多入手该机的朋友们都会先将小米4C进行ROOT那么,ROOT后的小米4C变砖了怎么办?如何解决?对于所有准备刷机的安卓用户们来说,想必大家最为担心的就是害怕手机一不小 ...

  3. 秋大android 6.0root,小米Note刷机包 基于MINote-MIUI6_6.6.2.0稳定版深度定制 自动ROOT 丝般顺滑 超级...

    小米Note刷机包 基于MINote-MIUI6_6.6.2.0稳定版深度定制 自动ROOT 丝般顺滑 超级省电 来源:rom之家 http://www.romzhijia.net UI类型:MIUI ...

  4. 小米5 android 4.1.2,小米1刷机包 V5稳定版V1.2 流畅纯净 精简省电 默认开启未知来源 Android4.1.2...

    小米1刷机包 V5稳定版V1.2 流畅纯净 精简省电 默认开启未知来源 Android4.1.2. 小米1刷机必看: 适配:国行 1.刷机前请备份好手机中的资料和数据,为了减少刷机过程中遇到的问题,刷 ...

  5. android 5.0小米1刷机包,小米1刷机包 V5稳定版V1.2 流畅纯净 精简省电 默认开启未知来源 Android4.1.2...

    小米1刷机包 V5稳定版V1.2 流畅纯净 精简省电 默认开启未知来源 Android4.1.2. 小米1刷机必看: 适配:国行 1.刷机前请备份好手机中的资料和数据,为了减少刷机过程中遇到的问题,刷 ...

  6. 小米M1刷机包 乐蛙ROM第122期 技术顺畅开发版

    ROM介绍 [第122期]乐蛙OS5完美版Ver14.4.18 [OS5本周推荐] 新增 音乐锁屏界面显示歌曲名称和封面 优化 重绘蛙迷使用最多的108个第三方应用图标 [联系人] 修复 多音字问题, ...

  7. 小米手机刷机为Linux,小米5 刷机LineageOS 14.1的详细教程

    小米5 刷机LineageOS 14.1的详细教程 1,准备 platform-tools Mac/Linux/windows 会简单的命令行命令 2,解锁你的小米设备 3,Installing a ...

  8. 小米4Linux刷机包,小米4官方固件rom系统刷机包下载_小米4原版系统升级包

    小米4手机的官方固件rom刷机包已经出来了,并且在官网上也可以看到,也有很多人都已经下载了,今天在这里就是把官方的固件包整理在一起方便大家下载了,这些固件包都是小米官方原版的miui刷机包,非常的实用 ...

  9. android2.3.7刷机包,中兴 天机2(S291)刷机包 官方Mifavor UI V3.1.7 Android 4.4 完整包

    一.版本说明 天机 GRAND S II LTE MiFavor 3.1.7 Android 4.4 底包ZTE_Grand_S_II_LTEV1.1.0B015 2015年4月10日 本次刷包,如果 ...

最新文章

  1. php memcache 基础操作
  2. python 发布啦!!
  3. Lesson_7 上课笔记_1 ----static关键字和导包
  4. MySQL怎么存base64编码_MySQL中如何将字符串转为base64编码?
  5. BGP聚合as-set advertise-map
  6. 商丘高中计算机考试成绩查询系统,河南省中招考生服务平台2019商丘中考成绩查询系统入口...
  7. MongoDB Array Query Operators
  8. python如何读取文本_python 如何读取windows-1252格式文本?
  9. python之doctest的用法
  10. 开课吧:深入了解C++和C语言的血缘关系
  11. Android 自定义progressDialog实现
  12. 指定 年-月-日 将其封装tree树状结构
  13. 《统一沟通-微软-实战》-7-配置-2-呼叫寄存
  14. 大数据ETL开发之图解Kettle工具(入门到精通)
  15. 品牌故事宣传片制作要点
  16. 《上帝给我一个任务,叫我牵一只蜗牛去散步》
  17. jcp jsr_JCP批准Java SE 7和随附的JSR
  18. 小内存堆管理算法详细解析
  19. No implementation found for void java接口不能跳转到实现类
  20. 基于pytorch的胶囊网络minst图像分类实现

热门文章

  1. xHunt:针对科威特航运组织的攻击行动
  2. 计算机水平怎么填范例,简历表个人能力怎么写(大学生个人获奖情况范例)
  3. EXE4J生成的exe文件自动请求管理员权限(UAC)
  4. 卧龙修图插件之面部精修教程
  5. 华为笔记本触控板手势操作_如何在笔记本电脑触控板上使用Windows 8的手势
  6. frdora10_a8_linux,8楼 【A8】 linux系统的不刻盘的安装 一:.pdf
  7. #874358#基于django/neo4j的电视剧浏览数据推荐系统
  8. firefly游戏服务器学习笔记 6———— db模块
  9. 003@ uboot第二阶段分析(下)
  10. mysql 启动出现系统错误193