可以通过一个Google帐户使用多个Android设备并不是什么新鲜事。首次打开新设备会询问是否要与Google存储自己的数据,然后该设备将始终将“某些内容”同步到Google服务器,基本上是

一些应用程序数据(如果是应用程序,明确支持)
Wi-Fi密码
浏览器书签
从Google Play安装的应用列表
添加到屏幕键盘使用的字典中的单词
最您的自定义设置中的

详细信息可以在Google信息中心中找到。这里涉及到这些问题的相关问题包括:

Google备份哪些信息?
与Google完全同步的是什么?
Android如何同步WiFi配置文件?

Google Backup上的Developers API进一步了解了备份的工作方式(这里有几个问题说明了备份工作的真正方式-也就是说,有时它确实起作用,有时只是部分起作用,有时根本不起作用)。除了可靠性和并非每个人都希望在云中获取私有数据这一事实(甚至提到的API参考2警告:Android在使用备份时无法保证数据的安全性。对于使用备份存储敏感数据应始终保持谨慎态度) ,例如用户名和密码。),我的主要问题是:
使用同一帐户备份了多个设备的数据:

使用出厂重置的设备会发生什么情况前路?是否会被识别,并且仅恢复以前使用过的那些东西?(设备识别可以例如通过IMEI进行(但不能通过Android_ID进行,因为恢复出厂设置可能会消失))–这可能是Nalum答案中描述的行为的原因)

将如何还原到您首次使用此Google帐户首次初始化的(新/恢复出厂设置)设备?(如果在使用的Google帐户中使用备份标识了设备,则可能会触发“ ”,例如“全部还原,设备已更改!”或“从不再连接的设备X还原所有内容,因为它可能已被替换!”,但坚持使用“仅还原该设备上的内容”。恢复出厂设置)


处理的问题是:如果一个设备具有多个设备,则它们通常用于特定问题,因此,一个设备并不需要所有设备上的所有功能。由于我没有办法选择要备份的数据(例如,已警告我们排除那些“敏感数据”:WiFi密码将属于该类别),我想在还原方面也没有选择吗?那么如何处理呢?

评论

另外两个可能对此很有趣的资料是:Google的Android备份和还原是否特定于设备? (它至少描述了4.x之前的Android版本的“混乱”),并且Android的自动备份和还原服务非常棒……有效。两者都部分反映了我的问题,但没有一个回答。关于谷歌搜索问题有很多。

我唯一可以提供的输入是,它是如此不可靠。我希望我可以使用一个手动备份/还原按钮。前几天,我重新设定了平板电脑,但并未还原我所有的应用程序和设置,但是以前已经完成过。我不喜欢我不能依靠它。

由于甚至没有赏金可以提供详细信息,我想找到“完整答案”的机会也很小。因此,我们知道与以前相同的知识:它可能以“一种方式或另一种方式”工作,必须尝试弄清楚,而其中一种可能是幸运的还是没有。谢谢,谷歌,没有任何用户文档的不可靠工具:(因此赏金归纳伦(Nalum):尽管答案早于赏金,但这是我们最好的:)

相关:stackoverflow.com/questions/8502412/…

@流是的。和答案看起来令人惊讶的熟悉:)

#1 楼

让我们来谈谈集合,宝贝

Android的备份服务具有一个称为集合的概念:从一个设备备份的所有数据的集合(在一次传输中,但这很详细)。每个集合由唯一的字符串标识,例如设备上的IMEI。备份应用程序(或已安装的应用程序列表)时,其备份数据将进入与要备份的设备关联的数据集中。所有设置仍特定于用户的Google帐户。如果您擦除设备并将其出售给他人,除非他可以登录您的Google帐户,否则他将无法访问该设备集。

默认行为

安装应用程序或设备恢复了其应用程序列表后,备份系统首先在该设备的设备集中查找该程序包的备份数据。如果找不到任何内容(要么是因为它是一个没有备份数据的全新设备,要么是因为该软件包从未安装过该设备),它将搜索扩展到其他集合。 (如果可以选择的话,它将使用用于完整设备还原的最后一组。)

因此,当您设置新设备时,它将还原应用程序列表从旧设备的备份中恢复,并从旧设备的备份中还原每个应用。如果您在一台设备上安装了某个应用程序,而又在另一台设备上安装了该应用程序,则该应用程序将与旧设备中的数据一起还原。无论哪种情况,现在都将数据备份到新设备的集合中,这意味着来自这两个设备的备份数据从现在开始是分开的。

在工厂重置设备后,它如果有该设备,它将从该设备的最后一个备份还原,如果有,则从其他设备的备份中恢复,但是此后它将开始创建自己的备份集。这就是Nalum的两个设备看不到彼此备份的应用程序的原因:它们每个都从自己的上次备份中恢复。该机制没有任何面向用户的文档,因为它应该可以自动执行正确的操作,但是代码可用。


bmgr:基本用法

正如Izzy所发现的,bmgr工具使您可以对该过程进行一些控制。它旨在帮助程序员在其应用程序中测试和调试备份集成。您可以在adb shell中使用此工具来触发所选软件包的备份和还原,擦除软件包的备份数据,甚至是整个设备的还原。

