一、前言:钛备份绝对是个神器,对其备份恢复机制一直很好奇,毫无疑问是通过shell用tar来备份的,但是用xposed hook了runtime也没办法看到钛备份是怎么实现备份恢复,猜测应该是在so里运行的,又尝试通过super user来log,也失败了。后来灵机一动,直接把它的bin(busybox)替换了:
1、/data/data/com.keramidas.TitaniumBackup/files/busybox:
echo $@ >> /sdcard/taibeifen.txt
/data/data/com.keramidas.TitaniumBackup/files/busybox_ $@
2、/data/data/com.keramidas.TitaniumBackup/files/busybox_ == 原busybox
果断被自己机智倒了。
二、分析:
1、备份
#先kill要备份应用
killall -s STOP roviminteractive.materialcopy
#计算空间大小(钛备份有个备份data大小的限制过滤)
du -H -s /storage/emulated/0/Android/data/roviminteractive.materialcopy
#把sdcard下的data软连接过来
ln -s /storage/emulated/0/Android/data/roviminteractive.materialcopy /data/data/.external.roviminteractive.materialcopy
#用tar备份,排除了lib和cache
tar -c /data/data/roviminteractive.materialcopy/. /data/data/.external.roviminteractive.materialcopy/. --exclude data/data/roviminteractive.materialcopy/./lib --exclude data/data/roviminteractive.materialcopy/./cache
#我选了gzip压缩
gzip
#删除sdcard的data软连接
rm /data/data/.external.roviminteractive.materialcopy
#剩下的应该是保存备份信息还有改备份文件的权限
killall -s CONT roviminteractive.materialcopy
ls --color=never -d /data/app/roviminteractive.materialcopy-1/base.apk
ls --color=never /data/data/com.android.vending/databases/
chown media_rw:media_rw /data/media/0/TitaniumBackup/roviminteractive.materialcopy-20171004-052037.tar.gz
2、恢复(已安装的程序)
#这两个命令合起来看,是把压缩文件解包
cat /storage/emulated/0/TitaniumBackup/roviminteractive.materialcopy-95a8661943db9acfcceb83f5f44cd286.apk.bz2
bunzip2
#改权限,应该有个安装应用的命令,pm没有替换,有的话应该能看到
chmod 755 /data/local/tmp/com.keramidas.TitaniumBackup-install.apk
#删除应用
rm /data/local/tmp/com.keramidas.TitaniumBackup-install.apk
#将原来应用的data移动下
mv /data/data/roviminteractive.materialcopy /data/data/.roviminteractive.materialcopy
#删除sdcard下的data并链接过来
rm -R /storage/emulated/0/Android/data/roviminteractive.materialcopy
ln -s /storage/emulated/0/Android/data/roviminteractive.materialcopy /data/data/.external.roviminteractive.materialcopy
#解包数据,排除lib
gunzip
cat /storage/emulated/0/TitaniumBackup/roviminteractive.materialcopy-20171004-052037.tar.gz
tar -C / -x --exclude data/data/roviminteractive.materialcopy/lib --exclude data/data/roviminteractive.materialcopy/./lib
#删除sdcard的data链接
rm /data/data/.external.roviminteractive.materialcopy
#改用户组
chown -R media_rw:media_rw /data/media/0/Android/data/roviminteractive.materialcopy
chown -hR 10118:10118 /data/data/roviminteractive.materialcopy
#改权限
chmod -R u+rwx /data/data/roviminteractive.materialcopy
#将原应用的lib移到新恢复应用的data目录下
mv /data/data/.roviminteractive.materialcopy/lib /data/data/roviminteractive.materialcopy
#删除原应用的data
rm -R /data/data/.roviminteractive.materialcopy
3、恢复(已安装应用)略
三、tasker备份恢复应用可行性
毫无疑问,tasker肯定能做到啦,过程都列出来了,不过我还没试,先放出来了,大家可以去做,做好发q群
1、/data/data/com.keramidas.TitaniumBackup/files/busybox:
echo $@ >> /sdcard/taibeifen.txt
/data/data/com.keramidas.TitaniumBackup/files/busybox_ $@
2、/data/data/com.keramidas.TitaniumBackup/files/busybox_ == 原busybox

二、分析:
1、备份
#先kill要备份应用
killall -s STOP roviminteractive.materialcopy
#计算空间大小(钛备份有个备份data大小的限制过滤)
du -H -s /storage/emulated/0/Android/data/roviminteractive.materialcopy
#把sdcard下的data软连接过来
ln -s /storage/emulated/0/Android/data/roviminteractive.materialcopy /data/data/.external.roviminteractive.materialcopy
#用tar备份,排除了lib和cache
tar -c /data/data/roviminteractive.materialcopy/. /data/data/.external.roviminteractive.materialcopy/. --exclude data/data/roviminteractive.materialcopy/./lib --exclude data/data/roviminteractive.materialcopy/./cache
#我选了gzip压缩
gzip
#删除sdcard的data软连接
rm /data/data/.external.roviminteractive.materialcopy
#剩下的应该是保存备份信息还有改备份文件的权限
killall -s CONT roviminteractive.materialcopy
ls --color=never -d /data/app/roviminteractive.materialcopy-1/base.apk
ls --color=never /data/data/com.android.vending/databases/
chown media_rw:media_rw /data/media/0/TitaniumBackup/roviminteractive.materialcopy-20171004-052037.tar.gz
2、恢复(已安装的程序)
#这两个命令合起来看,是把压缩文件解包
cat /storage/emulated/0/TitaniumBackup/roviminteractive.materialcopy-95a8661943db9acfcceb83f5f44cd286.apk.bz2
bunzip2
#改权限,应该有个安装应用的命令,pm没有替换,有的话应该能看到
chmod 755 /data/local/tmp/com.keramidas.TitaniumBackup-install.apk
#删除应用
rm /data/local/tmp/com.keramidas.TitaniumBackup-install.apk
#将原来应用的data移动下
mv /data/data/roviminteractive.materialcopy /data/data/.roviminteractive.materialcopy
#删除sdcard下的data并链接过来
rm -R /storage/emulated/0/Android/data/roviminteractive.materialcopy
ln -s /storage/emulated/0/Android/data/roviminteractive.materialcopy /data/data/.external.roviminteractive.materialcopy
#解包数据,排除lib
gunzip
cat /storage/emulated/0/TitaniumBackup/roviminteractive.materialcopy-20171004-052037.tar.gz
tar -C / -x --exclude data/data/roviminteractive.materialcopy/lib --exclude data/data/roviminteractive.materialcopy/./lib
#删除sdcard的data链接
rm /data/data/.external.roviminteractive.materialcopy
#改用户组
chown -R media_rw:media_rw /data/media/0/Android/data/roviminteractive.materialcopy
chown -hR 10118:10118 /data/data/roviminteractive.materialcopy
#改权限
chmod -R u+rwx /data/data/roviminteractive.materialcopy
#将原应用的lib移到新恢复应用的data目录下
mv /data/data/.roviminteractive.materialcopy/lib /data/data/roviminteractive.materialcopy
#删除原应用的data
rm -R /data/data/.roviminteractive.materialcopy
3、恢复(已安装应用)略
三、tasker备份恢复应用可行性
毫无疑问,tasker肯定能做到啦,过程都列出来了,不过我还没试,先放出来了,大家可以去做,做好发q群
