Android 12 下如何原子性备份加密的 /data 分区?

12次阅读
没有评论

由于升级到 Android 12 时遇到的问题,使得 TWRP 变得无法解密 /data 分区。为了继续使用 borgbackup 在 TWRP 中对 /data 进行备份,我们需要一个替代方案来满足以下条件:

  • 解密的 /data 分区
  • 不包含任何正在修改 /data 的活动进程(最好使其只读)
  • 有 shell 访问权限
  • 拥有一个可写入的根文件系统,以便可以创建子目录并挂载 tmpfs 文件系统

方案一:使用 TWRP 系统更新 3.7.0 及以上版本进行加密分区支持

  1. 升级 TWRP
  2. 升级到 TWRP 版本 3.7.0 或更高。从 TWRP 官网 可以下载最新的更新补丁。
  3. 使用 USB 数据线将手机连接到电脑,并按照 TWRP 指导的步骤进行固件刷写。

方案二:部分关机进入恢复模式(recovery runlevel)

  1. 尝试进入恢复模式
  2. 通过长按电源按钮和音量减小键的方式来启动设备,看是否能够直接进入恢复模式。如果上述方法不成功,则可以手动触发:
    sh
    adb shell su -c "svc power partial-restart"
  3. 这应该会将设备部分关机到一个类似于 TWRP 的状态。

  4. 挂载只读 /data 分区

  5. 进入恢复模式后,尝试将 /data 卷以只读方式挂载:
    sh
    mount -o remount,ro /dev/block/mmcblk0p29 /data

  6. 确认成功

  7. 执行成功后,检查是否有对 mount: '/dev/block/mmcblk0p29'->'/data': Device or resource busy 的错误出现。如果未发生资源繁忙的错误,则说明 /data 已经成功挂载为只读。

方案三:使用第三方备份应用

  1. 下载并安装 Balti Migrate
  2. 通过以下链接或在 Play 商店中找到相关软件,以确保设备满足兼容性要求:
    https://play.google.com/store/apps/details?id=balti.migrate
  3. 安装完应用后,参考官方文档或教程进行数据备份操作。

  4. 验证是否为原子备份

  5. 核查 Balti Migrate 的实际工作方法及机制。可以尝试在不同设备上使用该工具,确定其能否满足所有要求条件之一。

  6. 挂载 tmpfs 文件系统并开始备份
    sh
    mount -o remount,rw /data /mnt/data_backup
    mount -t tmpfs tmpfs /mnt/tmpfs
    cp -R /mnt/data_backup/* /mnt/tmpfs/

通过上述手段,用户理论上能实现针对当前特殊配置环境下的有效数据备份行为。需要注意的是,在不同硬件和软件组合下可能需要进行相应地调整。

正文完