为了账号安全,请及时绑定邮箱和手机立即绑定

如何通过MIUI备份功能实现不同手机之间应用数据迁移?

标签:
杂七杂八

场景

换了手机之后,把旧手机的联系人、通话记录等数据迁移到新手机上

思路

1. 使用新手机和旧手机分别备份通话记录,不同手机备份文件所在位置可能不一样,一般在MIUI/backup/AllBackup/yyyyMMdd_HHmmss类似的目录下,把文件分别复制到new目录和old目录下
2. 读取旧备份文件的'apps'前的字节,读取新备份文件'apps'前的字节
3. 将旧备份文件'apps'前的字节替换为新备份文件'apps'前的字节
4. 保存生成新的备份文件

代码实现

import shutil

# 读取指定字符串前的字节,并转换为16进制展示
def read_file_before_string(file_path, string):
    with open(file_path, 'rb') as file:
        data = file.read()
        index = data.find(string.encode())  # 查找特定字符串的位置
        if index != -1:
            data = data[:index]  # 截取特定字符串之前的数据
    return data.hex()  # 转换为十六进制形式

# 读取原备份文件,替换指定字节后并保存为新的备份文件
def replace_and_save(file_path, string, new_content, new_file_path):
    with open(file_path, 'rb') as file:
        data = file.read()
        index = data.find(string.encode())  # 查找特定字符串的位置
        if index != -1:
            new_data = new_content + data[index:]  # 替换内容
            with open(new_file_path, 'wb') as new_file:
                new_file.write(new_data)  # 写入新文件

# 复制文件
def copy_file(source_file, destination_dir):
    shutil.copy2(source_file, destination_dir)


old_bak_file_path=r'D:\miui\old\通话记录(com.android.contacts).bak' # 旧手机的备份文件路径
new_bak_file_path=r'D:\miui\new\通话记录(com.android.contacts).bak' # 新手机的备份文件路径
string='apps'  # 请勿更改
new_content=bytes.fromhex(read_file_before_string(new_bak_file_path,string))  # 读取新备份文件的miui头字节
output_bak_file_path=r'D:\miui\output\通话记录(com.android.contacts).bak'  # 最终生成的适配新手机的备份文件
replace_and_save(old_bak_file_path, string, new_content, output_bak_file_path)

# 复制新手机备份中的descript.xml到out目录
new_descript_file_path=r'D:\miui\new\descript.xml'
destination_dir=r'D:\miui\output'
copy_file(new_descript_file_path,destination_dir)

执行之后,重要提示:恢复的APP会覆盖当前已经安装的APP的数据,请恢复前再次备份!!!`**

  • 把out目录下即可拿到适配新手机的两个文件descript.xml通话记录(com.android.contacts).bak复制到手机
  • 把新手机备份MIUI/backup/AllBackup/yyyyMMdd_HHmmss的文件,替换为生成的文件
  • 回到数据恢复界面
  • 点击恢复即可

总结

  • 适合单应用的数据恢复
  • 适合旧手机向旧手机或旧手机向新手机进行数据迁移
  • 不适合微、qq,miui备份时做了处理
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消