请勿尝试在设备外壳程序,除了以root用户身份运行外:您需要系统级android.permission.BACKUP对其执行任何有趣的操作。

您可以使应用程序立即更新其备份数据: >
bmgr backup com.shadowburst.showr
bmgr run


(或任何应用程序的软件包名称)。通常无需执行此操作,因为只要数据发生更改,应用程序便会请求自己的备份,但这使您可以解决编写错误的应用程序。要从备份的数据中还原一个程序包,默认情况下会选择该程序包:

bmgr restore com.shadowburst.showr


,但同样,它只能执行设备自己执行的操作,因此您不需要使用它。另请注意,已经需要安装该设备才能使此工作正常进行。要查看可用的备份数据集:

bmgr list sets


,您将得到如下输出:

  3ff7800e963f25c5 : manta
  3f0e5c90a412cca7 : manta
  3dd65924a70e14c8 : TF101
  3baa67e9ce029355 : m0


左侧的64位十六进制数字是令牌。您将在一分钟内需要它。右边的东西是拥有该设备的设备的(相对)友好名称。例如,manta是nexus-10的代号; TF-101是指原始的asus-eee-pad-transformer。一旦确定了所需的集合,就可以使用其令牌从该集合还原应用程序:

bmgr restore 3ff7800e963f25c5 com.shadowburst.showr


您可以在命令末尾添加更多软件包名称,以一次还原多个软件包,也可以不指定软件包名称(仅使用令牌)来还原每个具有该数据集中数据的应用(即,它是一个完整的系统恢复)。最后,您可以擦除当前集中的应用程序数据:

bmgr wipe com.shadowburst.showr


这将使其下一个备份操作从刮。卸载应用程序后,这可能会很有用,如果应用程序中的错误破坏了其备份数据,并且您不希望还原该数据。

您无法使设备开始写入另一组,也不能整套擦拭。

评论


非常详尽的答案,谢谢丹!我一直在寻找“手动控制”(从中还原)。我希望所有这些操作都由用户选择,例如在还原开始时弹出一个窗口:“您要还原吗?”->“从什么设置中还原?”->“选择详细信息(完整还原,xxx。 )”。当应用程序知道“自动执行正确的操作”可能会很好,但我希望能够掌控一切,有时甚至需要这样做。此外,在出厂重置和新设备以外的情况下,可能还需要还原,因此用户应该有一种触发方式...

– Izzy♦
13年7月19日在7:56

#2 楼

以下是目前为止无法解决的问题,但可能会使您对某些细节有所了解:

从备份API中提取的一些片段


尽管该API主要针对开发人员,有一些事实我们可能能够为我们的案例提取。在下面的列表中,API文档中的斜体标记引号。




Android在安装应用程序并且存在与用户相关联的备份数据时自动执行还原操作。
→这可能意味着两件事:

如果应用程序支持Google Backup API,并且用户启用了Google Backup,则可用的备份数据将在安装时自动还原。第一次将单个设备上使用的应用安装到另一台设备上时,这是一件好事。
备份仅与Google帐户相关联,而不与该设备相关联(并且存在与用户相关联的备份数据)- -或忽略了与该特殊情况无关的另一个事实(“已安装应用”)



备份传输是Android备份框架的客户端组件,可以由设备制造商和服务提供商自定义。备份传输因设备而异[...]
→这可能解释了涉及不同设备(或不同Android版本)的不可靠性。(强调我的)


不能保证所有Android设备上都可以进行数据备份。
(无评论)

Google为运行大多数Android设备的Android设备提供了备份备份功能Android 2.2或更高版本。
→这里提供了Google Backup所需的最低Android版本:Froyo,又名Android 2.2

要获取您的备份服务密钥,请注册Android Backup服务。 [...]
→每个应用程序必须具有自己的密钥。没有“为什么”的描述,但是有一个很好的猜测:隔离备份,使任何应用都无法读取另一个应用的备份(密钥;对于另一个用户的备份:错误的帐户)

应用程序,则可以使用bmgr工具从“备份管理器”启动立即备份操作。
→似乎有一种方法可以手动触发备份?让我们稍后再探讨。 ↓

当需要还原应用程序数据时,备份管理器将调用备份代理的onRestore()方法。
→这再次强调了此列表的第一项:首先必须安装该应用程序,然后使用他们自己的实现来还原其数据。再看一遍:如果应用程序还原失败,将不会为失败的应用程序进行数据还原-除非您通过Google Play手动安装它们。然后,如第一项所示,应在说明的情况下通过Google备份自动还原数据(必须已使用其备份,相同的帐户等)。

备份其他文件
→原谅我没有引用该章的(技术)内容,而是总而言之:只能根据内部备份来备份内部存储器中的文件。

从bmgr API中提取的某些片段




它提供了引发备份和还原操作的命令[...]
→看起来这是一种在“自动操作”失败

这些命令可通过adb shell访问。
→这不需要任何解释:)

