Google备份:使用同一个帐户的多个设备-恢复时会发生什么?


54

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

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

有关详细信息,请参见Google信息中心。这里涉及这些问题的相关问题包括:

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

使用同一帐户备份了来自多个设备的数据:

  • 以这种方式使用出厂重置的设备会发生什么情况?它会被识别吗,并且仅恢复以前使用过的那些东西?
    (设备识别可以例如通过IMEI进行(但不能通过Android_ID进行,因为恢复出厂设置可能会消失)-这可能是Nalum回答中所述行为的原因)
  • 使用此Google帐户首次初始化的设备(新的/恢复出厂设置)将恢复什么?
    (如果在使用的Google帐户中可以通过备份来标识设备,则可能会触发“新设备”的特殊操作,例如“全部还原,设备已更改!”或“从不再连接的设备X还原全部,如它可能已被替换!”,但坚持“仅恢复该设备上的内容”(如果恢复出厂设置)

解决的办法是:如果一个人有多个设备,它们通常用于特定的问题,那么就不要在所有设备上都拥有所有东西。正如我所见,没有办法选择要备份的数据(例如,我们已警告过要排除那些“敏感数据”:WiFi密码将属于该类别),我想在还原上也没有选择吗?那么如何处理呢?


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

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

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


@流是的。而且答案看起来非常熟悉:)
Izzy

Answers:


42

宝贝,让我们谈谈布景

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

默认行为

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

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

出厂重置设备后,如果有一个设备,它将从该设备的上次备份还原;如果有一个设备,它将从其他设备的备份中恢复,但此后它将开始创建自己的备份集。这就是为什么Nalum的两台设备看不到彼此备份的应用程序的原因:它们各自都从自己的上次备份中恢复。

资源

该机制没有任何面向用户的文档,因为它可以自动执行正确的操作,但是代码可用

bmgr:基本用途

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

除了以身份使用外,不要尝试在设备上的外壳程序中使用它:您需要系统级的功能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的代号;TF-101是指原始的。确定要使用的集合后,可以使用其令牌从该集合还原应用程序:

bmgr restore 3ff7800e963f25c5 com.shadowburst.showr

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

最后,您可以清除当前集中的应用数据:

bmgr wipe com.shadowburst.showr

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

您无法使设备开始写入另一套设备,也无法擦除整个设备。


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

7

以下是迄今为止对该问题的答案,但可能无法阐明某些细节:

备份API中提取的一些片段

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

  • 当您安装了应用程序并且存在与用户相关联的备份数据时,Android会自动执行还原操作。
    →这可能意味着两件事:
    • 如果应用程序支持Google Backup API,并且用户启用了Google Backup,则可用的备份数据将在安装时自动还原。第一次将单个设备上使用的应用程序安装到第二个设备上时,这是一件好事。
    • 备份仅与Google帐户相关联,而不与设备相关联并且存在与用户相关联的备份数据),或者另一个事实被忽略,因为与这种特殊情况无关(“已安装应用程序”)
  • 备份传输是Android备份框架的客户端组件,可以由设备制造商和服务提供商自定义。该备份传输可能会有所不同,从设备到设备 [...]
    →当它涉及到不同的设备(或不同的Android版本),这可能解释不可靠。
    (强调我的)
  • 不能保证所有Android设备上都可以进行数据备份。
    (没有意见)
  • Google为大多数运行Android 2.2或更高版本的Android设备提供了带有Android备份服务的备份传输。
    →在这里,我们提供了Google备份所需的最低Android版本:Froyo,AKA Android 2.2
  • 要获取您的备份服务密钥,请注册Android备份服务。[...]
    →每个应用程序必须具有自己的密钥。没有描述“为什么”,但是有一个很好的猜测:隔离备份,使任何应用程序都无法读取另一个应用程序的备份(密钥;对于另一个用户的备份:错误的帐户)
  • 在开发应用程序时,可以使用bmgr工具从备份管理器启动立即备份操作。
    →好像有一种方法可以手动触发备份?让我们稍后再探讨。↓
  • 当需要还原应用程序数据时,备份管理器将调用备份代理的onRestore()方法。
    →这再次强调了此列表的第一项:首先必须安装该应用程序,然后使用其自己的实现来还原其数据。再看一看:如果应用程序还原失败,则不会为失败的应用程序进行数据还原-除非您通过Google Play手动安装它们。然后,如第一项所示,应在说明的情况下通过Google备份自动还原数据(必须已使用该数据,相同的帐户等进行了备份)。
  • 备份其他文件
    →请原谅我没有引用该章的(技术)内容,而是总而言之:只能根据其备份内部存储器中的文件。

bmgr API中提取的一些片段

  • 它提供了引发备份和还原操作的命令,这
    似乎是一种在“自动”失败时如何手动触发操作的方法。
  • 这些命令可通过adb shell访问。
    →这不需要任何解释:)
  • adb shell bmgr backup <package>
    →确定,因此此操作绑定到应用程序。猜猜您是否知道数据提供者的程序包名称,它应该也可以正常工作(例如,com.android.providers.settings用于系统设置或com.android.providers.telephonySMS / MMS等)?
  • 您可以使用bmgr run命令
    →第一个命令“计划”备份来强制所有未决的备份操作立即运行。触发了所有软件包后,就可以立即执行它们。
  • adb shell bmgr restore <package>
    →看起来不错,对吗?正是由于以下原因:备份管理器将立即实例化应用程序的备份代理,并调用它进行还原。仅用于数据,因为应用程序已经需要存在(因为其例程被调用)。

简而言之:bmgr可用于触发支持已安装的Google Backup的应用程序的备份-并且可以触发数据还原。它不能用于触发完全还原-至少此处没有记录。


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

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

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

6

有关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(可以肯定),
然后它开始下载应用程序。


3

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

应用:

我的Nexus 7拥有这些应用程序CausticDC Comics20 Minute Meals,而在Galaxy S II上未安装我的Galaxy S II出厂重置时。

我的Galaxy S II具有这些应用DriveDroidHuman Japanese,这些应用在Nexus 7上未安装我的Nexus 7出厂重置时。

这些应用程序与这两种设备都兼容,因此不兼容不能成为未将其安装在相应其他设备上的原因。

数据:

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


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

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

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

1

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

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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.