-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathbackuptool.sh
executable file
·121 lines (111 loc) · 2.42 KB
/
backuptool.sh
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
#!/sbin/sh
#
# Backup and restore proprietary Android system files
#
C=/cache
S=/system
get_files() {
cat <<EOF
app/BugReport.apk
app/CarDock.apk
app/com.amazon.mp3.apk
app/EnhancedGoogleSearchProvider.apk app/GoogleSearch.apk
app/Facebook.apk
app/GenieWidget.apk
app/Gmail.apk
app/GmailProvider.apk
app/GoogleApps.apk
app/GoogleBackupTransport.apk
app/GoogleCheckin.apk
app/GoogleContactsSyncAdapter.apk
app/GoogleGoggles.apk
app/GooglePartnerSetup.apk
app/GoogleSettingsProvider.apk
app/GoogleSubscribedFeedsProvider.apk
app/googlevoice.apk
app/gtalkservice.apk
app/HtcCopyright.apk
app/LatinImeTutorial.apk
app/Maps.apk
app/MarketUpdater.apk
app/MediaUploader.apk
app/NetworkLocation.apk
app/PassionQuickOffice.apk
app/SetupWizard.apk app/Provision.apk
app/Street.apk
app/Talk.apk
app/TalkProvider.apk
app/Vending.apk
app/VoiceSearchWithKeyboard.apk app/LatinIME.apk
app/YouTube.apk
etc/permissions/com.google.android.datamessaging.xml
etc/permissions/com.google.android.gtalkservice.xml
etc/permissions/com.google.android.maps.xml
framework/com.google.android.gtalkservice.jar
framework/com.google.android.maps.jar
lib/libgtalk_jni.so
lib/libinterstitial.so
EOF
}
backup_file() {
if [ ! -e "$C/google" ];
then
mkdir -p $C/google;
fi
if [ -e "$1" ];
then
if [ -n "$2" ];
then
echo "$2 $1" | md5sum -c -
if [ $? -ne 0 ];
then
echo "MD5Sum check for $1 failed!";
exit $?;
fi
fi
local F=`basename $1`
# dont backup any apps that have odex files, they are useless
if ( echo $F | grep -q "\.apk$" ) && [ -e `echo $1 | sed -e 's/\.apk$/\.odex/'` ];
then
echo "Skipping odexed apk $1";
else
cp $1 $C/google/$F
fi
fi
}
restore_file() {
local FILE=`basename $1`
local DIR=`dirname $1`
if [ -e "$C/google/$FILE" ];
then
if [ ! -d "$DIR" ];
then
mkdir -p $DIR;
fi
cp -p $C/google/$FILE $1;
if [ -n "$2" ];
then
rm $2;
fi
fi
}
case "$1" in
backup)
mount $S
mount $C
get_files | while read FILE REPLACEMENT; do
backup_file $S/$FILE
done
;;
restore)
get_files | while read FILE REPLACEMENT; do
R=""
[ -n "$REPLACEMENT" ] && R="$S/$REPLACEMENT"
restore_file $S/$FILE $R
done
;;
*)
echo "Usage: $0 {backup|restore}"
exit 1
esac
exit 0