adb shell bmgr backup <package>
→好,所以此操作绑定到应用程序。猜猜您是否知道数据提供者的程序包名称,它也应该可以正常工作(例如,用于系统设置的com.android.providers.settings或用于SMS / MMS的com.android.providers.telephony?)通过使用bmgr run命令
→第一个命令只是“计划”备份。触发了所有程序包后,就可以立即执行它们。

adb shell bmgr restore <package>
→这看起来很不错,对吧?正是由于以下原因:备份管理器将立即实例化应用程序的备份代理,并调用它进行还原。简而言之,bmgr可以用于触发支持已安装的Google Backup的应用程序的备份-并且可以触发相同的数据还原。它不能用于触发完全还原-至少这里没有记录。

评论


我知道这已经很老了,有人会因为对这样一个老问题发表评论而攻击我,但这是我无论用多大的力气都能找到的最相关的结果。我刚刚购买了一部新手机,但当设备设置启动时,它没有显示我的旧Nexus 5x作为要还原的设备,并且我知道在5x上启用了备份和还原。 5x已完全死亡,因此我无能为力。在执行bmgr列表集后,它会显示与设置过程中显示的设备完全相同的错误设备。任何建议将不胜感激。

– Soundfx4
17年8月7日在3:28



@ Soundfx4我可以建议您问一个单独的,专门的问题吗?欢迎在这里链接以供参考。由于我没有使用Google备份,因此无论如何我都无法为您提供帮助。

– Izzy♦
17年8月7日在6:57

谢谢,这是一个更好的主意。互联网永远不可能有足够的有用信息!有空的时候我会打一个。泰为答复!

– Soundfx4
17年8月9日在1:27

#3 楼

有关Google备份的更多信息。当我刷新自定义固件时,它没有按我的预期还原应用程序。在“设置”->“备份和重置”中,它显示“正在备份到仅调试专用缓存”,并且bmgr list sets没有给出结果。
我通过在adb shell中执行以下步骤解决了我的问题:$ bmgr transport com.google.android.backup/.BackupTransportService $ bmgr list sets 3a0a00a516a1daf1 : LT22i
还不够。它没有开始安装应用程序。这说明了原因:$ bmgr list sets 3179e4ab08d74930 : LT22i 3a0a00a516a1daf1 : LT22i
创建了一个新的集合,尽管IMEI显然是相同的。无论如何,这就是解决方法:$ bmgr restore 3a0a00a516a1daf1(它第一次显示的ID)$ bmgr run(确定)
然后它开始下载应用程序。

#4 楼

我的经验是每个设备都有自己的备份。我是从Nexus 7和Galaxy S II弄来的。除此之外,我不知道。

应用程序:

我的Nexus 7拥有这些应用程序,例如Caustic,DC Comics和20 Minute Meals,这些设备在出厂时重置了Galaxy S II。未安装在Galaxy S II上。

我的Galaxy S II具有这些应用DriveDroid和Human Japanese,这些应用会在Nexus 7上未安装我的Nexus 7出厂重置后。

这些应用程序与两台设备都兼容,因此不兼容不能成为未将其安装在相应另一台设备上的原因。
数据:

对于Wifi和其他不确定的数据,因为每次在初始android设置期间在每台设备上都设置了Wifi时。至于您可能拥有的其他Google帐户,它们似乎并未复制到每台设备,并且每台设备上的Skype和GitHub帐户也是如此。

评论


仅从备份中重新安装该设备上已安装的应用程序。例如。应用程序DriveDroid已安装在我的手机上,并且在恢复出厂设置后不会下载到Nexus 7。我在Nexus 7上安装了Caustic,但在其他应用程序中却没有在Galaxy S II上下载。

– Nalum
13年3月26日在19:44

谢谢-我已经将此与答案结合在一起。有很多争议性的报道:您是否愿意使用所用设备的Android版本来更新您的答案?提前致谢!为了使我们的转换更加混乱,我还将删除一些评论(对于已经集成到答案中的评论,也可以随意做)。

– Izzy♦
13年3月26日在21:46

现在就来了:如果没有任何东西可以交叉还原,那么如果其中一台设备“坏了”(或者您想用一台新设备替换两者)并且想要“合并”怎么办?猜猜我不是唯一缺少一本好手册的人...

– Izzy♦
13年3月29日在18:15

#5 楼

在擦除并在Nexus 4上安装了Carbon定制ROM之前,我同时使用内置的Google备份和Helium备份进行了备份(来自KitKat库存)。希望Google像以前还原手机时一样还原应用程序,设置等,但没有任何乐趣。

也尝试过氦气,即使使用手动“ PC下载”还原也没有乐趣-说“已恢复”,但Wifi和应用程序数据仍然不存在。

运行bmgr restore <xxx>完全还原和bmgr run(如上所述)触发了Google完整还原,并为您带来了一种享受-我的救生员!

Google可以做出更大的努力,特别是如果他们想与Apple的“正当工作”理念竞争时……尽管Android有陷阱,但我还是很喜欢Android的可破解性!