blob: ee95f010b5c45fe228b811538a6355bf2ce30f46 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
#!/bin/bash
if [ -e $HOME/bin/functions.sh ]
then
. $HOME/bin/functions.sh
else
exit 0
fi
## CONFIGURATION
ADB=adb
function help()
{
echo "Android data backup/restore"
echo "Usage:"
echo -e "\t [backup|restoredata|restoreapk] [device]"
exit 0
}
function _backup()
{
adb -s $DEVICE pull /data/system/packages.list .
cat packages.list | while read line
do
read name dir <<< $(echo $line | awk '{ print $1 " " $4 }')
#echo $dir
apk=$($ADB shell bash -c "ls /data/app/${name}* 2> /dev/null")
if [ -n $exists ]
then
echo $name $apk
else
echo LALALALALAAA $name
fi
echo ""
done
}
function _restoreapk() {
mkdir -p done skipped
apps=$(ls -1 | grep -c apk)
num=1
for i in *.apk
do
if [ $i = "done" -o $i = "skipped" ]
then
continue
fi
echo_green "Application $i ($num/$apps)"
name=$(echo $i | sed 's/-[0-9].apk//')
existing=$($ADB shell sh -c "ls /data/app*/${name}* 2> /dev/null")
echo $existing
if [ -n "$existing" ]
then
echo $i already installed
mv $i skipped
continue
fi
echo " Restore apk? [1|0] (default 1)"
echo -en " "
read inst
inst=${inst:=1}
if [ $inst -eq 1 ]
then
$ADB install $i
mv $i done
else
echo -e " Skipping...\n\n"
mv $i skipped
fi
let num=num+1
done
}
function _restoredata()
{
mkdir -p done skipped
apps=$(ls -l | grep -v skipped | grep -v done | grep -c '^d')
num=1
for i in *
do
if [ $i = "done" -o $i = "skipped" ]
then
continue
fi
echo_green "Application $i ($num/$apps)"
if [ $(adb shell ls -l /data/data | grep -c $i) -lt 1 ]
then
echo_red " not installed, skipping.\n\n"
mv $i skipped
continue
fi
echo " Restore data? [1|0] (default 0)"
echo -en " "
read inst
inst=${inst:=0}
if [ $inst -eq 1 ]
then
if [ $i = "com.android.providers.telephony" ]
then
echo -e "SMS/CALLS"
$ADB push $i/databases/mmssms.db /data/data/$i/databases
$ADB shell chmod 660 /data/data/$i/databases/mmssms.db
$ADB shell toolbox chown 1001:1001 /data/data/$i/databases/mmssms.db
$ADB shell killall system_server
mv $i done
else
own=$($ADB shell ls -l /data/data/ | grep $i | head -n 1 | awk '{ print $3}')
echo -e " User $own\n\n"
mute $ADB push $i /data/data/$i
mute $ADB shell chown $own:$own /data/data/$i/*
mute $ADB shell chown $own:$own /data/data/$i/*/*
mute $ADB shell chown $own:$own /data/data/$i/*/*/*
mv $i done
fi
else
echo -e " Skipping...\n\n"
mv $i skipped
fi
let num=num+1
done
}
case $1 in
backup)
_backup
;;
restoredata)
_restoredata
;;
restoreapk)
_restoreapk
;;
*)
help
exit 0
;;
esac
|