背景
谷歌在 Android M 上引入了一项不错的新功能,允许您备份和恢复应用程序,甚至使用 ADB,如本视频所示。
看来您所要做的就是使用adb shell bmgr
命令来备份和恢复应用程序,如下所示:
备份:
adb shell bmgr fullbackup PACKAGE_NAME
恢复应用程序:
adb shell bmgr restore PACKAGE_NAME
而且效果很好。
问题
这些文档处于新阶段,因此我无法找到有关此新工具的某些问题的答案。
我试过的
输入 时adb shell bmgr
,我得到了一些关于如何使用它的线索,但我找不到问题的答案。没有带有 Android M 的设备,而是一个模拟器,我想它的工作方式会有所不同。
这是键入此命令时所写的内容:
用法: bmgr [backup|restore|list|transport|run] bmgr backup PACKAGE bmgr enable BOOL bmgr enabled bmgr list transports bmgr list sets bmgr transport WHICH bmgr restore TOKEN bmgr restore TOKEN PACKAGE... bmgr restore PACKAGE bmgr run bmgr Wipe TRANSPORT PACKAGE bmgr 完整备份包...
'backup' 命令为指定的包安排备份通道。请注意,如果包实际上没有更改要存储的数据,则备份通道实际上是无操作的。
“启用”命令启用或禁用整个备份机制。如果参数为“真”,它将被启用,否则它将被禁用。禁用后,将不会执行备份或还原操作。
“启用”命令报告备份机制的当前启用/禁用状态。
“list transports”命令报告设备上当前可用的备份传输的名称。这些名称可以作为参数传递给“传输”和“擦除”命令。当前活动的传输用“*”字符表示。
“list sets”命令通过当前活动的传输报告设备可用的每个恢复集的令牌和名称。
“transport”命令将指定的传输指定为当前活动的传输。此设置在重新启动后保持不变。
'restore' 命令在仅给出恢复令牌时从当前活动的传输启动全系统恢复操作。它将由 TOKEN 参数指定的还原集交付给每个向该还原集贡献数据的应用程序。
当给定一个令牌和一个或多个包名称时,'restore' 命令会启动仅从 TOKEN 参数指定的恢复集中那些给定包的恢复操作。它实际上与仅提供令牌的“恢复”操作相同,但将过滤器应用于要恢复的应用程序集。
'restore' 命令在只给出一个包名称时根据 RestoreSession.restorePackage() 方法使用的恢复集选择算法启动一个包的恢复。
“运行”命令会立即启动任何计划的备份操作,而无需等待通常的等待时间来批量处理数据更改。
'wipe' 命令导致给定包的所有备份数据从给定传输的存储中删除。给定应用程序执行的下一个备份操作将重写其整个数据集。此处使用的传输名称是由“列表传输”报告的名称。
“fullbackup”命令为一个或多个包引入完整数据流备份。数据通过当前活动的传输方式发送。
问题
我有几个问题:
假设我通过设备本身调用这些命令,它们会起作用吗?如果没有,它们会在有根设备上工作吗?或者至少备份和恢复当前应用程序(应用程序 X 备份和恢复自身)?
备份存储在哪里?是否可以将它们存储到自定义路径中?甚至可能是 PC 之一?
是否可以将同一个应用程序备份到多个状态?例如,应用程序可以在登录时进行备份,并在配置某些设置时进行备份。这样,您可以还原到每个备份。
他们在上面的描述中写到“当前活跃的运输”。究竟是什么 ?可以定制吗?
是否可以在所有应用程序上运行备份/恢复?或者我应该把所有应用程序的包?
似乎“fullbackup”会立即进行备份。“运行”属性是做什么用的?或者也许这都是因为我使用了模拟器?